aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/ItemHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Handlers/ItemHandler.cpp')
-rw-r--r--src/server/game/Handlers/ItemHandler.cpp24
1 files changed, 4 insertions, 20 deletions
diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp
index ec546fcbf97..bd12131c11b 100644
--- a/src/server/game/Handlers/ItemHandler.cpp
+++ b/src/server/game/Handlers/ItemHandler.cpp
@@ -549,28 +549,12 @@ void WorldSession::HandleBuyItemInSlotOpcode(WorldPacket& recvData)
else
return; // cheating
- uint8 bag = NULL_BAG; // init for case invalid bagGUID
-
- // find bag slot by bag guid
- if (bagguid == _player->GetGUID())
+ uint8 bag = NULL_BAG;
+ if (bagguid == GetPlayer()->GetGUID()) // The client sends the player guid when trying to store an item in the default backpack
bag = INVENTORY_SLOT_BAG_0;
+ else if (Item* bagItem = _player->GetItemByGuid(bagguid))
+ bag = bagItem->GetSlot();
else
- {
- for (int i = INVENTORY_SLOT_BAG_START; i < INVENTORY_SLOT_BAG_END; ++i)
- {
- if (Bag* pBag = _player->GetBagByPos(i))
- {
- if (bagguid == pBag->GetGUID())
- {
- bag = i;
- break;
- }
- }
- }
- }
-
- // bag not found, cheating?
- if (bag == NULL_BAG)
return;
GetPlayer()->BuyItemFromVendorSlot(vendorguid, slot, item, count, bag, bagslot);