Core/Packets: CMSG_NAME_QUERY (QueryPlayerName) handler

This commit is contained in:
DDuarte
2014-11-10 05:53:05 +00:00
parent 4b0a97af92
commit ec7923c2e6
6 changed files with 38 additions and 12 deletions

View File

@@ -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*/)

View File

@@ -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;
}

View File

@@ -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;
};
}
}

View File

@@ -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 { }
};

View File

@@ -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 );

View File

@@ -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);