mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-02-19 00:20:39 +01:00
Core/Packets: converted SMSG_QUERY_PLAYER_NAME_RESPONSE to packet class
This commit is contained in:
@@ -35,34 +35,16 @@
|
||||
void WorldSession::SendNameQueryOpcode(ObjectGuid guid)
|
||||
{
|
||||
Player* player = ObjectAccessor::FindConnectedPlayer(guid);
|
||||
CharacterCacheEntry const* nameData = sCharacterCache->GetCharacterCacheByGuid(guid);
|
||||
|
||||
WorldPacket data(SMSG_NAME_QUERY_RESPONSE, (8+1+1+1+1+1+10));
|
||||
data << guid.WriteAsPacked();
|
||||
if (!nameData)
|
||||
{
|
||||
data << uint8(1); // name unknown
|
||||
SendPacket(&data);
|
||||
return;
|
||||
}
|
||||
WorldPackets::Query::QueryPlayerNameResponse response;
|
||||
response.Player = guid;
|
||||
|
||||
data << uint8(0); // name known
|
||||
data << nameData->Name; // played name
|
||||
data << uint8(0); // realm name - only set for cross realm interaction (such as Battlegrounds)
|
||||
data << uint8(nameData->Race);
|
||||
data << uint8(nameData->Sex);
|
||||
data << uint8(nameData->Class);
|
||||
|
||||
if (DeclinedName const* names = (player ? player->GetDeclinedNames() : nullptr))
|
||||
{
|
||||
data << uint8(1); // Name is declined
|
||||
for (uint8 i = 0; i < MAX_DECLINED_NAME_CASES; ++i)
|
||||
data << names->name[i];
|
||||
}
|
||||
if (response.Data.Initialize(guid, player))
|
||||
response.Result = RESPONSE_SUCCESS; // name known
|
||||
else
|
||||
data << uint8(0); // Name is not declined
|
||||
response.Result = RESPONSE_FAILURE; // name unknown
|
||||
|
||||
SendPacket(&data);
|
||||
SendPacket(response.Write());
|
||||
}
|
||||
|
||||
void WorldSession::HandleNameQueryOpcode(WorldPacket& recvData)
|
||||
|
||||
@@ -175,6 +175,9 @@ bool WorldPackets::Query::PlayerGuidLookupData::Initialize(ObjectGuid const& gui
|
||||
Sex = player->getGender();
|
||||
ClassID = player->getClass();
|
||||
Level = player->getLevel();
|
||||
|
||||
if (DeclinedName const* names = player->GetDeclinedNames())
|
||||
DeclinedNames = *names;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -187,3 +190,30 @@ bool WorldPackets::Query::PlayerGuidLookupData::Initialize(ObjectGuid const& gui
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::PlayerGuidLookupData const& lookupData)
|
||||
{
|
||||
data << lookupData.Name;
|
||||
data << lookupData.RealmName;
|
||||
data << uint8(lookupData.Race);
|
||||
data << uint8(lookupData.Sex);
|
||||
data << uint8(lookupData.ClassID);
|
||||
|
||||
data << bool(lookupData.DeclinedNames.has_value());
|
||||
if (lookupData.DeclinedNames.has_value())
|
||||
for (uint8 i = 0; i < MAX_DECLINED_NAME_CASES; ++i)
|
||||
data << lookupData.DeclinedNames->name[i];
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::Query::QueryPlayerNameResponse::Write()
|
||||
{
|
||||
_worldPacket << Player.WriteAsPacked();
|
||||
_worldPacket << uint8(Result);
|
||||
|
||||
if (Result == RESPONSE_SUCCESS)
|
||||
_worldPacket << Data;
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#include "GameObjectData.h"
|
||||
#include "DB2Stores.h"
|
||||
#include "ObjectGuid.h"
|
||||
#include "Optional.h"
|
||||
#include "QuestDef.h"
|
||||
#include "SharedDefines.h"
|
||||
|
||||
@@ -168,10 +169,24 @@ namespace WorldPackets
|
||||
bool Initialize(ObjectGuid const& guid, Player const* player = nullptr);
|
||||
|
||||
std::string Name;
|
||||
std::string RealmName;
|
||||
uint8 Race = RACE_NONE;
|
||||
uint8 Sex = GENDER_NONE;
|
||||
uint8 ClassID = CLASS_NONE;
|
||||
uint8 Level = 0;
|
||||
Optional<DeclinedName> DeclinedNames;
|
||||
};
|
||||
|
||||
class QueryPlayerNameResponse final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
QueryPlayerNameResponse() : ServerPacket(SMSG_QUERY_PLAYER_NAME_RESPONSE, 8+1+1+1+1+1+10) { }
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
ObjectGuid Player;
|
||||
uint8 Result = 0; // 0 - full packet, != 0 - only guid
|
||||
PlayerGuidLookupData Data;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1069,7 +1069,6 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UPDATE_WALK_SPEED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_WATER_WALK, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_MULTIPLE_PACKETS, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_NAME_QUERY_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEW_TAXI_PATH, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEW_WORLD, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEW_WORLD_ABORT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
@@ -1134,6 +1133,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_CREDIT, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_LOG_DATA, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_OPTIONS_ENABLED, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PLAYER_NAME_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_QUESTS_COMPLETED_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_TIME_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_GIVER_OFFER_REWARD_MESSAGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
|
||||
@@ -1023,7 +1023,6 @@ enum OpcodeServer
|
||||
SMSG_MOVE_UPDATE_WALK_SPEED = 0x54A2,
|
||||
SMSG_MOVE_WATER_WALK = 0x75B1,
|
||||
SMSG_MULTIPLE_PACKETS = 0x6736,
|
||||
SMSG_NAME_QUERY_RESPONSE = 0x6E04,
|
||||
SMSG_NEW_TAXI_PATH = 0x4B35,
|
||||
SMSG_NEW_WORLD = 0x79B1,
|
||||
SMSG_NEW_WORLD_ABORT = 0x14B7,
|
||||
@@ -1091,6 +1090,7 @@ enum OpcodeServer
|
||||
SMSG_PVP_CREDIT = 0x6015,
|
||||
SMSG_PVP_LOG_DATA = 0x5CB2,
|
||||
SMSG_PVP_OPTIONS_ENABLED = 0x50A1,
|
||||
SMSG_QUERY_PLAYER_NAME_RESPONSE = 0x6E04,
|
||||
SMSG_QUERY_QUESTS_COMPLETED_RESPONSE = 0x6314,
|
||||
SMSG_QUERY_TIME_RESPONSE = 0x2124,
|
||||
SMSG_QUEST_GIVER_OFFER_REWARD_MESSAGE = 0x2427,
|
||||
|
||||
Reference in New Issue
Block a user