diff options
Diffstat (limited to 'src/server/game/Handlers/ItemHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/ItemHandler.cpp | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index 1ec4e134126..335bb9ce48c 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -310,31 +310,32 @@ void WorldSession::HandleDestroyItemOpcode(WorldPackets::Item::DestroyItem& dest _player->DestroyItem(destroyItem.ContainerId, destroyItem.SlotNum, true); } -void WorldSession::HandleReadItem(WorldPacket& recvData) +void WorldSession::HandleReadItem(WorldPackets::Item::ReadItem& readItem) { - uint8 bag, slot; - recvData >> bag >> slot; - - Item* pItem = _player->GetItemByPos(bag, slot); - - if (pItem && pItem->GetTemplate()->GetPageText()) + Item* item = _player->GetItemByPos(readItem.PackSlot, readItem.Slot); + if (item && item->GetTemplate()->GetPageText()) { - WorldPacket data; - - InventoryResult msg = _player->CanUseItem(pItem); + InventoryResult msg = _player->CanUseItem(item); if (msg == EQUIP_ERR_OK) { - data.Initialize(SMSG_READ_ITEM_RESULT_OK, 8); + WorldPackets::Item::ReadItemResultOK packet; + packet.Item = item->GetGUID(); + SendPacket(packet.Write()); + TC_LOG_INFO("network", "STORAGE: Item page sent"); } else { - data.Initialize(SMSG_READ_ITEM_RESULT_FAILED, 8); + /// @todo: 6.x research new values + /*WorldPackets::Item::ReadItemResultFailed packet; + packet.Item = item->GetGUID(); + packet.Subcode = ??; + packet.Delay = ??; + SendPacket(packet.Write());*/ + TC_LOG_INFO("network", "STORAGE: Unable to read item"); - _player->SendEquipError(msg, pItem, NULL); + _player->SendEquipError(msg, item, NULL); } - data << pItem->GetGUID(); - SendPacket(&data); } else _player->SendEquipError(EQUIP_ERR_ITEM_NOT_FOUND, NULL, NULL); |