aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Handlers/QueryHandler.cpp10
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.cpp14
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.h17
-rw-r--r--src/server/game/Server/Packets/TradePackets.h2
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
-rw-r--r--src/server/game/Server/WorldSession.h5
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);