From 9ff99b8b123fa9fc3ab24d13552ebe19eaf2f0a5 Mon Sep 17 00:00:00 2001 From: Eduardo Dantas Date: Sat, 18 Jan 2025 22:17:47 -0300 Subject: [PATCH] fix: market bitvise colision --- src/io/iomarket.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/io/iomarket.cpp b/src/io/iomarket.cpp index fe91b3f6d94..9c93ab54947 100644 --- a/src/io/iomarket.cpp +++ b/src/io/iomarket.cpp @@ -51,7 +51,7 @@ MarketOfferList IOMarket::getActiveOffers(MarketAction_t action) { offer.amount = result->getNumber("amount"); offer.price = result->getNumber("price"); offer.timestamp = result->getNumber("created") + marketOfferDuration; - offer.counter = result->getNumber("id") & 0xFFFF; + offer.counter = (result->getNumber("id") ^ 0xABCDEF) & 0xFFFF; if (result->getNumber("anonymous") == 0) { offer.playerName = result->getString("player_name"); } else { @@ -82,7 +82,7 @@ MarketOfferList IOMarket::getActiveOffers(MarketAction_t action, uint16_t itemId offer.amount = result->getNumber("amount"); offer.price = result->getNumber("price"); offer.timestamp = result->getNumber("created") + marketOfferDuration; - offer.counter = result->getNumber("id") & 0xFFFF; + offer.counter = (result->getNumber("id") ^ 0xABCDEF) & 0xFFFF; if (result->getNumber("anonymous") == 0) { offer.playerName = result->getString("player_name"); } else { @@ -112,7 +112,7 @@ MarketOfferList IOMarket::getOwnOffers(MarketAction_t action, uint32_t playerId) offer.amount = result->getNumber("amount"); offer.price = result->getNumber("price"); offer.timestamp = result->getNumber("created") + marketOfferDuration; - offer.counter = result->getNumber("id") & 0xFFFF; + offer.counter = (result->getNumber("id") ^ 0xABCDEF) & 0xFFFF; offer.itemId = result->getNumber("itemtype"); offer.tier = getTierFromDatabaseTable(result->getString("tier")); offerList.push_back(offer); @@ -262,7 +262,7 @@ MarketOfferEx IOMarket::getOfferByCounter(uint32_t timestamp, uint16_t counter) const int32_t created = timestamp - g_configManager().getNumber(MARKET_OFFER_DURATION); std::ostringstream query; - query << "SELECT `id`, `sale`, `itemtype`, `amount`, `created`, `price`, `player_id`, `anonymous`, `tier`, (SELECT `name` FROM `players` WHERE `id` = `player_id`) AS `player_name` FROM `market_offers` WHERE `created` = " << created << " AND (`id` & 65535) = " << counter << " LIMIT 1"; + query << "SELECT `id`, `sale`, `itemtype`, `amount`, `created`, `price`, `player_id`, `anonymous`, `tier`, (SELECT `name` FROM `players` WHERE `id` = `player_id`) AS `player_name` FROM `market_offers` WHERE `created` = " << created << " AND ((`id` ^ 0xABCDEF) & 65535) = " << counter << " LIMIT 1"; DBResult_ptr result = Database::getInstance().storeQuery(query.str()); if (!result) { @@ -273,7 +273,7 @@ MarketOfferEx IOMarket::getOfferByCounter(uint32_t timestamp, uint16_t counter) offer.id = result->getNumber("id"); offer.type = static_cast(result->getNumber("sale")); offer.amount = result->getNumber("amount"); - offer.counter = result->getNumber("id") & 0xFFFF; + offer.counter = (result->getNumber("id") ^ 0xABCDEF) & 0xFFFF; offer.timestamp = result->getNumber("created"); offer.price = result->getNumber("price"); offer.itemId = result->getNumber("itemtype");