diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index 32bc474739a..3ab975a54c4 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -2048,9 +2048,14 @@ void WorldSession::HandleAreaSpiritHealerQueryOpcode(WorldPacket& recvData) SF_LOG_DEBUG("network", "WORLD: CMSG_AREA_SPIRIT_HEALER_QUERY"); Battleground* bg = _player->GetBattleground(); + ObjectGuid guid; - recvData.ReadGuidMask(guid, 5, 6, 0, 4, 1, 2, 7, 3); + uint8 bitOrder[8] = { 5, 6, 0, 4, 1, 2, 7, 3 }; + recvData.ReadBitInOrder(guid, bitOrder); + + recvData.FlushBits(); + recvData.ReadGuidBytes(guid, 0, 2, 6, 7, 1, 5, 3, 4); Creature* unit = GetPlayer()->GetMap()->GetCreature(guid); diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index e8f9fb0650c..18fea28c539 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -55,6 +55,7 @@ void OpcodeTable::InitializeClientTable() DEFINE_OPCODE_HANDLER(CMSG_ADD_IGNORE, 0x0D20, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAddIgnoreOpcode ); // 5.4.8 18414 DEFINE_OPCODE_HANDLER(CMSG_ALTER_APPEARANCE, 0x07F0, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAlterAppearance ); // 5.4.8 18414 DEFINE_OPCODE_HANDLER(CMSG_AREATRIGGER, 0x1C44, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAreaTriggerOpcode ); // 5.4.8 18414 + DEFINE_OPCODE_HANDLER(CMSG_AREA_SPIRIT_HEALER_QUERY, 0x03F1, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleAreaSpiritHealerQueryOpcode); DEFINE_OPCODE_HANDLER(CMSG_AREA_SPIRIT_HEALER_QUEUE, 0x12D8, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAreaSpiritHealerQueueOpcode ); // 5.4.8 18414 DEFINE_OPCODE_HANDLER(CMSG_ATTACKSTOP, 0x0345, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleAttackStopOpcode ); // 5.4.8 18414 DEFINE_OPCODE_HANDLER(CMSG_ATTACKSWING, 0x02E7, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleAttackSwingOpcode ); // 5.4.8 18414 @@ -459,7 +460,6 @@ void OpcodeTable::InitializeClientTable() /* //UNHANDLED - DEFINE_OPCODE_HANDLER(CMSG_AREA_SPIRIT_HEALER_QUERY, 0x03F1, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleAreaSpiritHealerQueryOpcode); DEFINE_OPCODE_HANDLER(CMSG_AUCTION_LIST_PENDING_SALES, 0x0000, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleAuctionListPendingSales); DEFINE_OPCODE_HANDLER(CMSG_BATTLEGROUND_PLAYER_POSITIONS, 0x0000, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleBattlegroundPlayerPositionsOpcode); DEFINE_OPCODE_HANDLER(CMSG_BUG, 0x0000, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleBugOpcode); diff --git a/src/server/shared/Packets/ByteBuffer.h b/src/server/shared/Packets/ByteBuffer.h index c730738af2d..bc1310b2416 100644 --- a/src/server/shared/Packets/ByteBuffer.h +++ b/src/server/shared/Packets/ByteBuffer.h @@ -176,6 +176,12 @@ class ByteBuffer return (bit != 0); } + void ReadBitInOrder(ObjectGuid& guid, uint8 order[8]) + { + for (uint8 i = 0; i < 8; ++i) + guid[order[i]] = ReadBit(); + } + bool ReadBit() { ++_bitpos;