TrinityCore
Loading...
Searching...
No Matches
GuildPackets.cpp
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#include "GuildPackets.h"
19#include "PacketOperators.h"
20
21namespace WorldPackets::Guild
22{
28
30{
34
35 if (Info)
36 {
37 _worldPacket << Info->GuildGUID;
38 _worldPacket << uint32(Info->VirtualRealmAddress);
39 _worldPacket << Size<uint32>(Info->Ranks);
40 _worldPacket << uint32(Info->EmblemStyle);
41 _worldPacket << uint32(Info->EmblemColor);
42 _worldPacket << uint32(Info->BorderStyle);
43 _worldPacket << uint32(Info->BorderColor);
44 _worldPacket << uint32(Info->BackgroundColor);
45 for (GuildInfo::GuildInfoRank const& rank : Info->Ranks)
46 {
47 _worldPacket << uint32(rank.RankID);
48 _worldPacket << uint32(rank.RankOrder);
49 _worldPacket << SizedString::BitsSize<7>(rank.RankName);
51
52 _worldPacket << SizedString::Data(rank.RankName);
53 }
54
55 _worldPacket << SizedString::BitsSize<7>(Info->GuildName);
57
58 _worldPacket << SizedString::Data(Info->GuildName);
59 }
60
61 return &_worldPacket;
62}
63
64ByteBuffer& operator<<(ByteBuffer& data, GuildRosterProfessionData const& rosterProfessionData)
65{
66 data << int32(rosterProfessionData.DbID);
67 data << int32(rosterProfessionData.Rank);
68 data << int32(rosterProfessionData.Step);
69
70 return data;
71}
72
73ByteBuffer& operator<<(ByteBuffer& data, GuildRosterMemberData const& rosterMemberData)
74{
75 data << rosterMemberData.Guid;
76 data << int32(rosterMemberData.RankID);
77 data << int32(rosterMemberData.AreaID);
78 data << int32(rosterMemberData.PersonalAchievementPoints);
79 data << int32(rosterMemberData.GuildReputation);
80 data << float(rosterMemberData.LastSave);
81
82 for (uint8 i = 0; i < 2; i++)
83 data << rosterMemberData.Profession[i];
84
85 data << uint32(rosterMemberData.VirtualRealmAddress);
86 data << uint8(rosterMemberData.Status);
87 data << uint8(rosterMemberData.Level);
88 data << uint8(rosterMemberData.ClassID);
89 data << uint8(rosterMemberData.Gender);
90 data << rosterMemberData.DungeonScore;
91 data << uint64(rosterMemberData.GuildClubMemberID);
92 data << uint8(rosterMemberData.RaceID);
93 data << int32(rosterMemberData.TimerunningSeasonID);
94
95 data << SizedString::BitsSize<6>(rosterMemberData.Name);
96 data << SizedString::BitsSize<8>(rosterMemberData.Note);
97 data << SizedString::BitsSize<8>(rosterMemberData.OfficerNote);
98 data << Bits<1>(rosterMemberData.Authenticated);
99 data.FlushBits();
100
101 data << SizedString::Data(rosterMemberData.Name);
102 data << SizedString::Data(rosterMemberData.Note);
103 data << SizedString::Data(rosterMemberData.OfficerNote);
104
105 return data;
106}
107
109{
113 _worldPacket << Size<uint32>(MemberData);
114
115 for (GuildRosterMemberData const& member : MemberData)
116 _worldPacket << member;
117
118 _worldPacket << SizedString::BitsSize<11>(WelcomeText);
119 _worldPacket << SizedString::BitsSize<11>(InfoText);
121
124
125 return &_worldPacket;
126}
127
129{
130 _worldPacket >> SizedString::BitsSize<11>(MotdText);
131
133}
134
136{
139
140 _worldPacket << SizedString::BitsSize<8>(Name);
142
144
145 return &_worldPacket;
146}
147
152
158
160{
161 _worldPacket >> Bits<1>(Allow);
162}
163
165{
166 _worldPacket >> SizedString::BitsSize<9>(Name);
168
170
171 if (ArenaTeam)
173}
174
200
202{
204 _worldPacket << Bits<1>(AFK);
205 _worldPacket << Bits<1>(DND);
207
208 return &_worldPacket;
209}
210
212{
215
216 _worldPacket << SizedString::BitsSize<6>(Name);
217 _worldPacket << Bits<1>(LoggedOn);
219
221
222 return &_worldPacket;
223}
224
226{
227 _worldPacket << SizedString::BitsSize<11>(MotdText);
229
231
232 return &_worldPacket;
233}
234
236{
239
240 _worldPacket << SizedString::BitsSize<6>(Name);
242
244
245 return &_worldPacket;
246}
247
249{
251
252 return &_worldPacket;
253}
254
261
263{
264 _worldPacket.reserve(4 + Entry.size() * 38);
265
266 _worldPacket << Size<uint32>(Entry);
267
268 for (GuildEventEntry const& entry : Entry)
269 {
270 _worldPacket << entry.PlayerGUID;
271 _worldPacket << entry.OtherGUID;
272 _worldPacket << uint8(entry.TransactionType);
273 _worldPacket << uint8(entry.RankID);
274 _worldPacket << uint32(entry.TransactionDate);
275 }
276
277 return &_worldPacket;
278}
279
281{
282 _worldPacket << Bits<1>(Removed);
283 _worldPacket << SizedString::BitsSize<6>(LeaverName);
284
285 if (Removed)
286 {
287 _worldPacket << SizedString::BitsSize<6>(RemoverName);
288
292 }
293
297
298 return &_worldPacket;
299}
300
302{
307 _worldPacket << Size<uint32>(Tab);
308
309 for (GuildRankTabPermissions const& tab : Tab)
310 {
311 _worldPacket << int32(tab.Flags);
312 _worldPacket << int32(tab.WithdrawItemLimit);
313 }
314
315 return &_worldPacket;
316}
317
319{
324
325 for (uint8 i = 0; i < GUILD_BANK_MAX_TABS; i++)
326 {
329 }
330
332 _worldPacket >> SizedString::BitsSize<7>(RankName);
333
335
337}
338
340{
341 _worldPacket << Bits<1>(SelfPromoted);
342 _worldPacket << SizedString::BitsSize<6>(OldLeaderName);
343 _worldPacket << SizedString::BitsSize<6>(NewLeaderName);
345
350
353
354 return &_worldPacket;
355}
356
358{
360
361 _worldPacket << SizedString::BitsSize<7>(Name);
362 _worldPacket << SizedString::BitsSize<9>(Icon);
364
367
368 return &_worldPacket;
369}
370
372{
373 _worldPacket << Tab;
374
375 return &_worldPacket;
376}
377
379{
380 data << uint8(rankData.RankID);
381 data << int32(rankData.RankOrder);
382 data << uint32(rankData.Flags);
383 data << uint32(rankData.WithdrawGoldLimit);
384
385 for (uint8 i = 0; i < GUILD_BANK_MAX_TABS; i++)
386 {
387 data << uint32(rankData.TabFlags[i]);
388 data << uint32(rankData.TabWithdrawItemLimit[i]);
389 }
390
391 data << SizedString::BitsSize<7>(rankData.RankName);
392 data.FlushBits();
393
394 data << SizedString::Data(rankData.RankName);
395
396 return data;
397}
398
400{
401 _worldPacket >> SizedString::BitsSize<7>(Name);
402
405}
406
412
417
422
424{
425 _worldPacket << Size<uint32>(Ranks);
426
427 for (GuildRankData const& rank : Ranks)
428 _worldPacket << rank;
429
430 return &_worldPacket;
431}
432
434{
438
439 _worldPacket << Bits<1>(Promote);
441
442 return &_worldPacket;
443}
444
446{
448 _worldPacket >> Bits<1>(ShiftUp);
449}
450
452{
453 _worldPacket >> SizedString::BitsSize<11>(InfoText);
454
456}
457
459{
461
462 _worldPacket >> SizedString::BitsSize<8>(Note);
463 _worldPacket >> Bits<1>(IsPublic);
464
466}
467
469{
470 _worldPacket.reserve(16 + 2 + Note.size());
471
473
474 _worldPacket << SizedString::BitsSize<8>(Note);
475 _worldPacket << Bits<1>(IsPublic);
477
479
480 return &_worldPacket;
481}
482
487
492
497
499{
500 _worldPacket >> SizedString::BitsSize<7>(NewName);
501
503}
504
506{
507 _worldPacket << Bits<1>(FlagSet);
509
510 return &_worldPacket;
511}
512
517
519{
523 _worldPacket << Bits<1>(InGuildParty);
525
526 return &_worldPacket;
527}
528
530{
531 data << uint32(rewardItem.ItemID);
532 data << uint32(rewardItem.AchievementLogic);
533 data << Size<uint32>(rewardItem.AchievementsRequired);
534 for (int32 raceMask : rewardItem.RaceMask.RawValue)
535 data << int32(raceMask);
536 data << int32(rewardItem.MinGuildLevel);
537 data << int32(rewardItem.MinGuildRep);
538 data << uint64(rewardItem.Cost);
539
540 for (std::size_t i = 0; i < rewardItem.AchievementsRequired.size(); i++)
541 data << uint32(rewardItem.AchievementsRequired[i]);
542
543 return data;
544}
545
550
552{
554 _worldPacket << Size<uint32>(RewardItems);
555
556 for (GuildRewardItem const& item : RewardItems)
557 _worldPacket << item;
558
559 return &_worldPacket;
560}
561
563{
565 _worldPacket >> Bits<1>(FullUpdate);
566}
567
573
575{
578
580 _worldPacket >> SizedString::BitsSize<7>(Name);
581 _worldPacket >> SizedString::BitsSize<9>(Icon);
582
585}
586
592
594{
596 _worldPacket >> Tab;
597
598 _worldPacket >> Bits<1>(FullUpdate);
599}
600
607
613
615{
619 _worldPacket << Size<uint32>(TabInfo);
620 _worldPacket << Size<uint32>(ItemInfo);
621
622 for (GuildBankTabInfo const& tab : TabInfo)
623 {
624 _worldPacket << int32(tab.TabIndex);
625 _worldPacket << SizedString::BitsSize<7>(tab.Name);
626 _worldPacket << SizedString::BitsSize<9>(tab.Icon);
628
629 _worldPacket << SizedString::Data(tab.Name);
630 _worldPacket << SizedString::Data(tab.Icon);
631 }
632
633 for (GuildBankItemInfo const& item : ItemInfo)
634 {
635 _worldPacket << int32(item.Slot);
636 _worldPacket << item.Item;
637 _worldPacket << int32(item.Count);
638 _worldPacket << int32(item.EnchantmentID);
639 _worldPacket << int32(item.Charges);
640 _worldPacket << int32(item.OnUseEnchantmentID);
641 _worldPacket << int32(item.Flags);
642 _worldPacket << BitsSize<2>(item.SocketEnchant);
643 _worldPacket << Bits<1>(item.Locked);
645
646 for (Item::ItemGemData const& socketEnchant : item.SocketEnchant)
647 _worldPacket << socketEnchant;
648 }
649
650 _worldPacket << Bits<1>(FullUpdate);
652
653 return &_worldPacket;
654}
655
667
679
691
700
709
722
735
748
761
768
778
788
790{
791 _worldPacket >> Tab;
792}
793
795{
797 _worldPacket << Size<uint32>(Entry);
798
799 for (GuildBankLogEntry const& logEntry : Entry)
800 {
801 _worldPacket << logEntry.PlayerGUID;
802 _worldPacket << uint32(logEntry.TimeOffset);
803 _worldPacket << int8(logEntry.EntryType);
804
805 _worldPacket << OptionalInit(logEntry.Money);
806 _worldPacket << OptionalInit(logEntry.ItemID);
807 _worldPacket << OptionalInit(logEntry.Count);
808 _worldPacket << OptionalInit(logEntry.OtherTab);
810
811 if (logEntry.Money)
812 _worldPacket << uint64(*logEntry.Money);
813
814 if (logEntry.ItemID)
815 _worldPacket << int32(*logEntry.ItemID);
816
817 if (logEntry.Count)
818 _worldPacket << int32(*logEntry.Count);
819
820 if (logEntry.OtherTab)
821 _worldPacket << int8(*logEntry.OtherTab);
822 }
823
826
829
830 return &_worldPacket;
831}
832
837
839{
841
842 _worldPacket << SizedString::BitsSize<14>(Text);
844
846
847 return &_worldPacket;
848}
849
851{
852 _worldPacket >> Tab;
853 _worldPacket >> SizedString::BitsSize<14>(TabText);
854
856}
857
862
864{
865 data << int32(newsEvent.Id);
866 data << newsEvent.CompletedDate;
867 data << int8(newsEvent.Type);
868 data << int32(newsEvent.Flags);
869
870 for (std::size_t i = 0; i < newsEvent.Data.size(); ++i)
871 data << int32(newsEvent.Data[i]);
872
873 data << newsEvent.MemberGuid;
874 data << Size<uint32>(newsEvent.MemberList);
875
876 for (ObjectGuid const& memberGuid : newsEvent.MemberList)
877 data << memberGuid;
878
879 data << OptionalInit(newsEvent.Item);
880 data.FlushBits();
881
882 if (newsEvent.Item)
883 data << *newsEvent.Item; // WorldPackets::Item::ItemInstance
884
885 return data;
886}
887
889{
890 _worldPacket << Size<uint32>(NewsEvents);
891 for (GuildNewsEvent const& newsEvent : NewsEvents)
892 _worldPacket << newsEvent;
893
894 return &_worldPacket;
895}
896
903
905{
906 _worldPacket >> SizedString::BitsSize<9>(NewMasterName);
907
909}
910
912{
913 for (int32 i = 0; i < GUILD_CHALLENGES_TYPES; ++i)
915
916 for (int32 i = 0; i < GUILD_CHALLENGES_TYPES; ++i)
918
919 for (int32 i = 0; i < GUILD_CHALLENGES_TYPES; ++i)
921
922 for (int32 i = 0; i < GUILD_CHALLENGES_TYPES; ++i)
923 _worldPacket << int32(Gold[i]);
924
925 return &_worldPacket;
926}
927
937
944
946{
947 _worldPacket >> Size<uint32>(AchievementIDs);
948
949 for (uint32& achievementID : AchievementIDs)
950 _worldPacket >> achievementID;
951}
952
954{
956 _worldPacket << SizedString::BitsSize<7>(GuildName);
958
960
961 return &_worldPacket;
962}
963}
uint8_t uint8
Definition Define.h:156
int8_t int8
Definition Define.h:152
int32_t int32
Definition Define.h:150
uint64_t uint64
Definition Define.h:153
uint32_t uint32
Definition Define.h:154
@ GUILD_BANK_MAX_TABS
Definition Guild.h:54
#define GUILD_CHALLENGES_TYPES
Definition Guild.h:263
void reserve(size_t ressize)
Definition ByteBuffer.h:590
void ResetBitPos()
Definition ByteBuffer.h:153
void FlushBits()
Definition ByteBuffer.h:142
String< 15, Strings::NoHyperlinks > Name
std::vector< GuildBankLogEntry > Entry
WorldPacket const * Write() override
std::vector< GuildBankTabInfo > TabInfo
std::vector< GuildBankItemInfo > ItemInfo
String< 500, Strings::NoHyperlinks > TabText
String< 15, Strings::NoHyperlinks > Name
int32 CurrentCount[GUILD_CHALLENGES_TYPES]
int32 MaxLevelGold[GUILD_CHALLENGES_TYPES]
int32 Gold[GUILD_CHALLENGES_TYPES]
WorldPacket const * Write() override
int32 MaxCount[GUILD_CHALLENGES_TYPES]
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
bool IsPublic
0 == Officer, 1 == Public
WorldPacket const * Write() override
std::vector< GuildNewsEvent > NewsEvents
WorldPacket const * Write() override
WorldPacket const * Write() override
std::vector< GuildRankTabPermissions > Tab
WorldPacket const * Write() override
std::vector< GuildRankData > Ranks
std::vector< GuildRewardItem > RewardItems
WorldPacket const * Write() override
WorldPacket const * Write() override
std::vector< GuildRosterMemberData > MemberData
WorldPacket const * Write() override
String< 31, Strings::NoHyperlinks > Note
bool IsPublic
0 == Officer, 1 == Public
String< 15, Strings::NoHyperlinks > RankName
uint32 TabWithdrawItemLimit[GUILD_BANK_MAX_TABS]
String< 500, Strings::NoHyperlinks > InfoText
String< 255, Strings::NoHyperlinks > MotdText
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket _worldPacket
Definition Packet.h:43
ByteBuffer & operator<<(ByteBuffer &data, GuildRosterProfessionData const &rosterProfessionData)
DataWriter< Container > Data(Container const &value)
OptionalInitWriter< T > OptionalInit(Optional< T > const &value)
std::array< T, N > RawValue
Definition RaceMask.h:95
std::vector< ObjectGuid > MemberList
Optional< Item::ItemInstance > Item
uint32 TabWithdrawItemLimit[GUILD_BANK_MAX_TABS]
uint32 TabFlags[GUILD_BANK_MAX_TABS]
std::vector< uint32 > AchievementsRequired
Trinity::RaceMask< int32, 2 > RaceMask
MythicPlus::DungeonScoreSummary DungeonScore
GuildRosterProfessionData Profession[2]