mirror of
https://bitbucket.org/theswgsource/src-1.2.git
synced 2026-09-24 09:12:51 -04:00
Added serverScript library
This commit is contained in:
@@ -0,0 +1,480 @@
|
||||
//========================================================================
|
||||
//
|
||||
// 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));
|
||||
}
|
||||
|
||||
// ======================================================================
|
||||
Reference in New Issue
Block a user