TrinityCore
QueryPackets.h
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef QueryPackets_h__
19#define QueryPackets_h__
20
21#include "Packet.h"
23#include "NPCHandler.h"
24#include "ObjectGuid.h"
25#include "PacketUtilities.h"
26#include "Position.h"
27#include "RaceMask.h"
28#include "SharedDefines.h"
29#include "UnitDefines.h"
30#include <array>
31
32class Player;
33struct QuestPOIData;
34
35namespace WorldPackets
36{
37 namespace Query
38 {
39 class QueryCreature final : public ClientPacket
40 {
41 public:
43
44 void Read() override;
45
47 };
48
50 {
52 float Scale = 1.0f;
53 float Probability = 1.0f;
54 };
55
57 {
58 float TotalProbability = 0.0f;
59 std::vector<CreatureXDisplay> CreatureDisplay;
60 };
61
63 {
64 std::string Title;
65 std::string TitleAlt;
66 std::string CursorName;
71 float HpMulti = 0.0f;
72 float EnergyMulti = 0.0f;
73 bool Leader = false;
74 std::vector<int32> QuestItems;
75 std::vector<int32> QuestCurrencies;
84 std::array<uint32, 2> Flags = { };
85 std::array<uint32, 2> ProxyCreatureID = { };
86 std::array<std::string, 4> Name = { };
87 std::array<std::string, 4> NameAlt = { };
88 };
89
91 {
92 public:
94
95 WorldPacket const* Write() override;
96
97 bool Allow = false;
100 };
101
103 {
106 };
107
108 class QueryPlayerNames final : public ClientPacket
109 {
110 public:
112
113 void Read() override;
114
116 };
117
119 {
120 bool Initialize(ObjectGuid const& guid, Player const* player = nullptr);
121
122 bool IsDeleted = false;
126 std::string Name;
127 uint64 GuildClubMemberID = 0; // same as bgs.protocol.club.v1.MemberId.unique_id
135 };
136
138 {
141 std::string_view Unused3;
142 };
143
145 {
147 uint8 Result = 0; // 0 - full packet, != 0 - only guid
150 };
151
153 {
154 public:
156
157 WorldPacket const* Write() override;
158
159 std::vector<NameCacheLookupResult> Players;
160 };
161
162 class QueryPageText final : public ClientPacket
163 {
164 public:
166
167 void Read() override;
168
171 };
172
174 {
175 public:
177
178 WorldPacket const* Write() override;
179
181 {
186 std::string Text;
187 };
188
190 bool Allow = false;
191 std::vector<PageTextInfo> Pages;
192 };
193
194 class QueryNPCText final : public ClientPacket
195 {
196 public:
198
199 void Read() override;
200
203 };
204
206 {
207 public:
209
210 WorldPacket const* Write() override;
211
213 bool Allow = false;
214 std::array<float, MAX_NPC_TEXT_OPTIONS> Probabilities = { };
215 std::array<uint32, MAX_NPC_TEXT_OPTIONS> BroadcastTextID = { };
216 };
217
218 class QueryGameObject final : public ClientPacket
219 {
220 public:
222
223 void Read() override;
224
227 };
228
230 {
231 std::string Name[4];
232 std::string IconName;
233 std::string CastBarCaption;
234 std::string UnkString;
237 std::array<uint32, MAX_GAMEOBJECT_DATA> Data = { };
238 float Size = 0.0f;
239 std::vector<int32> QuestItems;
241 };
242
244 {
245 public:
247
248 WorldPacket const* Write() override;
249
252 bool Allow = false;
254 };
255
257 {
258 public:
260
261 void Read() override;
262
264 };
265
266 class CorpseLocation final : public ServerPacket
267 {
268 public:
270
271 WorldPacket const* Write() override;
272
278 bool Valid = false;
279 };
280
282 {
283 public:
285
286 void Read() override;
287
290 };
291
293 {
294 public:
296
297 WorldPacket const* Write() override;
298
301 float Facing = 0.0f;
302 };
303
304 class QueryTime final : public ClientPacket
305 {
306 public:
307 QueryTime(WorldPacket&& packet) : ClientPacket(CMSG_QUERY_TIME, std::move(packet)) { }
308
309 void Read() override { }
310 };
311
312 class QueryTimeResponse final : public ServerPacket
313 {
314 public:
316
317 WorldPacket const* Write() override;
318
320 };
321
322 class QuestPOIQuery final : public ClientPacket
323 {
324 public:
326
327 void Read() override;
328
330 std::array<int32, 175> MissingQuestPOIs = { };
331 };
332
334 {
335 public:
337
338 WorldPacket const* Write() override;
339
340 std::vector<QuestPOIData const*> QuestPOIDataStats;
341 };
342
344 {
345 public:
347
348 void Read() override;
349
351 };
352
354 {
356 std::vector<int32> NPCs;
357 };
358
360 {
361 public:
363
364 WorldPacket const* Write() override;
365
366 std::vector<QuestCompletionNPC> QuestCompletionNPCs;
367 };
368
369 class QueryPetName final : public ClientPacket
370 {
371 public:
373
374 void Read() override;
375
377 };
378
380 {
381 public:
383
384 WorldPacket const* Write() override;
385
387 bool Allow = false;
388
389 bool HasDeclined = false;
392 std::string Name;
393 };
394
395 class ItemTextQuery final : public ClientPacket
396 {
397 public:
399
400 void Read() override;
401
403 };
404
406 {
407 std::string Text;
408 };
409
411 {
412 public:
414
415 WorldPacket const* Write() override;
416
418 bool Valid = false;
420 };
421
422 class QueryRealmName final : public ClientPacket
423 {
424 public:
426
427 void Read() override;
428
430 };
431
432 class RealmQueryResponse final : public ServerPacket
433 {
434 public:
436
437 WorldPacket const* Write() override;
438
442 };
443
444 ByteBuffer& operator<<(ByteBuffer& data, PlayerGuidLookupHint const& lookupHint);
445 ByteBuffer& operator<<(ByteBuffer& data, PlayerGuidLookupData const& lookupData);
446 }
447}
448
449ByteBuffer& operator<<(ByteBuffer& data, QuestPOIData const& questPOIData);
450
451#endif // QueryPackets_h__
uint8_t uint8
Definition: Define.h:144
int32_t int32
Definition: Define.h:138
uint64_t uint64
Definition: Define.h:141
uint32_t uint32
Definition: Define.h:142
std::optional< T > Optional
Optional helper class to wrap optional values within.
Definition: Optional.h:25
ByteBuffer & operator<<(ByteBuffer &data, QuestPOIData const &questPOIData)
@ RACE_NONE
Definition: RaceMask.h:27
@ CLASS_NONE
@ GENDER_NONE
CreatureFamily
CreatureType
WorldPacket const * Write() override
TaggedPosition<::Position::XYZ > Position
Definition: QueryPackets.h:275
TaggedPosition<::Position::XYZ > Position
Definition: QueryPackets.h:300
WorldPacket const * Write() override
ItemTextQuery(WorldPacket &&packet)
Definition: QueryPackets.h:398
QueryCorpseTransport(WorldPacket &&packet)
Definition: QueryPackets.h:284
WorldPacket const * Write() override
QueryCreature(WorldPacket &&packet)
Definition: QueryPackets.h:42
WorldPacket const * Write() override
QueryGameObject(WorldPacket &&packet)
Definition: QueryPackets.h:221
WorldPacket const * Write() override
WorldPacket const * Write() override
std::array< float, MAX_NPC_TEXT_OPTIONS > Probabilities
Definition: QueryPackets.h:214
std::array< uint32, MAX_NPC_TEXT_OPTIONS > BroadcastTextID
Definition: QueryPackets.h:215
QueryNPCText(WorldPacket &&packet)
Definition: QueryPackets.h:197
std::vector< PageTextInfo > Pages
Definition: QueryPackets.h:191
WorldPacket const * Write() override
QueryPageText(WorldPacket &&packet)
Definition: QueryPackets.h:165
WorldPacket const * Write() override
QueryPetName(WorldPacket &&packet)
Definition: QueryPackets.h:372
std::vector< NameCacheLookupResult > Players
Definition: QueryPackets.h:159
WorldPacket const * Write() override
QueryPlayerNames(WorldPacket &&packet)
Definition: QueryPackets.h:111
Array< ObjectGuid, 50 > Players
Definition: QueryPackets.h:115
QueryRealmName(WorldPacket &&packet)
Definition: QueryPackets.h:425
WorldPacket const * Write() override
QueryTime(WorldPacket &&packet)
Definition: QueryPackets.h:307
std::vector< QuestCompletionNPC > QuestCompletionNPCs
Definition: QueryPackets.h:366
WorldPacket const * Write() override
std::vector< QuestPOIData const * > QuestPOIDataStats
Definition: QueryPackets.h:340
std::array< int32, 175 > MissingQuestPOIs
Definition: QueryPackets.h:330
QuestPOIQuery(WorldPacket &&packet)
Definition: QueryPackets.h:325
WorldPackets::Auth::VirtualRealmNameInfo NameInfo
Definition: QueryPackets.h:441
WorldPacket const * Write() override
@ CMSG_QUERY_PAGE_TEXT
Definition: Opcodes.h:648
@ CMSG_QUERY_REALM_NAME
Definition: Opcodes.h:657
@ CMSG_QUERY_GAME_OBJECT
Definition: Opcodes.h:642
@ CMSG_QUERY_QUEST_COMPLETION_NPCS
Definition: Opcodes.h:654
@ CMSG_QUEST_POI_QUERY
Definition: Opcodes.h:674
@ CMSG_QUERY_CREATURE
Definition: Opcodes.h:641
@ CMSG_ITEM_TEXT_QUERY
Definition: Opcodes.h:444
@ CMSG_QUERY_NPC_TEXT
Definition: Opcodes.h:647
@ CMSG_QUERY_TIME
Definition: Opcodes.h:659
@ CMSG_QUERY_PET_NAME
Definition: Opcodes.h:650
@ CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT
Definition: Opcodes.h:638
@ CMSG_QUERY_PLAYER_NAMES
Definition: Opcodes.h:651
@ CMSG_QUERY_CORPSE_TRANSPORT
Definition: Opcodes.h:639
@ SMSG_QUERY_GAME_OBJECT_RESPONSE
Definition: Opcodes.h:1776
@ SMSG_QUEST_COMPLETION_NPC_RESPONSE
Definition: Opcodes.h:1790
@ SMSG_QUERY_PAGE_TEXT_RESPONSE
Definition: Opcodes.h:1782
@ SMSG_QUERY_PET_NAME_RESPONSE
Definition: Opcodes.h:1784
@ SMSG_CORPSE_TRANSPORT_QUERY
Definition: Opcodes.h:1169
@ SMSG_QUERY_ITEM_TEXT_RESPONSE
Definition: Opcodes.h:1780
@ SMSG_QUERY_NPC_TEXT_RESPONSE
Definition: Opcodes.h:1781
@ SMSG_CORPSE_LOCATION
Definition: Opcodes.h:1167
@ SMSG_REALM_QUERY_RESPONSE
Definition: Opcodes.h:1833
@ SMSG_QUERY_TIME_RESPONSE
Definition: Opcodes.h:1789
@ SMSG_QUERY_CREATURE_RESPONSE
Definition: Opcodes.h:1775
@ SMSG_QUEST_POI_QUERY_RESPONSE
Definition: Opcodes.h:1805
@ SMSG_QUERY_PLAYER_NAMES_RESPONSE
Definition: Opcodes.h:1785
ByteBuffer & operator<<(ByteBuffer &data, PlayerGuidLookupHint const &lookupHint)
STL namespace.
std::vector< CreatureXDisplay > CreatureDisplay
Definition: QueryPackets.h:59
std::array< uint32, 2 > Flags
Definition: QueryPackets.h:84
CreatureDisplayStats Display
Definition: QueryPackets.h:70
std::array< std::string, 4 > Name
Definition: QueryPackets.h:86
std::vector< int32 > QuestItems
Definition: QueryPackets.h:74
std::vector< int32 > QuestCurrencies
Definition: QueryPackets.h:75
std::array< std::string, 4 > NameAlt
Definition: QueryPackets.h:87
std::array< uint32, 2 > ProxyCreatureID
Definition: QueryPackets.h:85
Optional< NameCacheUnused920 > Unused920
Definition: QueryPackets.h:149
Optional< PlayerGuidLookupData > Data
Definition: QueryPackets.h:148
bool Initialize(ObjectGuid const &guid, Player const *player=nullptr)
Optional< uint32 > VirtualRealmAddress
current realm (?) (identifier made from the Index, BattleGroup and Region)
Definition: QueryPackets.h:104
Optional< uint32 > NativeRealmAddress
original realm (?) (identifier made from the Index, BattleGroup and Region)
Definition: QueryPackets.h:105