diff options
Diffstat (limited to 'src/server/game/Handlers/TradeHandler.cpp')
-rwxr-xr-x | src/server/game/Handlers/TradeHandler.cpp | 47 |
1 files changed, 22 insertions, 25 deletions
diff --git a/src/server/game/Handlers/TradeHandler.cpp b/src/server/game/Handlers/TradeHandler.cpp index c42ef3ef94a..318325b4e57 100755 --- a/src/server/game/Handlers/TradeHandler.cpp +++ b/src/server/game/Handlers/TradeHandler.cpp @@ -519,28 +519,8 @@ void WorldSession::HandleUnacceptTradeOpcode(WorldPacket& /*recvPacket*/) my_trade->SetAccepted(false, true); } -void WorldSession::HandleBeginTradeOpcode(WorldPacket& recvPacket) +void WorldSession::HandleBeginTradeOpcode(WorldPacket& /*recvPacket*/) { -/* - TODO: Need to verify - - BitStream mask = recvPacket.ReadBitStream(8); - - ByteBuffer bytes(8, true); - - recvPacket.ReadXorByte(mask[0], bytes[5]); - recvPacket.ReadXorByte(mask[4], bytes[2]); - recvPacket.ReadXorByte(mask[5], bytes[3]); - recvPacket.ReadXorByte(mask[2], bytes[4]); - recvPacket.ReadXorByte(mask[7], bytes[1]); - recvPacket.ReadXorByte(mask[3], bytes[0]); - recvPacket.ReadXorByte(mask[1], bytes[6]); - recvPacket.ReadXorByte(mask[6], bytes[7]); - - uint64 tradeGuid = BitConverter::ToUInt64(bytes); -*/ - recvPacket.rfinish(); - TradeData* my_trade = _player->m_trade; if (!my_trade) return; @@ -559,15 +539,32 @@ void WorldSession::SendCancelTrade() void WorldSession::HandleCancelTradeOpcode(WorldPacket& /*recvPacket*/) { - // sended also after LOGOUT COMPLETE + // sent also after LOGOUT COMPLETE if (_player) // needed because STATUS_LOGGEDIN_OR_RECENTLY_LOGGOUT _player->TradeCancel(true); } void WorldSession::HandleInitiateTradeOpcode(WorldPacket& recvPacket) { - uint64 ID; - recvPacket >> ID; + ObjectGuid guid; + + guid[0] = recvPacket.ReadBit(); + guid[3] = recvPacket.ReadBit(); + guid[5] = recvPacket.ReadBit(); + guid[1] = recvPacket.ReadBit(); + guid[4] = recvPacket.ReadBit(); + guid[6] = recvPacket.ReadBit(); + guid[7] = recvPacket.ReadBit(); + guid[2] = recvPacket.ReadBit(); + + recvPacket.ReadByteSeq(guid[7]); + recvPacket.ReadByteSeq(guid[4]); + recvPacket.ReadByteSeq(guid[3]); + recvPacket.ReadByteSeq(guid[5]); + recvPacket.ReadByteSeq(guid[1]); + recvPacket.ReadByteSeq(guid[2]); + recvPacket.ReadByteSeq(guid[6]); + recvPacket.ReadByteSeq(guid[0]); if (GetPlayer()->m_trade) return; @@ -602,7 +599,7 @@ void WorldSession::HandleInitiateTradeOpcode(WorldPacket& recvPacket) return; } - Player* pOther = ObjectAccessor::FindPlayer(ID); + Player* pOther = ObjectAccessor::FindPlayer(guid); if (!pOther) { |