diff options
author | Nay <dnpd.dd@gmail.com> | 2012-08-04 19:11:13 +0100 |
---|---|---|
committer | Nay <dnpd.dd@gmail.com> | 2012-08-04 19:11:13 +0100 |
commit | da2db28cab50d5d9d4f1864b6bfd7b47aaf648b9 (patch) | |
tree | 4e8369244061da69b93e14ef8886c72d063ea3c8 /src/server/game/Handlers/ItemHandler.cpp | |
parent | fc318a2da7f83468461896ae072ed36b736dc8e0 (diff) |
Core/PacketIO: Add some (possible) missing FlushBits
Diffstat (limited to 'src/server/game/Handlers/ItemHandler.cpp')
-rwxr-xr-x | src/server/game/Handlers/ItemHandler.cpp | 40 |
1 files changed, 21 insertions, 19 deletions
diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index a273857f081..bd799a7a2fa 100755 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -670,7 +670,7 @@ void WorldSession::HandleBuyItemInSlotOpcode(WorldPacket & recv_data) bag = INVENTORY_SLOT_BAG_0; else bagItem = _player->GetItemByGuid(bagguid); - + if (bagItem && bagItem->IsBag()) bag = bagItem->GetSlot(); @@ -684,10 +684,10 @@ void WorldSession::HandleBuyItemInSlotOpcode(WorldPacket & recv_data) void WorldSession::HandleBuyItemOpcode(WorldPacket& recv_data) { sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_BUY_ITEM"); - uint64 vendorguid, bagGuid; + uint64 vendorguid, bagGuid; uint32 item, slot, count; uint8 itemType; // 1 = item, 2 = currency - int8 bagSlot; + int8 bagSlot; recv_data >> vendorguid >> itemType >> item >> slot >> count >> bagGuid >> bagSlot; @@ -696,12 +696,12 @@ void WorldSession::HandleBuyItemOpcode(WorldPacket& recv_data) --slot; else return; // cheating - + Item* bagItem = _player->GetItemByGuid(bagGuid); - + if (bagItem && bagItem->IsBag()) bag = bagItem->GetSlot(); - + GetPlayer()->BuyItemFromVendorSlot(vendorguid, slot, item, count, bag, bagSlot); } @@ -1642,9 +1642,9 @@ void WorldSession::HandleReforgeItemOpcode(WorldPacket& recvData) ObjectGuid guid; uint32 bag; Player* player = GetPlayer(); - + recvData >> reforgeEntry >> slot >> bag; - + guid[2] = recvData.ReadBit(); guid[6] = recvData.ReadBit(); guid[3] = recvData.ReadBit(); @@ -1653,7 +1653,9 @@ void WorldSession::HandleReforgeItemOpcode(WorldPacket& recvData) guid[0] = recvData.ReadBit(); guid[7] = recvData.ReadBit(); guid[5] = recvData.ReadBit(); - + + recvData.FlushBits(); + recvData.ReadByteSeq(guid[2]); recvData.ReadByteSeq(guid[3]); recvData.ReadByteSeq(guid[6]); @@ -1669,16 +1671,16 @@ void WorldSession::HandleReforgeItemOpcode(WorldPacket& recvData) SendReforgeResult(false); return; } - - Item* item = player->GetItemByPos(bag, slot); - + + Item* item = player->GetItemByPos(bag, slot); + if (!item) { sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: HandleReforgeItemOpcode - Player (Guid: %u Name: %s) tried to reforge an invalid/non-existant item.", player->GetGUIDLow(), player->GetName()); SendReforgeResult(false); return; } - + if (!reforgeEntry) { // Reset the item @@ -1686,25 +1688,25 @@ void WorldSession::HandleReforgeItemOpcode(WorldPacket& recvData) SendReforgeResult(true); return; } - + if (!sItemReforgeStore.LookupEntry(reforgeEntry)) { sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: HandleReforgeItemOpcode - Player (Guid: %u Name: %s) tried to reforge an item with invalid reforge entry (%u).", player->GetGUIDLow(), player->GetName(), reforgeEntry); SendReforgeResult(false); return; } - + if (player->HasEnoughMoney(uint64(item->GetSpecialPrice()))) // cheating { SendReforgeResult(false); return; } - + player->ModifyMoney(-int64(item->GetSpecialPrice())); - + item->SetEnchantment(REFORGE_ENCHANTMENT_SLOT, reforgeEntry, 0, 0); - + SendReforgeResult(true); - + // ToDo: Apply and remove the destination/source stats to the player } |