diff options
author | Shauren <shauren.trinity@gmail.com> | 2012-01-31 14:02:59 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2012-01-31 14:02:59 +0100 |
commit | 1b676b1ccf2fc8c0aca9e0502164a7c68daf9b7c (patch) | |
tree | 5acb269e2f39f7749fb37287ef34c667457d0ad8 /src/server/game/Handlers/MiscHandler.cpp | |
parent | 37b66384f3d905fb8de506aae48237900a1b6065 (diff) |
Core/Items: Some work on hotfixes and SMSG_DB_REPLY
Diffstat (limited to 'src/server/game/Handlers/MiscHandler.cpp')
-rwxr-xr-x | src/server/game/Handlers/MiscHandler.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index 0b3a675e762..04ad3e745dc 100755 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -1748,3 +1748,48 @@ void WorldSession::HandleInstanceLockResponse(WorldPacket& recvPacket) _player->SetPendingBind(0, 0); } + +void WorldSession::HandleRequestHotfix(WorldPacket& recvPacket) +{ + uint32 type, count; + recvPacket >> type >> count; + + ByteBuffer* guidBytes = new ByteBuffer[count]; + BitStream* mask = new BitStream[count]; + for (uint32 i = 0; i < count; ++i) + { + mask[i] = recvPacket.ReadBitStream(8); + guidBytes[i].resize(8); // damn c++ not allowing to use non-default constructor with new[] + } + + uint32 entry; + uint64 guid; + for (uint32 i = 0; i < count; ++i) + { + recvPacket >> entry; + recvPacket.ReadXorByte(mask[i][7], guidBytes[i][2]); + recvPacket.ReadXorByte(mask[i][4], guidBytes[i][6]); + recvPacket.ReadXorByte(mask[i][1], guidBytes[i][3]); + recvPacket.ReadXorByte(mask[i][2], guidBytes[i][0]); + recvPacket.ReadXorByte(mask[i][3], guidBytes[i][5]); + recvPacket.ReadXorByte(mask[i][0], guidBytes[i][7]); + recvPacket.ReadXorByte(mask[i][6], guidBytes[i][1]); + recvPacket.ReadXorByte(mask[i][5], guidBytes[i][4]); + guid = BitConverter::ToUInt64(guidBytes[i]); + + switch (type) + { + case DB2_REPLY_ITEM: + SendItemDb2Reply(entry); + break; + case DB2_REPLY_SPARSE: + SendItemSparseDb2Reply(entry); + break; + default: + break; + } + } + + delete[] guidBytes; + delete[] mask; +} |