Skip to content

Commit

Permalink
fix: gamestore purchase history on ARM architecture (opentibiabr#812)
Browse files Browse the repository at this point in the history
This commit addresses an issue where the gamestore purchase history was not being properly stored on servers running on ARM architecture. While the problem did not occur on Windows, it affected other systems and was causing frustration for players. This fix ensures that the purchase history is stored correctly on all platforms, without causing any problems for Windows servers.
  • Loading branch information
Peixonauta2 committed Feb 14, 2023
1 parent 4b1d92c commit f7fef7c
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 1 deletion.
2 changes: 1 addition & 1 deletion data/modules/scripts/gamestore/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -864,7 +864,7 @@ function sendStoreTransactionHistory(playerId, page, entriesPerPage)
msg:addU32(0)
msg:addU32(entry.time)
msg:addByte(entry.mode) -- 0 = normal, 1 = gift, 2 = refund
msg:addU32(entry.amount)
msg:add32(entry.amount)
msg:addByte(entry.type) -- 0 = transferable tibia coin, 1 = normal tibia coin, 2 = tournament coin
msg:addString(entry.description)
msg:addByte(0) -- details
Expand Down
52 changes: 52 additions & 0 deletions src/lua/functions/core/network/network_message_functions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,58 @@ int NetworkMessageFunctions::luaNetworkMessageAddU64(lua_State* L) {
return 1;
}

int NetworkMessageFunctions::luaNetworkMessageAdd8(lua_State* L) {
// networkMessage:add8(number)
auto number = getNumber<int8_t>(L, 2);
NetworkMessage* message = getUserdata<NetworkMessage>(L, 1);
if (message) {
message->add<int8_t>(number);
pushBoolean(L, true);
} else {
lua_pushnil(L);
}
return 1;
}

int NetworkMessageFunctions::luaNetworkMessageAdd16(lua_State* L) {
// networkMessage:add16(number)
auto number = getNumber<int16_t>(L, 2);
NetworkMessage* message = getUserdata<NetworkMessage>(L, 1);
if (message) {
message->add<int16_t>(number);
pushBoolean(L, true);
} else {
lua_pushnil(L);
}
return 1;
}

int NetworkMessageFunctions::luaNetworkMessageAdd32(lua_State* L) {
// networkMessage:add32(number)
auto number = getNumber<int32_t>(L, 2);
NetworkMessage* message = getUserdata<NetworkMessage>(L, 1);
if (message) {
message->add<int32_t>(number);
pushBoolean(L, true);
} else {
lua_pushnil(L);
}
return 1;
}

int NetworkMessageFunctions::luaNetworkMessageAdd64(lua_State* L) {
// networkMessage:add64(number)
auto number = getNumber<int64_t>(L, 2);
NetworkMessage* message = getUserdata<NetworkMessage>(L, 1);
if (message) {
message->add<int64_t>(number);
pushBoolean(L, true);
} else {
lua_pushnil(L);
}
return 1;
}

int NetworkMessageFunctions::luaNetworkMessageAddString(lua_State* L) {
// networkMessage:addString(string)
const std::string &string = getString(L, 2);
Expand Down
8 changes: 8 additions & 0 deletions src/lua/functions/core/network/network_message_functions.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ class NetworkMessageFunctions final : LuaScriptInterface {
registerMethod(L, "NetworkMessage", "addU16", NetworkMessageFunctions::luaNetworkMessageAddU16);
registerMethod(L, "NetworkMessage", "addU32", NetworkMessageFunctions::luaNetworkMessageAddU32);
registerMethod(L, "NetworkMessage", "addU64", NetworkMessageFunctions::luaNetworkMessageAddU64);
registerMethod(L, "NetworkMessage", "add8", NetworkMessageFunctions::luaNetworkMessageAdd8);
registerMethod(L, "NetworkMessage", "add16", NetworkMessageFunctions::luaNetworkMessageAdd16);
registerMethod(L, "NetworkMessage", "add32", NetworkMessageFunctions::luaNetworkMessageAdd32);
registerMethod(L, "NetworkMessage", "add64", NetworkMessageFunctions::luaNetworkMessageAdd64);
registerMethod(L, "NetworkMessage", "addString", NetworkMessageFunctions::luaNetworkMessageAddString);
registerMethod(L, "NetworkMessage", "addPosition", NetworkMessageFunctions::luaNetworkMessageAddPosition);
registerMethod(L, "NetworkMessage", "addDouble", NetworkMessageFunctions::luaNetworkMessageAddDouble);
Expand All @@ -56,6 +60,10 @@ class NetworkMessageFunctions final : LuaScriptInterface {
static int luaNetworkMessageAddU16(lua_State* L);
static int luaNetworkMessageAddU32(lua_State* L);
static int luaNetworkMessageAddU64(lua_State* L);
static int luaNetworkMessageAdd8(lua_State* L);
static int luaNetworkMessageAdd16(lua_State* L);
static int luaNetworkMessageAdd32(lua_State* L);
static int luaNetworkMessageAdd64(lua_State* L);
static int luaNetworkMessageAddString(lua_State* L);
static int luaNetworkMessageAddPosition(lua_State* L);
static int luaNetworkMessageAddDouble(lua_State* L);
Expand Down

0 comments on commit f7fef7c

Please sign in to comment.