mirror of
https://github.com/OpenFusionProject/OpenFusion.git
synced 2026-05-27 06:40:03 +00:00
Fix checks for trade item register/unregister
This commit is contained in:
@@ -340,6 +340,9 @@ static void tradeConfirmCancel(CNSocket* sock, CNPacketData* data) {
|
|||||||
static void tradeRegisterItem(CNSocket* sock, CNPacketData* data) {
|
static void tradeRegisterItem(CNSocket* sock, CNPacketData* data) {
|
||||||
sP_CL2FE_REQ_PC_TRADE_ITEM_REGISTER* pacdat = (sP_CL2FE_REQ_PC_TRADE_ITEM_REGISTER*)data->buf;
|
sP_CL2FE_REQ_PC_TRADE_ITEM_REGISTER* pacdat = (sP_CL2FE_REQ_PC_TRADE_ITEM_REGISTER*)data->buf;
|
||||||
|
|
||||||
|
if (pacdat->Item.iInvenNum < 0 || pacdat->Item.iInvenNum >= AINVEN_COUNT)
|
||||||
|
return; // inventory bounds check
|
||||||
|
|
||||||
if (pacdat->Item.iSlotNum < 0 || pacdat->Item.iSlotNum > 4)
|
if (pacdat->Item.iSlotNum < 0 || pacdat->Item.iSlotNum > 4)
|
||||||
return; // sanity check, there are only 5 trade slots
|
return; // sanity check, there are only 5 trade slots
|
||||||
|
|
||||||
@@ -353,7 +356,13 @@ static void tradeRegisterItem(CNSocket* sock, CNPacketData* data) {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
Player* plr = PlayerManager::getPlayer(sock);
|
Player* plr = PlayerManager::getPlayer(sock);
|
||||||
|
if (!plr->isTrading)
|
||||||
|
return;
|
||||||
|
|
||||||
Player* plr2 = PlayerManager::getPlayer(otherSock);
|
Player* plr2 = PlayerManager::getPlayer(otherSock);
|
||||||
|
if (!plr2->isTrading)
|
||||||
|
return;
|
||||||
|
|
||||||
plr->Trade[pacdat->Item.iSlotNum] = pacdat->Item;
|
plr->Trade[pacdat->Item.iSlotNum] = pacdat->Item;
|
||||||
plr->isTradeConfirm = false;
|
plr->isTradeConfirm = false;
|
||||||
plr2->isTradeConfirm = false;
|
plr2->isTradeConfirm = false;
|
||||||
@@ -397,7 +406,13 @@ static void tradeUnregisterItem(CNSocket* sock, CNPacketData* data) {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
Player* plr = PlayerManager::getPlayer(sock);
|
Player* plr = PlayerManager::getPlayer(sock);
|
||||||
|
if (!plr->isTrading)
|
||||||
|
return;
|
||||||
|
|
||||||
Player* plr2 = PlayerManager::getPlayer(otherSock);
|
Player* plr2 = PlayerManager::getPlayer(otherSock);
|
||||||
|
if (!plr2->isTrading)
|
||||||
|
return;
|
||||||
|
|
||||||
plr->isTradeConfirm = false;
|
plr->isTradeConfirm = false;
|
||||||
plr2->isTradeConfirm = false;
|
plr2->isTradeConfirm = false;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user