Files
dsrc/sku.0/sys.server/compiled/game/script/gm/handler.script
T

352 lines
9.4 KiB
Plaintext

/***** INCLUDES ********************************************************/
include library.gm;
include library.sui;
include library.utils;
include library.pclib;
include library.hue;
include library.money;
/***** CONSTANTS *******************************************************/
/***** TRIGGER *********************************************************/
trigger OnInitialize()
{
detachScript(self, gm.SCRIPT_HANDLER);
return SCRIPT_CONTINUE;
}
/***** MESSAGEHANDLERS **************************************************/
/***** WIPE ITEMS **************************************************/
messageHandler confirmWipeItems()
{
gm.decrementMessageCount(self);
int bp = sui.getIntButtonPressed(params);
if ( bp == sui.BP_CANCEL )
return SCRIPT_CONTINUE;
obj_id target = utils.getObjIdScriptVar(self, gm.SCRIPTVAR_WIPEITEMS_TARGET);
utils.removeScriptVar(self, gm.SCRIPTVAR_WIPEITEMS_PID);
utils.removeScriptVar(self, gm.SCRIPTVAR_WIPEITEMS_TARGET);
if ( !isIdValid(target) )
{
sendSystemMessageTestingOnly(self, "/wipeItems: unable to confirm a valid target!");
return SCRIPT_CONTINUE;
}
sendSystemMessageTestingOnly(self, "/wipeItems: wiping items from (" + target + ")" + utils.getStringName(target));
pclib.destroyPlayerEquipment(target);
pclib.destroyPlayerInventory(target);
pclib.destroyPlayerBank(target);
return SCRIPT_CONTINUE;
}
/***** HUE OBJECT **************************************************/
messageHandler handleHueVarUI()
{
gm.decrementMessageCount(self);
int bp = sui.getIntButtonPressed(params);
if ( bp == sui.BP_CANCEL )
return SCRIPT_CONTINUE;
obj_id target = utils.getObjIdScriptVar(self, gm.SCRIPTVAR_SETHUE_TARGET);
string[] dta = utils.getStringArrayScriptVar(self, gm.SCRIPTVAR_SETHUE_DATA);
gm.cleanupSetHueScriptVars(self);
int selrow = sui.getListboxSelectedRow(params);
if ( selrow == -1 )
return SCRIPT_CONTINUE;
if ( !isIdValid(target) )
{
sendSystemMessageTestingOnly(self, "/setHue: unable to confirm a valid target!");
return SCRIPT_CONTINUE;
}
if ( dta == null || dta.length == 0 )
{
sendSystemMessageTestingOnly(self, "/setHue: unable to confirm valid data!");
return SCRIPT_CONTINUE;
}
string toPass = "-target " + dta[selrow].substring(dta[selrow].length() - 1);
queueCommand(self, ##"setHue", target, toPass, COMMAND_PRIORITY_DEFAULT);
return SCRIPT_CONTINUE;
}
messageHandler handleHueColorUI()
{
gm.decrementMessageCount(self);
int bp = sui.getIntButtonPressed(params);
if ( bp == sui.BP_CANCEL )
return SCRIPT_CONTINUE;
obj_id target = utils.getObjIdScriptVar(self, gm.SCRIPTVAR_SETHUE_TARGET);
string varPath = utils.getStringScriptVar(self, gm.SCRIPTVAR_SETHUE_DATA);
gm.cleanupSetHueScriptVars(self);
int idx = sui.getColorPickerIndex(params);
if ( idx > -1 )
{
hue.setColor(target, varPath, idx);
}
return SCRIPT_CONTINUE;
}
/***** FACTION **************************************************/
messageHandler cleanupShowFaction()
{
utils.removeScriptVar(self, gm.SCRIPTVAR_SHOWFACTION_PID);
gm.decrementMessageCount(self);
return SCRIPT_CONTINUE;
}
/***** MONEY **************************************************/
messageHandler cleanupMoneyStatus()
{
utils.removeScriptVar(self, gm.SCRIPTVAR_MONEY_PID);
gm.decrementMessageCount(self);
return SCRIPT_CONTINUE;
}
messageHandler handleMoneyPass()
{
obj_id player = params.getObjId(money.DICT_PLAYER_ID);
if ( !isIdValid(player) )
{
gm.decrementMessageCount(self);
return SCRIPT_CONTINUE;
}
int nextAction = params.getInt("nextAction");
if ( nextAction == gm.MA_NONE )
{
sendSystemMessageTestingOnly(self, "[CREDITS] Transaction request for (" + player + ")" + utils.getStringName(player) + " completed.");
queueCommand(self, ##"credits", player, "-target balance", COMMAND_PRIORITY_DEFAULT);
gm.decrementMessageCount(self);
return SCRIPT_CONTINUE;
}
else
{
params.remove("nextAction");
int amt = params.getInt(money.DICT_AMOUNT);
switch ( nextAction )
{
case gm.MA_WITHDRAW:
withdrawCashFromBank(player, amt, gm.HANDLER_MONEY_PASS, gm.HANDLER_MONEY_FAIL, params);
break;
case gm.MA_TO_ACCT:
transferBankCreditsToNamedAccount(player, money.ACCT_CUSTOMER_SERVICE, amt, gm.HANDLER_MONEY_PASS, gm.HANDLER_MONEY_FAIL, params);
break;
}
}
return SCRIPT_CONTINUE;
}
messageHandler handleMoneyFail()
{
gm.decrementMessageCount(self);
obj_id player = params.getObjId(money.DICT_PLAYER_ID);
if ( !isIdValid(player) )
return SCRIPT_CONTINUE;
sendSystemMessageTestingOnly(self, "[CREDITS] Transaction request for (" + player + ") " + utils.getStringName(player) + " FAILED!");
return SCRIPT_CONTINUE;
}
/***** SEARCH CORPSE **************************************************/
messageHandler handleSearchCorpseSui()
{
gm.decrementMessageCount(self);
obj_id target = utils.getObjIdScriptVar(self, gm.SCRIPTVAR_SEARCHCORPSE_TARGET);
utils.removeScriptVar(self, gm.SCRIPTVAR_SEARCHCORPSE_TARGET);
utils.removeScriptVar(self, gm.SCRIPTVAR_SEARCHCORPSE_PID);
if ( !isIdValid(target) )
{
sendSystemMessageTestingOnly(self, "/searchCorpse: your target(" + target+ ") is not invalid!");
return SCRIPT_CONTINUE;
}
int bp = sui.getIntButtonPressed(params);
if ( bp == sui.BP_CANCEL )
return SCRIPT_CONTINUE;
int idx = sui.getListboxSelectedRow(params);
if ( idx == -1 )
return SCRIPT_CONTINUE;
obj_id[] corpses = utils.getObjIdBatchObjVar(target, pclib.VAR_CORPSE_ID);
if ( corpses == null || corpses.length == 0 )
{
removeObjVar(target, pclib.VAR_CORPSE_BASE);
sendSystemMessageTestingOnly(self, "/searchCorpse: (" + target + ") " + utils.getStringName(target) + " has no corpse history!");
return SCRIPT_CONTINUE;
}
obj_id corpseId = corpses[idx];
if ( !isIdValid(corpseId) )
{
sendSystemMessageTestingOnly(self, "/searchCorpse: the selected index does not contain a valid corpse!");
return SCRIPT_CONTINUE;
}
if ( !exists(corpseId) || !corpseId.isLoaded() )
{
sendSystemMessageTestingOnly(self, "/searchCorpse: the selected corpse either doesn't exist or is not loaded");
return SCRIPT_CONTINUE;
}
obj_id wp = createWaypointInDatapad(self, corpseId);
if ( isIdValid(wp) )
{
sendSystemMessageTestingOnly(self, "/searchCorpse: a waypoint to the selected corpse is now in your datapad!");
setName(wp, "searchCorpse="+corpseId);
}
else
{
sendSystemMessageTestingOnly(self, "/searchCorpse: the system was unable to create a waypoint for you to the selected corpse!");
}
return SCRIPT_CONTINUE;
}
/***** PLAYER STATE *******************************************************/
messageHandler handleSetPlayerStateUI()
{
int idx = sui.getListboxSelectedRow(params);
obj_id player = sui.getPlayerId(params);
int btn = sui.getIntButtonPressed(params);
if ( btn == sui.BP_OK && idx > -1 )
{
if (exists(player))
{
if (utils.hasScriptVar(player, "setPlayerStateGM.pid"))
{
string stateName = gm.PLAYER_STATE_NAMES[idx];
string newState = null;
int curState = getState(player, idx);
if (curState == 0)
{
setState(player, idx, true);
newState = "*** ON ***";
}
else
{
setState(player, idx, false);
newState = "*** OFF ***";
}
string setStateMsg = "Set " + stateName + " state " + newState;
sendSystemMessageTestingOnly(self, setStateMsg);
CustomerServiceLog("player_state", getFirstName(self) + " (" + self + ") set the '" + stateName + "' state to " + newState + " for player "+ getFirstName(player) + " (" + player + ")");
gm.showSetPlayerStateUI(player);
}
}
}
gm.decrementMessageCount(self);
return SCRIPT_CONTINUE;
}
messageHandler handleSetRankSelection()
{
int idx = sui.getListboxSelectedRow(params);
int btn = sui.getIntButtonPressed(params);
obj_id target = utils.getObjIdScriptVar(self, "setRank.target");
utils.removeScriptVarTree(self, "setRank");
if ( btn == sui.BP_OK && idx > -1 && isIdValid(target) )
{
queueCommand(self, ##"setRank", target, Integer.toString(idx), COMMAND_PRIORITY_DEFAULT);
}
gm.decrementMessageCount(self);
return SCRIPT_CONTINUE;
}
messageHandler foundObject()
{
// for cmdFindObject
obj_id target = params.getObjId("target");
location loc = params.getLocation("location");
string scene = params.getString("scene");
loc.area = scene;
string sharedTemplateName = params.getString("sharedTemplateName");
int pid = params.getInt("pid");
obj_id[] containers = params.getObjIdArray("containers");
boolean isAuthoritative = params.getBoolean("isAuthoritative");
int cityId = params.getInt("cityId");
string cityName = params.getString("cityName");
obj_id residenceOf = params.getObjId("residenceOfId");
string residenceOfName = params.getString("residenceOfName");
string text = target + " (";
if (playerExists(target))
text = text + getPlayerFullName(target);
else
text = text + sharedTemplateName;
text = text + ") ";
if (isAuthoritative)
{
text = text + "<authoritative>";
}
else
{
text = text + "<proxy>";
}
text = text + " on server " + pid + ". " + loc.area + "(" + loc.x + ", " + loc.y + ", " + loc.z + ")";
if (cityId != 0)
{
text = text + " in city (" + cityId + ":" + cityName + ")";
}
if (isIdValid(residenceOf))
{
text = text + " residence of (" + residenceOf;
if ((residenceOfName != null) && (residenceOfName.length() > 0))
text = text + ":" + residenceOfName;
text = text + ")";
}
if (containers != null && containers.length > 0)
{
text = text + " contained by:";
for (int i = 0; i < containers.length; ++i)
text = text + " " + containers[i];
}
sendSystemMessageTestingOnly(self, text);
return SCRIPT_CONTINUE;
}