From a082723b86f51e9fe12f1acd32548d7c9062c426 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rey=20Alem=C3=A1n?= Date: Sun, 7 Apr 2024 20:48:33 -0600 Subject: [PATCH 1/2] added request resource balance --- .../network/request_resource_balance.lua | 19 +++++++++++++++ src/luascript.cpp | 23 +++++++++++++++++++ src/luascript.h | 2 ++ src/player.h | 6 +++++ 4 files changed, 50 insertions(+) create mode 100644 data/scripts/network/request_resource_balance.lua diff --git a/data/scripts/network/request_resource_balance.lua b/data/scripts/network/request_resource_balance.lua new file mode 100644 index 0000000000..092fbdde15 --- /dev/null +++ b/data/scripts/network/request_resource_balance.lua @@ -0,0 +1,19 @@ +local callbacks = { + [RESOURCE_BANK_BALANCE] = Player.getBankBalance, + [RESOURCE_GOLD_EQUIPPED] = Player.getMoney, +} + +local handler = PacketHandler(0xED) + +function handler.onReceive(player, msg) + local resource = msg:getByte() + local callback = callbacks[resource] + if not callback then + -- print("[Warning] Unknown resource type " .. string.format("%x", resource)) + return + end + + player:sendResourceBalance(resource, callback(player)) +end + +handler:register() diff --git a/src/luascript.cpp b/src/luascript.cpp index 480193fa3f..f4568137a6 100644 --- a/src/luascript.cpp +++ b/src/luascript.cpp @@ -2114,6 +2114,12 @@ void LuaScriptInterface::registerFunctions() registerEnum(DECAYING_TRUE); registerEnum(DECAYING_PENDING); + registerEnum(RESOURCE_BANK_BALANCE); + registerEnum(RESOURCE_GOLD_EQUIPPED); + registerEnum(RESOURCE_PREY_WILDCARDS); + registerEnum(RESOURCE_DAILYREWARD_STREAK); + registerEnum(RESOURCE_DAILYREWARD_JOKERS); + // _G registerGlobalVariable("INDEX_WHEREEVER", INDEX_WHEREEVER); registerGlobalBoolean("VIRTUAL_PARENT", true); @@ -2779,6 +2785,8 @@ void LuaScriptInterface::registerFunctions() registerMethod("Player", "setClientLowLevelBonusDisplay", LuaScriptInterface::luaPlayerSetClientLowLevelBonusDisplay); + registerMethod("Player", "sendResourceBalance", LuaScriptInterface::luaPlayerSendResourceBalance); + // Monster registerClass("Monster", "Creature", LuaScriptInterface::luaMonsterCreate); registerMetaMethod("Monster", "__eq", LuaScriptInterface::luaUserdataCompare); @@ -11085,6 +11093,21 @@ int LuaScriptInterface::luaPlayerSetClientLowLevelBonusDisplay(lua_State* L) return 1; } +int LuaScriptInterface::luaPlayerSendResourceBalance(lua_State* L) +{ + // player:sendResourceBalance(resource, amount) + Player* player = getUserdata(L, 1); + if (player) { + const ResourceTypes_t resourceType = getNumber(L, 2); + uint64_t amount = getNumber(L, 3); + player->sendResourceBalance(resourceType, amount); + pushBoolean(L, true); + } else { + lua_pushnil(L); + } + return 1; +} + // Monster int LuaScriptInterface::luaMonsterCreate(lua_State* L) { diff --git a/src/luascript.h b/src/luascript.h index 167f5770b5..abeb024df3 100644 --- a/src/luascript.h +++ b/src/luascript.h @@ -1043,6 +1043,8 @@ class LuaScriptInterface static int luaPlayerGetClientLowLevelBonusDisplay(lua_State* L); static int luaPlayerSetClientLowLevelBonusDisplay(lua_State* L); + static int luaPlayerSendResourceBalance(lua_State* L); + // Monster static int luaMonsterCreate(lua_State* L); diff --git a/src/player.h b/src/player.h index 74f2ad1142..c115eabd31 100644 --- a/src/player.h +++ b/src/player.h @@ -1057,6 +1057,12 @@ class Player final : public Creature, public Cylinder client->sendCombatAnalyzer(type, amount, impactType, target); } } + void sendResourceBalance(const ResourceTypes_t resourceType, uint64_t amount) + { + if (client) { + client->sendResourceBalance(resourceType, amount); + } + } void receivePing() { lastPong = OTSYS_TIME(); } From 034ed3e77e3166464bc299a9a534bdeccccf7d5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rey=20Alem=C3=A1n?= Date: Wed, 10 Apr 2024 19:23:22 -0600 Subject: [PATCH 2/2] pr comments --- data/scripts/network/request_resource_balance.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/scripts/network/request_resource_balance.lua b/data/scripts/network/request_resource_balance.lua index 092fbdde15..bd9fc6d6b8 100644 --- a/data/scripts/network/request_resource_balance.lua +++ b/data/scripts/network/request_resource_balance.lua @@ -9,7 +9,7 @@ function handler.onReceive(player, msg) local resource = msg:getByte() local callback = callbacks[resource] if not callback then - -- print("[Warning] Unknown resource type " .. string.format("%x", resource)) + -- print("[Warning - network/request_resource_balance.lua] Unknown resource type " .. string.format("0x%02X", resource)) return end