mirror of
https://bitbucket.org/theswgsource/src-1.2.git
synced 2026-09-22 07:13:03 -04:00
481 lines
20 KiB
C++
Executable File
481 lines
20 KiB
C++
Executable File
//========================================================================
|
|
//
|
|
// ScriptMethodsMoney.cpp - implements script methods dealing with money
|
|
//
|
|
// copyright 2001 Sony Online Entertainment
|
|
//
|
|
//========================================================================
|
|
|
|
#include "serverScript/FirstServerScript.h"
|
|
#include "serverScript/JavaLibrary.h"
|
|
|
|
#include "serverGame/CreatureObject.h"
|
|
#include "serverGame/GameServer.h"
|
|
#include "serverGame/PlayerCreatureController.h"
|
|
#include "serverGame/PlayerObject.h"
|
|
#include "serverGame/ServerObject.h"
|
|
#include "serverGame/ServerWorld.h"
|
|
#include "serverNetworkMessages/GetMoneyFromOfflineObjectMessage.h"
|
|
#include "sharedLog/Log.h"
|
|
#include "sharedObject/NetworkIdManager.h"
|
|
|
|
using namespace JNIWrappersNamespace;
|
|
|
|
|
|
// ======================================================================
|
|
// ScriptMethodsMoneyNamespace
|
|
// ======================================================================
|
|
|
|
namespace ScriptMethodsMoneyNamespace
|
|
{
|
|
bool install();
|
|
|
|
jboolean JNICALL transferCashTo (JNIEnv *env, jobject self, jlong source, jlong target, jint amount, jstring successCallbackFunction, jstring failCallbackFunction, jobject callbackData);
|
|
jboolean JNICALL transferBankCreditsTo (JNIEnv *env, jobject self, jlong source, jlong target, jint amount, jstring successCallbackFunction, jstring failCallbackFunction, jobject callbackData);
|
|
jboolean JNICALL transferBankCreditsToNamedAccount (JNIEnv *env, jobject self, jlong source, jstring target, jint amount, jstring successCallbackFunction, jstring failCallbackFunction, jobject callbackData);
|
|
jboolean JNICALL transferBankCreditsFromNamedAccount (JNIEnv *env, jobject self, jstring source, jlong target, jint amount, jstring successCallbackFunction, jstring failCallbackFunction, jobject callbackData);
|
|
jboolean JNICALL withdrawCashFromBank (JNIEnv *env, jobject self, jlong source, jint amount, jstring successCallbackFunction, jstring failCallbackFunction, jobject callbackData);
|
|
jboolean JNICALL depositCashToBank (JNIEnv *env, jobject self, jlong source, jint amount, jstring successCallbackFunction, jstring failCallbackFunction, jobject callbackData);
|
|
void JNICALL depositToGalacticReserve(JNIEnv *env, jobject self, jlong player);
|
|
void JNICALL withdrawFromGalacticReserve(JNIEnv *env, jobject self, jlong player);
|
|
jboolean JNICALL canAccessGalacticReserve(JNIEnv *env, jobject self, jlong player);
|
|
jint JNICALL getCashBalance (JNIEnv *env, jobject self, jlong source);
|
|
jint JNICALL getBankBalance (JNIEnv *env, jobject self, jlong source);
|
|
jint JNICALL getTotalMoney (JNIEnv *env, jobject self, jlong source);
|
|
void JNICALL getMoneyFromOfflineObject(JNIEnv *env, jobject self, jlong sourceObject, jint amount, jstring targetAccount, jstring successCallbackFunction, jstring failCallbackFunction, jobject callbackData);
|
|
}
|
|
|
|
//========================================================================
|
|
// install
|
|
//========================================================================
|
|
|
|
bool ScriptMethodsMoneyNamespace::install()
|
|
{
|
|
const JNINativeMethod NATIVES[] = {
|
|
#define JF(a,b,c) {a,b,(void*)(ScriptMethodsMoneyNamespace::c)}
|
|
JF("_transferCashTo", "(JJILjava/lang/String;Ljava/lang/String;Lscript/dictionary;)Z",transferCashTo),
|
|
JF("_transferBankCreditsTo", "(JJILjava/lang/String;Ljava/lang/String;Lscript/dictionary;)Z",transferBankCreditsTo),
|
|
JF("_transferBankCreditsToNamedAccount", "(JLjava/lang/String;ILjava/lang/String;Ljava/lang/String;Lscript/dictionary;)Z",transferBankCreditsToNamedAccount),
|
|
JF("_transferBankCreditsFromNamedAccount", "(Ljava/lang/String;JILjava/lang/String;Ljava/lang/String;Lscript/dictionary;)Z",transferBankCreditsFromNamedAccount),
|
|
JF("_withdrawCashFromBank", "(JILjava/lang/String;Ljava/lang/String;Lscript/dictionary;)Z",withdrawCashFromBank),
|
|
JF("_depositCashToBank", "(JILjava/lang/String;Ljava/lang/String;Lscript/dictionary;)Z",depositCashToBank),
|
|
JF("_depositToGalacticReserve", "(J)V",depositToGalacticReserve),
|
|
JF("_withdrawFromGalacticReserve", "(J)V",withdrawFromGalacticReserve),
|
|
JF("_canAccessGalacticReserve", "(J)Z",canAccessGalacticReserve),
|
|
JF("_getCashBalance", "(J)I",getCashBalance),
|
|
JF("_getBankBalance", "(J)I",getBankBalance),
|
|
JF("_getTotalMoney", "(J)I",getTotalMoney),
|
|
JF("_getMoneyFromOfflineObject", "(JILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Lscript/dictionary;)V",getMoneyFromOfflineObject),
|
|
};
|
|
|
|
return JavaLibrary::registerNatives(NATIVES, sizeof(NATIVES)/sizeof(NATIVES[0]));
|
|
}
|
|
|
|
|
|
// ======================================================================
|
|
|
|
jboolean JNICALL ScriptMethodsMoneyNamespace::transferCashTo(JNIEnv *env, jobject self, jlong source, jlong target, jint amount, jstring successCallbackFunction, jstring failCallbackFunction, jobject callbackData)
|
|
{
|
|
UNREF(self);
|
|
|
|
// Check for missing/invalid parameters
|
|
|
|
if (source == 0 || target == 0)
|
|
return JNI_FALSE;
|
|
if (successCallbackFunction != 0 || failCallbackFunction != 0)
|
|
{
|
|
if (callbackData == 0)
|
|
return JNI_FALSE;
|
|
if (!env->IsInstanceOf(callbackData, JavaLibrary::getClsDictionary()))
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
// Convert parameters from Java to C++
|
|
|
|
NetworkId sourceObjId(source);
|
|
NetworkId targetObjId(target);
|
|
NetworkId ownerOID(JavaLibrary::getNetworkId(*callStaticObjectMethod(JavaLibrary::getClsScriptEntry(), JavaLibrary::getMidScriptEntryGetOwnerContext())));
|
|
std::vector<int8> packedDictionary;
|
|
std::string successCallback;
|
|
std::string failCallback;
|
|
|
|
if (callbackData != 0)
|
|
{
|
|
JavaDictionary const javaDictionary(callbackData);
|
|
JavaLibrary::instance()->packDictionary(javaDictionary, packedDictionary);
|
|
}
|
|
if (successCallbackFunction != 0 && !JavaLibrary::convert(JavaStringParam(successCallbackFunction), successCallback))
|
|
return JNI_FALSE;
|
|
if (failCallbackFunction != 0 && !JavaLibrary::convert(JavaStringParam(failCallbackFunction), failCallback))
|
|
return JNI_FALSE;
|
|
ServerObject *sourceObj = ServerWorld::findObjectByNetworkId(sourceObjId);
|
|
|
|
if (sourceObj == NULL || targetObjId == NetworkId::cms_invalid || ownerOID == NetworkId::cms_invalid)
|
|
return JNI_FALSE;
|
|
|
|
// Do money transfer (will be forwarded if object is not authoritative)
|
|
|
|
sourceObj->scriptTransferCashTo(targetObjId, amount, ownerOID, successCallback, failCallback, packedDictionary);
|
|
return JNI_TRUE;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsMoneyNamespace::transferBankCreditsTo(JNIEnv *env, jobject self, jlong source, jlong target, jint amount, jstring successCallbackFunction, jstring failCallbackFunction, jobject callbackData)
|
|
{
|
|
UNREF(self);
|
|
|
|
// Check for missing/invalid parameters
|
|
|
|
if (source == 0 || target == 0)
|
|
return JNI_FALSE;
|
|
if (successCallbackFunction != 0 || failCallbackFunction != 0)
|
|
{
|
|
if (callbackData == 0)
|
|
return JNI_FALSE;
|
|
if (!env->IsInstanceOf(callbackData, JavaLibrary::getClsDictionary()))
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
// Convert parameters from Java to C++
|
|
|
|
NetworkId sourceObjId(source);
|
|
NetworkId targetObjId(target);
|
|
NetworkId ownerOID(JavaLibrary::getNetworkId(*callStaticObjectMethod(JavaLibrary::getClsScriptEntry(), JavaLibrary::getMidScriptEntryGetOwnerContext())));
|
|
std::vector<int8> packedDictionary;
|
|
std::string successCallback;
|
|
std::string failCallback;
|
|
|
|
if (callbackData != 0)
|
|
{
|
|
JavaDictionary const javaDictionary(callbackData);
|
|
JavaLibrary::instance()->packDictionary(javaDictionary, packedDictionary);
|
|
}
|
|
if (successCallbackFunction != 0 && !JavaLibrary::convert(JavaStringParam(successCallbackFunction), successCallback))
|
|
return JNI_FALSE;
|
|
if (failCallbackFunction != 0 && !JavaLibrary::convert(JavaStringParam(failCallbackFunction), failCallback))
|
|
return JNI_FALSE;
|
|
ServerObject *sourceObj = ServerWorld::findObjectByNetworkId(sourceObjId);
|
|
|
|
if (sourceObj == NULL || targetObjId == NetworkId::cms_invalid || ownerOID == NetworkId::cms_invalid)
|
|
return JNI_FALSE;
|
|
|
|
// Do money transfer (will be forwarded if object is not authoritative)
|
|
|
|
sourceObj->scriptTransferBankCreditsTo(targetObjId, amount, ownerOID, successCallback, failCallback, packedDictionary);
|
|
return JNI_TRUE;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsMoneyNamespace::withdrawCashFromBank (JNIEnv *env, jobject self, jlong source, jint amount, jstring successCallbackFunction, jstring failCallbackFunction, jobject callbackData)
|
|
{
|
|
UNREF(self);
|
|
|
|
// Check for missing/invalid parameters
|
|
|
|
if (source == 0)
|
|
return JNI_FALSE;
|
|
if (successCallbackFunction != 0 || failCallbackFunction != 0)
|
|
{
|
|
if (callbackData == 0)
|
|
return JNI_FALSE;
|
|
if (!env->IsInstanceOf(callbackData, JavaLibrary::getClsDictionary()))
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
// Convert parameters from Java to C++
|
|
|
|
NetworkId sourceObjId(source);
|
|
NetworkId ownerOID(JavaLibrary::getNetworkId(*callStaticObjectMethod(JavaLibrary::getClsScriptEntry(), JavaLibrary::getMidScriptEntryGetOwnerContext())));
|
|
std::vector<int8> packedDictionary;
|
|
std::string successCallback;
|
|
std::string failCallback;
|
|
|
|
if (callbackData != 0)
|
|
{
|
|
JavaDictionary const javaDictionary(callbackData);
|
|
JavaLibrary::instance()->packDictionary(javaDictionary, packedDictionary);
|
|
}
|
|
if (successCallbackFunction != 0 && !JavaLibrary::convert(JavaStringParam(successCallbackFunction), successCallback))
|
|
return JNI_FALSE;
|
|
if (failCallbackFunction != 0 && !JavaLibrary::convert(JavaStringParam(failCallbackFunction), failCallback))
|
|
return JNI_FALSE;
|
|
ServerObject *sourceObj = ServerWorld::findObjectByNetworkId(sourceObjId);
|
|
|
|
if (sourceObj == NULL || ownerOID == NetworkId::cms_invalid)
|
|
return JNI_FALSE;
|
|
|
|
// Do money transfer (will be forwarded if object is not authoritative)
|
|
|
|
sourceObj->scriptWithdrawCashFromBank(amount, ownerOID, successCallback, failCallback, packedDictionary);
|
|
return JNI_TRUE;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsMoneyNamespace::depositCashToBank(JNIEnv *env, jobject self, jlong source, jint amount, jstring successCallbackFunction, jstring failCallbackFunction, jobject callbackData)
|
|
{
|
|
UNREF(self);
|
|
|
|
// Check for missing/invalid parameters
|
|
|
|
if (source == 0)
|
|
return JNI_FALSE;
|
|
if (successCallbackFunction != 0 || failCallbackFunction != 0)
|
|
{
|
|
if (callbackData == 0)
|
|
return JNI_FALSE;
|
|
if (!env->IsInstanceOf(callbackData, JavaLibrary::getClsDictionary()))
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
// Convert parameters from Java to C++
|
|
NetworkId ownerOID(JavaLibrary::getNetworkId(*callStaticObjectMethod(JavaLibrary::getClsScriptEntry(), JavaLibrary::getMidScriptEntryGetOwnerContext())));
|
|
if (ownerOID == NetworkId::cms_invalid)
|
|
return JNI_FALSE;
|
|
|
|
std::string successCallback;
|
|
if (successCallbackFunction != 0 && !JavaLibrary::convert(JavaStringParam(successCallbackFunction), successCallback))
|
|
return JNI_FALSE;
|
|
|
|
std::string failCallback;
|
|
if (failCallbackFunction != 0 && !JavaLibrary::convert(JavaStringParam(failCallbackFunction), failCallback))
|
|
return JNI_FALSE;
|
|
|
|
ServerObject *sourceObj = NULL;
|
|
if (!JavaLibrary::getObject(source, sourceObj))
|
|
return JNI_FALSE;
|
|
|
|
JavaDictionary callbackDictionary(callbackData);
|
|
callbackDictionary.serialize();
|
|
|
|
// Do money transfer (will be forwarded if object is not authoritative)
|
|
sourceObj->scriptDepositCashToBank(amount, ownerOID, successCallback, failCallback,
|
|
callbackDictionary.getSerializedData());
|
|
return JNI_TRUE;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsMoneyNamespace::depositToGalacticReserve(JNIEnv *env, jobject self, jlong player)
|
|
{
|
|
CreatureObject * objPlayer = NULL;
|
|
if (!JavaLibrary::getObject(player, objPlayer) || !objPlayer)
|
|
return;
|
|
|
|
PlayerObject * const playerObject = PlayerCreatureController::getPlayerObject(objPlayer);
|
|
if (!playerObject)
|
|
return;
|
|
|
|
playerObject->depositToGalacticReserve(false);
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsMoneyNamespace::withdrawFromGalacticReserve(JNIEnv *env, jobject self, jlong player)
|
|
{
|
|
CreatureObject * objPlayer = NULL;
|
|
if (!JavaLibrary::getObject(player, objPlayer) || !objPlayer)
|
|
return;
|
|
|
|
PlayerObject * const playerObject = PlayerCreatureController::getPlayerObject(objPlayer);
|
|
if (!playerObject)
|
|
return;
|
|
|
|
playerObject->withdrawFromGalacticReserve();
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsMoneyNamespace::canAccessGalacticReserve(JNIEnv *env, jobject self, jlong player)
|
|
{
|
|
CreatureObject * objPlayer = NULL;
|
|
if (!JavaLibrary::getObject(player, objPlayer) || !objPlayer)
|
|
return JNI_FALSE;
|
|
|
|
PlayerObject * const playerObject = PlayerCreatureController::getPlayerObject(objPlayer);
|
|
if (!playerObject)
|
|
return JNI_FALSE;
|
|
|
|
Vector const positionW = objPlayer->getPosition_w();
|
|
return PlayerObject::canAccessGalacticReserve(positionW.x, positionW.z);
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jint JNICALL ScriptMethodsMoneyNamespace::getCashBalance(JNIEnv *env, jobject self, jlong source)
|
|
{
|
|
ServerObject * sourceObj = 0;
|
|
if (!JavaLibrary::getObject(source, sourceObj))
|
|
return JNI_FALSE;
|
|
|
|
return sourceObj->getCashBalance();
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jint JNICALL ScriptMethodsMoneyNamespace::getBankBalance(JNIEnv *env, jobject self, jlong source)
|
|
{
|
|
ServerObject * sourceObj = 0;
|
|
if (!JavaLibrary::getObject(source, sourceObj))
|
|
return JNI_FALSE;
|
|
|
|
return sourceObj->getBankBalance();
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jint JNICALL ScriptMethodsMoneyNamespace::getTotalMoney(JNIEnv *env, jobject self, jlong source)
|
|
{
|
|
ServerObject * sourceObj = 0;
|
|
if (!JavaLibrary::getObject(source, sourceObj))
|
|
return JNI_FALSE;
|
|
|
|
return sourceObj->getTotalMoney();
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsMoneyNamespace::transferBankCreditsToNamedAccount(JNIEnv *env, jobject self, jlong source, jstring target, jint amount, jstring successCallbackFunction, jstring failCallbackFunction, jobject callbackData)
|
|
{
|
|
UNREF(self);
|
|
|
|
// Check for missing/invalid parameters
|
|
|
|
if (source == 0 || target == 0)
|
|
return JNI_FALSE;
|
|
if (successCallbackFunction != 0 || failCallbackFunction != 0)
|
|
{
|
|
// if you specify a callback, data must be valid
|
|
if(callbackData == 0)
|
|
return JNI_FALSE;
|
|
if (!env->IsInstanceOf(callbackData, JavaLibrary::getClsDictionary()))
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
// Convert parameters from Java to C++
|
|
|
|
NetworkId sourceObjId(source);
|
|
std::string targetString;
|
|
NetworkId ownerOID(JavaLibrary::getNetworkId(*callStaticObjectMethod(JavaLibrary::getClsScriptEntry(), JavaLibrary::getMidScriptEntryGetOwnerContext())));
|
|
std::vector<int8> packedDictionary;
|
|
std::string successCallback;
|
|
std::string failCallback;
|
|
|
|
if (callbackData != 0)
|
|
{
|
|
JavaDictionary const javaDictionary(callbackData);
|
|
JavaLibrary::instance()->packDictionary(javaDictionary, packedDictionary);
|
|
}
|
|
if (successCallbackFunction != 0 && !JavaLibrary::convert(JavaStringParam(successCallbackFunction), successCallback))
|
|
return JNI_FALSE;
|
|
if (failCallbackFunction != 0 && !JavaLibrary::convert(JavaStringParam(failCallbackFunction), failCallback))
|
|
return JNI_FALSE;
|
|
if (!JavaLibrary::convert(JavaStringParam(target), targetString))
|
|
return JNI_FALSE;
|
|
ServerObject *sourceObj = ServerWorld::findObjectByNetworkId(sourceObjId);
|
|
|
|
if (sourceObj == NULL || targetString.size() == 0 || ownerOID == NetworkId::cms_invalid)
|
|
return JNI_FALSE;
|
|
|
|
// Do money transfer (will be forwarded if object is not authoritative)
|
|
|
|
sourceObj->scriptTransferBankCreditsTo(targetString, amount, ownerOID, successCallback, failCallback, packedDictionary);
|
|
return JNI_TRUE;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
jboolean JNICALL ScriptMethodsMoneyNamespace::transferBankCreditsFromNamedAccount(JNIEnv *env, jobject self, jstring source, jlong target, jint amount, jstring successCallbackFunction, jstring failCallbackFunction, jobject callbackData)
|
|
{
|
|
UNREF(self);
|
|
|
|
// Check for missing/invalid parameters
|
|
|
|
if (source == 0 || target == 0)
|
|
return JNI_FALSE;
|
|
if (successCallbackFunction != 0 || failCallbackFunction != 0)
|
|
{
|
|
// if you specify a callback, data must be valid
|
|
if(callbackData == 0)
|
|
return JNI_FALSE;
|
|
if (!env->IsInstanceOf(callbackData, JavaLibrary::getClsDictionary()))
|
|
return JNI_FALSE;
|
|
}
|
|
|
|
// Convert parameters from Java to C++
|
|
|
|
std::string sourceString;
|
|
NetworkId targetObjId(target);
|
|
NetworkId ownerOID(JavaLibrary::getNetworkId(*callStaticObjectMethod(JavaLibrary::getClsScriptEntry(), JavaLibrary::getMidScriptEntryGetOwnerContext())));
|
|
std::vector<int8> packedDictionary;
|
|
std::string successCallback;
|
|
std::string failCallback;
|
|
|
|
if (callbackData != 0)
|
|
{
|
|
JavaDictionary const javaDictionary(callbackData);
|
|
JavaLibrary::instance()->packDictionary(javaDictionary, packedDictionary);
|
|
}
|
|
if (successCallbackFunction != 0 && !JavaLibrary::convert(JavaStringParam(successCallbackFunction), successCallback))
|
|
return JNI_FALSE;
|
|
if (failCallbackFunction != 0 && !JavaLibrary::convert(JavaStringParam(failCallbackFunction), failCallback))
|
|
return JNI_FALSE;
|
|
if (!JavaLibrary::convert(JavaStringParam(source), sourceString))
|
|
return JNI_FALSE;
|
|
ServerObject *targetObj = ServerWorld::findObjectByNetworkId(targetObjId);
|
|
|
|
if (targetObj == NULL || sourceString.size() == 0 || ownerOID == NetworkId::cms_invalid)
|
|
return JNI_FALSE;
|
|
|
|
// Do money transfer (will be forwarded if object is not authoritative)
|
|
|
|
targetObj->scriptTransferBankCreditsFrom(sourceString, amount, ownerOID, successCallback, failCallback, packedDictionary);
|
|
return JNI_TRUE;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
void JNICALL ScriptMethodsMoneyNamespace::getMoneyFromOfflineObject(JNIEnv *env, jobject self, jlong sourceObject, jint amount, jstring targetAccount, jstring successCallbackFunction, jstring failCallbackFunction, jobject callbackData)
|
|
{
|
|
// Convert parameters from Java types to C types
|
|
DEBUG_REPORT_LOG(true,("getMoneyFromOfflineObject\n"));
|
|
|
|
NetworkId const sourceObjectC(sourceObject);
|
|
NetworkId const replyToC(JavaLibrary::getNetworkId(*callStaticObjectMethod(JavaLibrary::getClsScriptEntry(), JavaLibrary::getMidScriptEntryGetOwnerContext())));
|
|
std::string targetAccountC;
|
|
std::string successCallbackFunctionC;
|
|
std::string failCallbackFunctionC;
|
|
std::vector<int8> callbackDataC;
|
|
|
|
if (targetAccount == 0 || !JavaLibrary::convert(JavaStringParam(targetAccount), targetAccountC))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("getMoneyFromOfflineObject: targetAccount was not specified or could not be converted to a string."));
|
|
return;
|
|
}
|
|
if (successCallbackFunction != 0 && !JavaLibrary::convert(JavaStringParam(successCallbackFunction), successCallbackFunctionC))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("getMoneyFromOfflineObject: successCallbackFunction could not be converted to a string."));
|
|
return;
|
|
}
|
|
if (failCallbackFunction != 0 && !JavaLibrary::convert(JavaStringParam(failCallbackFunction), failCallbackFunctionC))
|
|
{
|
|
JAVA_THROW_SCRIPT_EXCEPTION(true, ("getMoneyFromOfflineObject: failCallbackFunction could not be converted to a string."));
|
|
return;
|
|
}
|
|
if (callbackData != 0)
|
|
{
|
|
JavaDictionary const javaDictionary(callbackData);
|
|
JavaLibrary::instance()->packDictionary(javaDictionary, callbackDataC);
|
|
}
|
|
|
|
// Do the money grab
|
|
GetMoneyFromOfflineObjectMessage msg(sourceObjectC, amount, replyToC, successCallbackFunctionC, failCallbackFunctionC, callbackDataC, false);
|
|
GameServer::getInstance().sendToDatabaseServer(msg);
|
|
|
|
LOG("CustomerService", ("Money: offline transfer from %s to %s, amount %i", sourceObjectC.getValueString().c_str(), targetAccountC.c_str(), amount));
|
|
}
|
|
|
|
// ======================================================================
|