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 _worldPacket << SizedString::BitsSize<7>(Info->GuildName);
47
48 for (GuildInfo::GuildInfoRank const& rank : Info->Ranks)
49 {
50 _worldPacket << uint32(rank.RankID);
51 _worldPacket << uint32(rank.RankOrder);
52 _worldPacket << SizedString::BitsSize<7>(rank.RankName);
54
55 _worldPacket << SizedString::Data(rank.RankName);
56 }
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 << uint64(rosterMemberData.GuildClubMemberID);
91 data << uint8(rosterMemberData.RaceID);
92 data << int32(rosterMemberData.TimerunningSeasonID);
93
94 data << SizedString::BitsSize<6>(rosterMemberData.Name);
95 data << SizedString::BitsSize<8>(rosterMemberData.Note);
96 data << SizedString::BitsSize<8>(rosterMemberData.OfficerNote);
97 data << Bits<1>(rosterMemberData.Authenticated);
98 data.FlushBits();
99
100 data << rosterMemberData.DungeonScore;
101
102 data << SizedString::Data(rosterMemberData.Name);
103 data << SizedString::Data(rosterMemberData.Note);
104 data << SizedString::Data(rosterMemberData.OfficerNote);
105
106 return data;
107}
108
110{
114 _worldPacket << Size<uint32>(MemberData);
115 _worldPacket << SizedString::BitsSize<11>(WelcomeText);
116 _worldPacket << SizedString::BitsSize<11>(InfoText);
118
119 for (GuildRosterMemberData const& member : MemberData)
120 _worldPacket << member;
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 _worldPacket << Bits<1>(FullUpdate);
623
624 for (GuildBankTabInfo const& tab : TabInfo)
625 {
626 _worldPacket << int32(tab.TabIndex);
627 _worldPacket << SizedString::BitsSize<7>(tab.Name);
628 _worldPacket << SizedString::BitsSize<9>(tab.Icon);
630
631 _worldPacket << SizedString::Data(tab.Name);
632 _worldPacket << SizedString::Data(tab.Icon);
633 }
634
635 for (GuildBankItemInfo const& item : ItemInfo)
636 {
637 _worldPacket << int32(item.Slot);
638 _worldPacket << int32(item.Count);
639 _worldPacket << int32(item.EnchantmentID);
640 _worldPacket << int32(item.Charges);
641 _worldPacket << int32(item.OnUseEnchantmentID);
642 _worldPacket << int32(item.Flags);
643 _worldPacket << item.Item;
644 _worldPacket << BitsSize<2>(item.SocketEnchant);
645 _worldPacket << Bits<1>(item.Locked);
647
648 for (Item::ItemGemData const& socketEnchant : item.SocketEnchant)
649 _worldPacket << socketEnchant;
650 }
651
652 return &_worldPacket;
653}
654
666
678
690
699
708
721
734
747
760
767
777
787
789{
790 _worldPacket >> Tab;
791}
792
794{
796 _worldPacket << Size<uint32>(Entry);
799
800 for (GuildBankLogEntry const& logEntry : Entry)
801 {
802 _worldPacket << logEntry.PlayerGUID;
803 _worldPacket << uint32(logEntry.TimeOffset);
804 _worldPacket << int8(logEntry.EntryType);
805
806 _worldPacket << OptionalInit(logEntry.Money);
807 _worldPacket << OptionalInit(logEntry.ItemID);
808 _worldPacket << OptionalInit(logEntry.Count);
809 _worldPacket << OptionalInit(logEntry.OtherTab);
811
812 if (logEntry.Money)
813 _worldPacket << uint64(*logEntry.Money);
814
815 if (logEntry.ItemID)
816 _worldPacket << int32(*logEntry.ItemID);
817
818 if (logEntry.Count)
819 _worldPacket << int32(*logEntry.Count);
820
821 if (logEntry.OtherTab)
822 _worldPacket << int8(*logEntry.OtherTab);
823 }
824
827
828 return &_worldPacket;
829}
830
835
837{
839
840 _worldPacket << SizedString::BitsSize<14>(Text);
842
844
845 return &_worldPacket;
846}
847
849{
850 _worldPacket >> Tab;
851 _worldPacket >> SizedString::BitsSize<14>(TabText);
852
854}
855
860
862{
863 data << int32(newsEvent.Id);
864 data << newsEvent.CompletedDate;
865 data << int8(newsEvent.Type);
866 data << int32(newsEvent.Flags);
867
868 for (std::size_t i = 0; i < newsEvent.Data.size(); ++i)
869 data << int32(newsEvent.Data[i]);
870
871 data << newsEvent.MemberGuid;
872 data << Size<uint32>(newsEvent.MemberList);
873
874 for (ObjectGuid const& memberGuid : newsEvent.MemberList)
875 data << memberGuid;
876
877 data << OptionalInit(newsEvent.Item);
878 data.FlushBits();
879
880 if (newsEvent.Item)
881 data << *newsEvent.Item; // WorldPackets::Item::ItemInstance
882
883 return data;
884}
885
887{
888 _worldPacket << Size<uint32>(NewsEvents);
889 for (GuildNewsEvent const& newsEvent : NewsEvents)
890 _worldPacket << newsEvent;
891
892 return &_worldPacket;
893}
894
901
903{
904 _worldPacket >> SizedString::BitsSize<9>(NewMasterName);
905
907}
908
910{
911 for (int32 i = 0; i < GUILD_CHALLENGES_TYPES; ++i)
913
914 for (int32 i = 0; i < GUILD_CHALLENGES_TYPES; ++i)
916
917 for (int32 i = 0; i < GUILD_CHALLENGES_TYPES; ++i)
919
920 for (int32 i = 0; i < GUILD_CHALLENGES_TYPES; ++i)
921 _worldPacket << int32(Gold[i]);
922
923 return &_worldPacket;
924}
925
935
942
944{
945 _worldPacket >> Size<uint32>(AchievementIDs);
946
947 for (uint32& achievementID : AchievementIDs)
948 _worldPacket >> achievementID;
949}
950
952{
954 _worldPacket << SizedString::BitsSize<7>(GuildName);
956
958
959 return &_worldPacket;
960}
961}
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:578
void ResetBitPos()
Definition ByteBuffer.h:152
void FlushBits()
Definition ByteBuffer.h:141
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::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< std::array< int32, 2 > > RaceMask
MythicPlus::DungeonScoreSummary DungeonScore
GuildRosterProfessionData Profession[2]