aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
authorVincent-Michael <Vincent_Michael@gmx.de>2015-04-18 19:17:19 +0200
committerVincent-Michael <Vincent_Michael@gmx.de>2015-04-18 19:17:48 +0200
commitee057d3a8d924692171b07acab51aaed2a33bf16 (patch)
treeb55512ba7c3b65f2fe70d6025d75dede53626820 /src/server/game/Server
parenta1fe3cccd80336d2a3eaaa9a25f33759de345a7b (diff)
Core/PacketIO: Updated and enabled CMSG_QUERY_PET_NAME / SMSG_QUERY_PET_NAME_RESPONSE for WoD
Diffstat (limited to 'src/server/game/Server')
-rw-r--r--src/server/game/Server/Packets/QueryPackets.cpp30
-rw-r--r--src/server/game/Server/Packets/QueryPackets.h26
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp4
-rw-r--r--src/server/game/Server/WorldSession.h5
4 files changed, 61 insertions, 4 deletions
diff --git a/src/server/game/Server/Packets/QueryPackets.cpp b/src/server/game/Server/Packets/QueryPackets.cpp
index 9ac9d79a41f..40019ced69e 100644
--- a/src/server/game/Server/Packets/QueryPackets.cpp
+++ b/src/server/game/Server/Packets/QueryPackets.cpp
@@ -434,3 +434,33 @@ WorldPacket const* WorldPackets::Query::QuestCompletionNPCResponse::Write()
return &_worldPacket;
}
+
+void WorldPackets::Query::QueryPetName::Read()
+{
+ _worldPacket >> UnitGUID;
+}
+
+WorldPacket const* WorldPackets::Query::QueryPetNameResponse::Write()
+{
+ _worldPacket << UnitGUID;
+ _worldPacket.WriteBit(Allow);
+
+ if (Allow)
+ {
+ _worldPacket.WriteBits(Name.length(), 8);
+ _worldPacket.WriteBit(HasDeclined);
+
+ for (uint8 i = 0; i < MAX_DECLINED_NAME_CASES; ++i)
+ _worldPacket.WriteBits(DeclinedNames.name[i].length(), 7);
+
+ for (uint8 i = 0; i < MAX_DECLINED_NAME_CASES; ++i)
+ _worldPacket.WriteString(DeclinedNames.name[i]);
+
+ _worldPacket << Timestamp;
+ _worldPacket.WriteString(Name);
+ }
+
+ _worldPacket.FlushBits();
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/QueryPackets.h b/src/server/game/Server/Packets/QueryPackets.h
index 8e9613019c8..a5d7e5de8c4 100644
--- a/src/server/game/Server/Packets/QueryPackets.h
+++ b/src/server/game/Server/Packets/QueryPackets.h
@@ -392,6 +392,32 @@ namespace WorldPackets
std::vector<QuestCompletionNPC> QuestCompletionNPCs;
};
+
+ class QueryPetName final : public ClientPacket
+ {
+ public:
+ QueryPetName(WorldPacket&& packet) : ClientPacket(CMSG_QUERY_PET_NAME, std::move(packet)) { }
+
+ void Read() override;
+
+ ObjectGuid UnitGUID;
+ };
+
+ class QueryPetNameResponse final : public ServerPacket
+ {
+ public:
+ QueryPetNameResponse() : ServerPacket(SMSG_QUERY_PET_NAME_RESPONSE, 16 + 1) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid UnitGUID;
+ bool Allow = false;
+
+ bool HasDeclined = false;
+ DeclinedName DeclinedNames;
+ uint32 Timestamp = 0;
+ std::string Name;
+ };
}
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 1fe1118fb82..0ee0cc8306a 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -631,7 +631,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_QUERY_NPC_TEXT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Query::QueryNPCText, &WorldSession::HandleNpcTextQueryOpcode);
DEFINE_HANDLER(CMSG_QUERY_PAGE_TEXT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Query::QueryPageText, &WorldSession::HandleQueryPageText);
DEFINE_HANDLER(CMSG_QUERY_PETITION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Petition::QueryPetition, &WorldSession::HandleQueryPetition);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_QUERY_PET_NAME, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandlePetNameQuery );
+ DEFINE_HANDLER(CMSG_QUERY_PET_NAME, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Query::QueryPetName, &WorldSession::HandleQueryPetName);
DEFINE_HANDLER(CMSG_QUERY_PLAYER_NAME, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Query::QueryPlayerName, &WorldSession::HandleNameQueryOpcode);
DEFINE_HANDLER(CMSG_QUERY_QUEST_COMPLETION_NPCS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Query::QueryQuestCompletionNPCs, &WorldSession::HandleQueryQuestCompletionNPCs);
DEFINE_HANDLER(CMSG_QUERY_QUEST_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Quest::QueryQuestInfo, &WorldSession::HandleQuestQueryOpcode);
@@ -1508,7 +1508,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_NPC_TEXT_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PAGE_TEXT_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PETITION_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PET_NAME_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PET_NAME_RESPONSE, 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_QUEST_INFO_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_TIME_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index 69cc071a2c4..7917c9f0a44 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -363,6 +363,7 @@ namespace WorldPackets
class QueryCorpseLocationFromClient;
class QueryCorpseTransport;
class QueryTime;
+ class QueryPetName;
class QuestPOIQuery;
class QueryQuestCompletionNPCs;
}
@@ -766,7 +767,7 @@ class WorldSession
void HandleClientCastFlags(WorldPacket& recvPacket, uint8 castFlags, SpellCastTargets& targets);
// Pet
- void SendPetNameQuery(ObjectGuid guid, uint32 petnumber);
+ void SendPetNameQuery(ObjectGuid guid);
void SendStablePet(ObjectGuid guid);
void SendStablePetCallback(PreparedQueryResult result, ObjectGuid guid);
void SendPetStableResult(uint8 guid);
@@ -1270,7 +1271,7 @@ class WorldSession
void HandlePetAction(WorldPacket& recvData);
void HandlePetStopAttack(WorldPacket& recvData);
void HandlePetActionHelper(Unit* pet, ObjectGuid guid1, uint32 spellid, uint16 flag, ObjectGuid guid2, float x, float y, float z);
- void HandlePetNameQuery(WorldPacket& recvData);
+ void HandleQueryPetName(WorldPackets::Query::QueryPetName& packet);
void HandlePetSetAction(WorldPacket& recvData);
void HandlePetAbandon(WorldPacket& recvData);
void HandlePetRename(WorldPacket& recvData);