mirror of
https://github.com/UOX3DevTeam/UOX3
synced 2026-08-13 12:27:04 -04:00
Updated onSkillGain, onSkillLoss and onSkillChange JS events
Updated onSkillGain, onSkillLoss and onSkillChange JS events: Additional parameters now supported by events - skillGainAmount and skillLossAmount onSkillGain( player, skillID, skillGainAmount ) // skillGainAmount is always positive onSkillLoss( player, skillID, skillLossAmount ) // skillLossAmount is always positive onSkillChange( player, skillID, skillChangeAmount ) // skillChangeAmount can be negative or positive The return value from onSkillGain and onSkillLoss events can now be used to control behavior: return true - skill gain/loss is allowed, and server will go through with the skill update return false - skill gain/loss is not allowed, and server will prevent the skill update, but will not block additional scripts with same event from running onSkillChange will now run as long as onSkillGain or onSkillLoss events return true, and if those events are not defined Updated JS Docs
This commit is contained in:
parent
bfb7763296
commit
f33e37ac06
6 changed files with 162 additions and 64 deletions
|
|
@ -748,27 +748,32 @@ bool cScript::OnDefense( CChar *attacker, CChar *defender )
|
|||
}
|
||||
|
||||
//o-----------------------------------------------------------------------------------------------o
|
||||
//| Function - bool OnSkillGain( CChar *player, SI08 skill )
|
||||
//| Function - SI08 OnSkillGain( CChar *player, SI08 skill, UI32 skillGainAmount )
|
||||
//o-----------------------------------------------------------------------------------------------o
|
||||
//| Purpose - Triggers for character with event attached when gaining skillpoints
|
||||
//o-----------------------------------------------------------------------------------------------o
|
||||
bool cScript::OnSkillGain( CChar *player, SI08 skill )
|
||||
SI08 cScript::OnSkillGain( CChar *player, SI08 skill, UI32 skillGainAmount )
|
||||
{
|
||||
if( !ValidateObject( player ) )
|
||||
return false;
|
||||
const SI08 RV_NOFUNC = -1;
|
||||
if( !ValidateObject( player ))
|
||||
return RV_NOFUNC;
|
||||
if( !ExistAndVerify( seOnSkillGain, "onSkillGain" ) )
|
||||
return false;
|
||||
return RV_NOFUNC;
|
||||
|
||||
jsval params[2], rval;
|
||||
jsval params[3], rval;
|
||||
JSObject *charObj = JSEngine->AcquireObject( IUE_CHAR, player, runTime );
|
||||
|
||||
params[0] = OBJECT_TO_JSVAL( charObj );
|
||||
params[1] = INT_TO_JSVAL( skill );
|
||||
JSBool retVal = JS_CallFunctionName( targContext, targObject, "onSkillGain", 2, params, &rval );
|
||||
params[2] = INT_TO_JSVAL( skillGainAmount );
|
||||
JSBool retVal = JS_CallFunctionName( targContext, targObject, "onSkillGain", 3, params, &rval );
|
||||
if( retVal == JS_FALSE )
|
||||
{
|
||||
SetEventExists( seOnSkillGain, false );
|
||||
return RV_NOFUNC;
|
||||
}
|
||||
|
||||
return ( retVal == JS_TRUE );
|
||||
return TryParseJSVal( rval );
|
||||
}
|
||||
|
||||
//o-----------------------------------------------------------------------------------------------o
|
||||
|
|
@ -1738,45 +1743,51 @@ bool cScript::OnStatChange( CChar *player, UI32 stat )
|
|||
}
|
||||
|
||||
//o-----------------------------------------------------------------------------------------------o
|
||||
//| Function - bool OnSkillLoss( CChar *player, SI08 skill )
|
||||
//| Function - SI08 OnSkillLoss( CChar *player, SI08 skill, UI32 skillLossAmount )
|
||||
//o-----------------------------------------------------------------------------------------------o
|
||||
//| Purpose - Triggers for characters with event attached when losing skillpoints
|
||||
//o-----------------------------------------------------------------------------------------------o
|
||||
bool cScript::OnSkillLoss( CChar *player, SI08 skill )
|
||||
SI08 cScript::OnSkillLoss( CChar *player, SI08 skill, UI32 skillLossAmount )
|
||||
{
|
||||
if( !ValidateObject( player ) )
|
||||
return false;
|
||||
const SI08 RV_NOFUNC = -1;
|
||||
if( !ValidateObject( player ))
|
||||
return RV_NOFUNC;
|
||||
if( !ExistAndVerify( seOnSkillLoss, "onSkillLoss" ) )
|
||||
return false;
|
||||
return RV_NOFUNC;
|
||||
|
||||
jsval params[2], rval;
|
||||
jsval params[3], rval;
|
||||
JSObject *charObj = JSEngine->AcquireObject( IUE_CHAR, player, runTime );
|
||||
params[0] = OBJECT_TO_JSVAL( charObj );
|
||||
params[1] = INT_TO_JSVAL( skill );
|
||||
JSBool retVal = JS_CallFunctionName( targContext, targObject, "onSkillLoss", 2, params, &rval );
|
||||
params[2] = INT_TO_JSVAL( skillLossAmount );
|
||||
JSBool retVal = JS_CallFunctionName( targContext, targObject, "onSkillLoss", 3, params, &rval );
|
||||
if( retVal == JS_FALSE )
|
||||
{
|
||||
SetEventExists( seOnSkillLoss, false );
|
||||
return RV_NOFUNC;
|
||||
}
|
||||
|
||||
return ( retVal == JS_TRUE );
|
||||
return TryParseJSVal( rval );
|
||||
}
|
||||
|
||||
//o-----------------------------------------------------------------------------------------------o
|
||||
//| Function - bool OnSkillChange( CChar *player, SI08 skill )
|
||||
//| Function - bool OnSkillChange( CChar *player, SI08 skill, SI32 skillChangeAmount )
|
||||
//o-----------------------------------------------------------------------------------------------o
|
||||
//| Purpose - Triggers for characters with event attached when skillpoints change
|
||||
//o-----------------------------------------------------------------------------------------------o
|
||||
bool cScript::OnSkillChange( CChar *player, SI08 skill )
|
||||
bool cScript::OnSkillChange( CChar *player, SI08 skill, SI32 skillChangeAmount )
|
||||
{
|
||||
if( !ValidateObject( player ) )
|
||||
return false;
|
||||
if( !ExistAndVerify( seOnSkillChange, "onSkillChange" ) )
|
||||
return false;
|
||||
|
||||
jsval params[2], rval;
|
||||
jsval params[3], rval;
|
||||
JSObject *charObj = JSEngine->AcquireObject( IUE_CHAR, player, runTime );
|
||||
params[0] = OBJECT_TO_JSVAL( charObj );
|
||||
params[1] = INT_TO_JSVAL( skill );
|
||||
JSBool retVal = JS_CallFunctionName( targContext, targObject, "onSkillChange", 2, params, &rval );
|
||||
params[2] = INT_TO_JSVAL( skillChangeAmount );
|
||||
JSBool retVal = JS_CallFunctionName( targContext, targObject, "onSkillChange", 3, params, &rval );
|
||||
if( retVal == JS_FALSE )
|
||||
SetEventExists( seOnSkillChange, false );
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue