mirror of
https://github.com/SWG-Source/dsrc.git
synced 2026-07-31 00:15:54 -04:00
448 lines
11 KiB
Plaintext
448 lines
11 KiB
Plaintext
|
|
include library.sui;
|
|
include library.utils;
|
|
include library.prose;
|
|
include library.money;
|
|
|
|
/***************** DEBUG/TESTING ***********************/
|
|
|
|
/*
|
|
trigger OnSpeaking(string text)
|
|
{
|
|
if ( text.equals("paytest") )
|
|
{
|
|
//debugSpeakMsg(self, "calling paytest functions!");
|
|
money.pay(self, money.ACCT_TEST, 10, "testAccountHandler", null, true);
|
|
money.pay(self, money.ACCT_BETA_TEST, 10, "betaAccountHandler", null, true);
|
|
return SCRIPT_OVERRIDE;
|
|
}
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler testAccountHandler()
|
|
{
|
|
debugSpeakMsg(self, "TEST pay complete! sucess = " +(money.getReturnCode(params)==money.RET_SUCCESS));
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler betaAccountHandler()
|
|
{
|
|
debugSpeakMsg(self, "BETA pay complete! sucess = " +(money.getReturnCode(params)==money.RET_SUCCESS));
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
*/
|
|
|
|
/***************** PAY HANDLERS ***********************/
|
|
messageHandler handlePayDeposit()
|
|
{
|
|
//debugSpeakMsg(self, "handlePayDeposit - " + params.toString());
|
|
//debugSpeakMsg(self, "handlePayDeposit: entering");
|
|
|
|
if ( (params == null) || (params.isEmpty()) )
|
|
return SCRIPT_CONTINUE;
|
|
|
|
obj_id target = params.getObjId(money.DICT_TARGET_ID);
|
|
int total = params.getInt(money.DICT_TOTAL);
|
|
string returnHandler = params.getString(money.DICT_PAY_HANDLER);
|
|
|
|
if ( total < 1 )
|
|
return SCRIPT_CONTINUE;
|
|
|
|
int retCode = money.getReturnCode(params);
|
|
switch (retCode)
|
|
{
|
|
case money.RET_SUCCESS:
|
|
//debugSpeakMsg(self, "handlePayDeposit: ret code = SUCCESS");
|
|
if ( !isIdValid(target) )
|
|
{
|
|
string acct = params.getString(money.DICT_ACCT_NAME);
|
|
//debugSpeakMsg(self, "handlePayDeposit: target = " + target + " acct = " + acct);
|
|
if ( (acct == null) || (acct.equals("")) )
|
|
{
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
else
|
|
{
|
|
transferBankCreditsToNamedAccount(self, acct, total, money.HANDLER_PAY_PASS, money.HANDLER_PAY_FAIL, params);
|
|
utils.moneyOutMetric(self, acct, total);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
transferBankCreditsTo(self, target, total, money.HANDLER_PAY_PASS, money.HANDLER_PAY_FAIL, params);
|
|
}
|
|
return SCRIPT_CONTINUE;
|
|
|
|
default:
|
|
//debugSpeakMsg(self, "handlePayDeposit: ret code = NOT success");
|
|
if ( !isIdValid(target) )
|
|
{
|
|
string acct = params.getString(money.DICT_ACCT_NAME);
|
|
if ( (acct == null) || (acct.equals("")) )
|
|
{
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
else
|
|
{
|
|
prose_package pp = prose.getPackage(money.PROSE_PAY_FAIL, acct, total);
|
|
sendSystemMessageProse(self, pp);
|
|
messageTo(self, returnHandler, params, 0, true);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
string targetName = params.getString(money.DICT_TARGET_NAME);
|
|
if ( targetName != null && !targetName.equals("") )
|
|
{
|
|
prose_package pp = prose.getPackage(money.PROSE_PAY_FAIL, self,null,null, target,targetName,null, null,null,null, total, 0f);
|
|
sendSystemMessageProse(self, pp);
|
|
}
|
|
else
|
|
{
|
|
prose_package pp = prose.getPackage(money.PROSE_PAY_FAIL, self, target, total);
|
|
sendSystemMessageProse(self, pp);
|
|
}
|
|
messageTo(target, returnHandler, params, 0, isObjectPersisted(target));
|
|
}
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
}
|
|
|
|
messageHandler handlePayPass()
|
|
{
|
|
//debugSpeakMsg(self, "handlePayPass: payment success!");
|
|
if ( (params == null) || (params.isEmpty()) )
|
|
return SCRIPT_CONTINUE;
|
|
|
|
money.decrementPayTally(self, params);
|
|
|
|
int retCode = money.getReturnCode(params);
|
|
switch (retCode)
|
|
{
|
|
case -1:
|
|
params.put(money.DICT_CODE, money.RET_SUCCESS);
|
|
break;
|
|
|
|
case money.RET_FAIL:
|
|
messageTo(self, money.HANDLER_PAY_FAIL, params, 0, isObjectPersisted(self));
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
obj_id target = params.getObjId(money.DICT_TARGET_ID);
|
|
|
|
int total = params.getInt(money.DICT_TOTAL);
|
|
|
|
boolean notify = params.getBoolean(money.DICT_NOTIFY);
|
|
if ( notify )
|
|
{
|
|
if ( !isIdValid(target) )
|
|
{
|
|
string acct = params.getString(money.DICT_ACCT_NAME);
|
|
if ( (acct == null) || (acct.equals("")) )
|
|
{
|
|
}
|
|
else
|
|
{
|
|
string_id sid_acct = new string_id(money.STF_ACCT_N, toLower(acct));
|
|
if ( sid_acct != null )
|
|
{
|
|
prose_package ppSidAcct = prose.getPackage(money.PROSE_PAY_ACCT_SUCCESS, sid_acct, total);
|
|
sendSystemMessageProse(self, ppSidAcct);
|
|
}
|
|
else
|
|
{
|
|
prose_package ppAcct = prose.getPackage(money.PROSE_PAY_ACCT_SUCCESS, acct, total);
|
|
sendSystemMessageProse(self, ppAcct);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
string targetName = params.getString(money.DICT_TARGET_NAME);
|
|
if ( targetName != null && !targetName.equals("") )
|
|
{
|
|
prose_package pp = prose.getPackage(money.PROSE_PAY_SUCCESS, self,null,null, target,targetName,null, null,null,null, total, 0f);
|
|
sendSystemMessageProse(self, pp);
|
|
}
|
|
else
|
|
{
|
|
if (exists(target))
|
|
{
|
|
prose_package pp = prose.getPackage(money.PROSE_PAY_SUCCESS, self, target, total);
|
|
sendSystemMessageProse(self, pp);
|
|
}
|
|
else
|
|
{
|
|
prose_package pp = prose.getPackage(money.PROSE_PAY_SUCCESS_NO_TARGET, self, target, total);
|
|
sendSystemMessageProse(self, pp);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
string returnHandler = params.getString(money.DICT_PAY_HANDLER);
|
|
int msgPayer = params.getInt(money.DICT_MSG_PAYER);
|
|
if ( (target != null) && (target != obj_id.NULL_ID) && (msgPayer == 0) )
|
|
{
|
|
messageTo(target, returnHandler, params, 0, isObjectPersisted(target));
|
|
}
|
|
else
|
|
{
|
|
messageTo(self, returnHandler, params, 0, true);
|
|
}
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler handlePayFail()
|
|
{
|
|
//debugSpeakMsg(self, "handlePayFail: payment failed!");
|
|
if ( (params == null) || (params.isEmpty()) )
|
|
return SCRIPT_CONTINUE;
|
|
|
|
money.decrementPayTally(self, params);
|
|
|
|
params.put(money.DICT_CODE, money.RET_FAIL);
|
|
|
|
string returnHandler = params.getString(money.DICT_PAY_HANDLER);
|
|
|
|
obj_id target = params.getObjId(money.DICT_TARGET_ID);
|
|
if ( !isIdValid(target) )
|
|
{
|
|
messageTo(self, returnHandler, params, 0, true);
|
|
}
|
|
else
|
|
{
|
|
messageTo(target, returnHandler, params, 0, isObjectPersisted(target));
|
|
}
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
/***************** ACCT PAY HANDLERS ***********************/
|
|
messageHandler acctToPass()
|
|
{
|
|
//debugSpeakMsg(self, "handlePayDeposit - " + params.toString());
|
|
//debugSpeakMsg(self, "handlePayDeposit: entering");
|
|
|
|
if ( (params == null) || (params.isEmpty()) )
|
|
return SCRIPT_CONTINUE;
|
|
|
|
int amt = params.getInt(money.DICT_AMOUNT);
|
|
if ( amt < 1 )
|
|
return SCRIPT_CONTINUE;
|
|
|
|
obj_id target = params.getObjId(money.DICT_TARGET_ID);
|
|
if ( !isIdValid(target) )
|
|
return SCRIPT_CONTINUE;
|
|
|
|
withdrawCashFromBank(target, amt, "withdrawPass", "xferFail", params);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler withdrawPass()
|
|
{
|
|
//debugSpeakMsg(self, "handlePayPass: payment success!");
|
|
if ( (params == null) || (params.isEmpty()) )
|
|
return SCRIPT_CONTINUE;
|
|
|
|
params.put(money.DICT_CODE, money.RET_SUCCESS);
|
|
|
|
string returnHandler = params.getString(money.DICT_PAY_HANDLER);
|
|
messageTo(self, returnHandler, params, 0, true);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler xferFail()
|
|
{
|
|
//debugSpeakMsg(self, "handlePayFail: payment failed!");
|
|
if ( (params == null) || (params.isEmpty()) )
|
|
return SCRIPT_CONTINUE;
|
|
|
|
params.put(money.DICT_CODE, money.RET_FAIL);
|
|
|
|
string returnHandler = params.getString(money.DICT_PAY_HANDLER);
|
|
messageTo(self, returnHandler, params, 0, true);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
/***************** MONEY CLEAR HANDLERS ***********************/
|
|
messageHandler handleCovertDepositReturn()
|
|
{
|
|
int cash = getCashBalance(self);
|
|
if ( cash > 0 )
|
|
{
|
|
money.covertDeposit(self, cash, "handleCovertDepositReturn", params);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
int bank = getBankBalance(self);
|
|
if ( bank < 1 )
|
|
return SCRIPT_CONTINUE;
|
|
|
|
string acct = params.getString("acct");
|
|
transferBankCreditsToNamedAccount(self, acct, bank, "finishClear", "finishClear", params);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler finishClear()
|
|
{
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
//********* BANKING MESSAGEHANDLERS *************************************
|
|
messageHandler handleDepositWithdraw()
|
|
{
|
|
utils.removeScriptVar(self, "bankMenu");
|
|
|
|
if ( params == null )
|
|
{
|
|
messageTo(self, money.HANDLER_BANK_UNKNOWN_ERROR, null, 0, true);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
int btnPressed = sui.getIntButtonPressed(params);
|
|
switch(btnPressed)
|
|
{
|
|
case sui.BP_CANCEL:
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
int cashIn = getCashBalance(self);
|
|
int cashOut = sui.getTransferInputFrom(params);
|
|
|
|
int bankIn = getBankBalance(self);
|
|
int bankOut = sui.getTransferInputTo(params);
|
|
|
|
if ( (cashOut < 0) || (bankOut < 0) )
|
|
{
|
|
//debugSpeakMsg(self, "tsk tsk. I tried to get the system to accept negative number input!");
|
|
return SCRIPT_OVERRIDE;
|
|
}
|
|
|
|
int totalIn = cashIn + bankIn;
|
|
int totalOut = cashOut + bankOut;
|
|
|
|
if ( totalIn != totalOut )
|
|
{
|
|
//debugSpeakMsg(self, "base_player:handleDepositWithdraw has noticed a discrepancy with bank ui values!");
|
|
return SCRIPT_OVERRIDE;
|
|
}
|
|
|
|
int amt = 0;
|
|
dictionary d = new dictionary();
|
|
|
|
if ( cashIn > cashOut ) //deposit cash
|
|
{
|
|
amt = cashIn - cashOut;
|
|
if ( !money.deposit(self, amt) )
|
|
{
|
|
//debugSpeakMsg(self, "deposit transaction for " + amt + " credits was rejected by the system");
|
|
}
|
|
}
|
|
else if ( cashIn < cashOut ) //withdraw funds
|
|
{
|
|
amt = cashOut - cashIn;
|
|
if ( !money.withdraw(self, amt) )
|
|
{
|
|
//debugSpeakMsg(self, "withdraw transaction for " + amt + " credits was rejected by the system");
|
|
}
|
|
}
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler handleBankSuccess()
|
|
{
|
|
money.bankSuccess(self, params);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler handleBankUnknownError()
|
|
{
|
|
money.bankError(self);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler handleBankWithdrawError()
|
|
{
|
|
money.bankWithdrawError(self);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler handleBankDepositError()
|
|
{
|
|
money.bankDepositError(self);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler handleBankTransferError()
|
|
{
|
|
money.bankTransferError(self);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler handleCashTransferError()
|
|
{
|
|
money.cashTransferError(self);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler handleCovertTransactionPass()
|
|
{
|
|
LOG("money", self + " covert transaction succeeded");
|
|
params.put(money.DICT_CODE, money.RET_SUCCESS);
|
|
|
|
string returnHandler = params.getString(money.DICT_HANDLER);
|
|
messageTo(self, returnHandler, params, 0, true);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler handleCovertTransactionFail()
|
|
{
|
|
LOG("money", self + " covert transaction FAILED");
|
|
params.put(money.DICT_CODE, money.RET_FAIL);
|
|
|
|
string returnHandler = params.getString(money.DICT_HANDLER);
|
|
messageTo(self, returnHandler, params, 0, true);
|
|
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler handlePaymentRequest()
|
|
{
|
|
if ( (params == null) || (params.isEmpty()) )
|
|
{
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
int amt = params.getInt(money.DICT_AMOUNT);
|
|
string returnHandler = params.getString(money.DICT_HANDLER);
|
|
boolean notify = params.getBoolean(money.DICT_NOTIFY);
|
|
|
|
obj_id target = params.getObjId(money.DICT_TARGET_ID);
|
|
if ( target == null )
|
|
{
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
else if ( target == obj_id.NULL_ID )
|
|
{
|
|
string acct = params.getString(money.DICT_ACCT_NAME);
|
|
if ( (acct == null) || (acct.equals("")) )
|
|
{
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
money.pay(self, acct, amt, returnHandler, params, notify);
|
|
}
|
|
else
|
|
{
|
|
money.pay(self, target, amt, returnHandler, params, notify);
|
|
}
|
|
return SCRIPT_CONTINUE;
|
|
}
|