diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Handlers/QueryHandler.cpp | 10 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/CharacterPackets.cpp | 14 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/CharacterPackets.h | 17 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/TradePackets.h | 2 | ||||
| -rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Server/WorldSession.h | 5 |
6 files changed, 38 insertions, 12 deletions
diff --git a/src/server/game/Handlers/QueryHandler.cpp b/src/server/game/Handlers/QueryHandler.cpp index 7ee9b7db982..8a2cedab4d7 100644 --- a/src/server/game/Handlers/QueryHandler.cpp +++ b/src/server/game/Handlers/QueryHandler.cpp @@ -64,15 +64,9 @@ void WorldSession::SendNameQueryOpcode(ObjectGuid guid) SendPacket(&data); } -void WorldSession::HandleNameQueryOpcode(WorldPacket& recvData) +void WorldSession::HandleNameQueryOpcode(WorldPackets::Character::QueryPlayerName& queryPlayerName) { - ObjectGuid guid; - recvData >> guid; - - // This is disable by default to prevent lots of console spam - // TC_LOG_INFO("network", "HandleNameQueryOpcode %u", guid); - - SendNameQueryOpcode(guid); + SendNameQueryOpcode(queryPlayerName.Player); } void WorldSession::HandleQueryTimeOpcode(WorldPacket & /*recvData*/) diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp index 4027f4c7cac..2adbd3666b0 100644 --- a/src/server/game/Server/Packets/CharacterPackets.cpp +++ b/src/server/game/Server/Packets/CharacterPackets.cpp @@ -303,3 +303,17 @@ void WorldPackets::Character::LoadingScreenNotify::Read() _worldPacket >> MapID; Showing = _worldPacket.ReadBit(); } + +void WorldPackets::Character::QueryPlayerName::Read() +{ + _worldPacket >> Player; + + Hint.VirtualRealmAddress.HasValue = _worldPacket.ReadBit(); + Hint.NativeRealmAddress.HasValue = _worldPacket.ReadBit(); + + if (Hint.VirtualRealmAddress.HasValue) + _worldPacket >> Hint.VirtualRealmAddress; + + if (Hint.NativeRealmAddress.HasValue) + _worldPacket >> Hint.NativeRealmAddress; +} diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h index 9ac13111241..e85a8aaccb9 100644 --- a/src/server/game/Server/Packets/CharacterPackets.h +++ b/src/server/game/Server/Packets/CharacterPackets.h @@ -25,6 +25,12 @@ namespace WorldPackets { namespace Character { + struct PlayerGuidLookupHint + { + public Optional<uint32> VirtualRealmAddress; ///< current realm (?) (identifier made from the Index, BattleGroup and Region) + public Optional<uint32> NativeRealmAddress; ///< original realm (?) (identifier made from the Index, BattleGroup and Region) + }; + struct CharacterCreateInfo { /// User specified variables @@ -360,6 +366,17 @@ namespace WorldPackets int32 MapID = -1; bool Showing = false; }; + + class QueryPlayerName final : public ClientPacket + { + public: + QueryPlayerName(WorldPacket&& packet) : ClientPacket(CMSG_NAME_QUERY, std::move(packet)) { } + + void Read() override; + + ObjectGuid Player; + PlayerGuidLookupHint Hint; + }; } } diff --git a/src/server/game/Server/Packets/TradePackets.h b/src/server/game/Server/Packets/TradePackets.h index e63a22eaebc..aff21ff32dc 100644 --- a/src/server/game/Server/Packets/TradePackets.h +++ b/src/server/game/Server/Packets/TradePackets.h @@ -27,7 +27,7 @@ namespace WorldPackets class CancelTrade final : public ClientPacket { public: - CancelTrade(WorldPacket&& packet) : ClientPacket(CMSG_CANCEL_TRADE, std::move(packet) { } + CancelTrade(WorldPacket&& packet) : ClientPacket(CMSG_CANCEL_TRADE, std::move(packet)) { } void Read() override { } }; diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 21bec7db0ab..504e17788fd 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -447,7 +447,7 @@ void OpcodeTable::Initialize() DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_STOP, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_TIME_SKIPPED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleMoveTimeSkippedOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_MOVE_WATER_WALK_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMoveWaterWalkAck ); - DEFINE_OPCODE_HANDLER_OLD(CMSG_NAME_QUERY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleNameQueryOpcode ); + DEFINE_OPCODE(CMSG_NAME_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Character::QueryPlayerName, &WorldSession::HandleNameQueryOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_NEXT_CINEMATIC_CAMERA, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleNextCinematicCamera ); DEFINE_OPCODE_HANDLER_OLD(CMSG_NPC_TEXT_QUERY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleNpcTextQueryOpcode ); DEFINE_OPCODE_HANDLER_OLD(CMSG_OBJECT_UPDATE_FAILED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleObjectUpdateFailedOpcode ); diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 34df6e6429a..c09511eb259 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -90,6 +90,7 @@ namespace WorldPackets class LogoutRequest; class LogoutCancel; class LoadingScreenNotify; + class QueryPlayerName; } namespace Guild @@ -452,7 +453,7 @@ class WorldSession void HandleCharCreateCallback(PreparedQueryResult result, WorldPackets::Character::CharacterCreateInfo* createInfo); void HandlePlayerLoginOpcode(WorldPackets::Character::PlayerLogin& playerLogin); void HandleContinuePlayerLogin(); - void HandleLoadScreenOpcode(WorldPacket& recvPacket); + void HandleLoadScreenOpcode(WorldPackets::Character::LoadingScreenNotify& loadingScreenNotify); void HandlePlayerLogin(LoginQueryHolder * holder); void HandleCharRenameOpcode(WorldPacket& recvData); void HandleCharRenameCallBack(PreparedQueryResult result, WorldPackets::Character::CharacterRenameInfo const* renameInfo); @@ -568,7 +569,7 @@ class WorldSession void HandleMeetingStoneInfo(WorldPacket& recPacket); void HandleGameobjectReportUse(WorldPacket& recvPacket); - void HandleNameQueryOpcode(WorldPacket& recvPacket); + void HandleNameQueryOpcode(WorldPackets::Character::QueryPlayerName& queryPlayerName); void HandleQueryTimeOpcode(WorldPacket& recvPacket); |
