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.cpp47
1 files changed, 18 insertions, 29 deletions
diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp
index 29fd38f649d..d90cadaa119 100644
--- a/src/server/game/Handlers/ItemHandler.cpp
+++ b/src/server/game/Handlers/ItemHandler.cpp
@@ -684,56 +684,45 @@ void WorldSession::SendListInventory(ObjectGuid vendorGuid)
SendPacket(packet.Write());
}
-void WorldSession::HandleAutoStoreBagItemOpcode(WorldPacket& recvData)
+void WorldSession::HandleAutoStoreBagItemOpcode(WorldPackets::Item::AutoStoreBagItem& packet)
{
- uint32 itemCount = recvData.ReadBits(2);
-
- if (itemCount)
+ if (!packet.Inv.Items.empty())
{
- TC_LOG_ERROR("network", "WORLD: HandleAutoStoreBagItemOpcode - Invalid itemCount (%u)", itemCount);
+ TC_LOG_ERROR("network", "HandleAutoStoreBagItemOpcode - Invalid itemCount (" SZFMTD ")", packet.Inv.Items.size());
return;
}
- /*for (uint32 i = 0; i < itemCount; ++i)
- {
- recvData.read_skip<uint8>();
- recvData.read_skip<uint8>();
- }*/
-
- //TC_LOG_DEBUG("network", "WORLD: CMSG_AUTOSTORE_BAG_ITEM");
- uint8 srcbag, srcslot, dstbag;
+ TC_LOG_DEBUG("network", "HandleAutoStoreBagItemOpcode: receive ContainerSlotA: %u, SlotA: %u, ContainerSlotB: %u",
+ packet.ContainerSlotA, packet.SlotA, packet.ContainerSlotB);
- recvData >> srcbag >> dstbag >> srcslot;
- TC_LOG_DEBUG("network", "STORAGE: receive srcbag = %u, srcslot = %u, dstbag = %u", srcbag, srcslot, dstbag);
-
- Item* pItem = _player->GetItemByPos(srcbag, srcslot);
- if (!pItem)
+ Item* item = _player->GetItemByPos(packet.ContainerSlotA, packet.SlotA);
+ if (!item)
return;
- if (!_player->IsValidPos(dstbag, NULL_SLOT, false)) // can be autostore pos
+ if (!_player->IsValidPos(packet.ContainerSlotB, NULL_SLOT, false)) // can be autostore pos
{
- _player->SendEquipError(EQUIP_ERR_WRONG_SLOT, NULL, NULL);
+ _player->SendEquipError(EQUIP_ERR_WRONG_SLOT);
return;
}
- uint16 src = pItem->GetPos();
+ uint16 src = item->GetPos();
// check unequip potability for equipped items and bank bags
- if (_player->IsEquipmentPos (src) || _player->IsBagPos (src))
+ if (_player->IsEquipmentPos(src) || _player->IsBagPos(src))
{
- InventoryResult msg = _player->CanUnequipItem(src, !_player->IsBagPos (src));
+ InventoryResult msg = _player->CanUnequipItem(src, !_player->IsBagPos(src));
if (msg != EQUIP_ERR_OK)
{
- _player->SendEquipError(msg, pItem, NULL);
+ _player->SendEquipError(msg, item);
return;
}
}
ItemPosCountVec dest;
- InventoryResult msg = _player->CanStoreItem(dstbag, NULL_SLOT, dest, pItem, false);
+ InventoryResult msg = _player->CanStoreItem(packet.ContainerSlotB, NULL_SLOT, dest, item, false);
if (msg != EQUIP_ERR_OK)
{
- _player->SendEquipError(msg, pItem, NULL);
+ _player->SendEquipError(msg, item);
return;
}
@@ -741,12 +730,12 @@ void WorldSession::HandleAutoStoreBagItemOpcode(WorldPacket& recvData)
if (dest.size() == 1 && dest[0].pos == src)
{
// just remove grey item state
- _player->SendEquipError(EQUIP_ERR_INTERNAL_BAG_ERROR, pItem, NULL);
+ _player->SendEquipError(EQUIP_ERR_INTERNAL_BAG_ERROR, item);
return;
}
- _player->RemoveItem(srcbag, srcslot, true);
- _player->StoreItem(dest, pItem, true);
+ _player->RemoveItem(packet.ContainerSlotA, packet.SlotA, true);
+ _player->StoreItem(dest, item, true);
}
void WorldSession::HandleBuyBankSlotOpcode(WorldPacket& recvPacket)