/* * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ #include "GuildPackets.h" void WorldPackets::Guild::QueryGuildInfo::Read() { _worldPacket >> GuildGuid; _worldPacket >> PlayerGuid; } WorldPackets::Guild::QueryGuildInfoResponse::QueryGuildInfoResponse() : ServerPacket(SMSG_QUERY_GUILD_INFO_RESPONSE) { } WorldPacket const* WorldPackets::Guild::QueryGuildInfoResponse::Write() { _worldPacket << GuildGuid; _worldPacket.WriteBit(Info.has_value()); _worldPacket.FlushBits(); if (Info) { _worldPacket << Info->GuildGUID; _worldPacket << uint32(Info->VirtualRealmAddress); _worldPacket << uint32(Info->Ranks.size()); _worldPacket << uint32(Info->EmblemStyle); _worldPacket << uint32(Info->EmblemColor); _worldPacket << uint32(Info->BorderStyle); _worldPacket << uint32(Info->BorderColor); _worldPacket << uint32(Info->BackgroundColor); _worldPacket.WriteBits(Info->GuildName.size(), 7); _worldPacket.FlushBits(); for (GuildInfo::GuildInfoRank const& rank : Info->Ranks) { _worldPacket << uint32(rank.RankID); _worldPacket << uint32(rank.RankOrder); _worldPacket.WriteBits(rank.RankName.size(), 7); _worldPacket.FlushBits(); _worldPacket.WriteString(rank.RankName); } _worldPacket.WriteString(Info->GuildName); } return &_worldPacket; } WorldPacket const* WorldPackets::Guild::GuildRoster::Write() { _worldPacket << int32(NumAccounts); _worldPacket << CreateDate; _worldPacket << int32(GuildFlags); _worldPacket << uint32(MemberData.size()); _worldPacket.WriteBits(WelcomeText.length(), 11); _worldPacket.WriteBits(InfoText.length(), 11); _worldPacket.FlushBits(); for (GuildRosterMemberData const& member : MemberData) _worldPacket << member; _worldPacket.WriteString(WelcomeText); _worldPacket.WriteString(InfoText); return &_worldPacket; } void WorldPackets::Guild::GuildUpdateMotdText::Read() { uint32 textLen = _worldPacket.ReadBits(11); MotdText = _worldPacket.ReadString(textLen); } WorldPacket const* WorldPackets::Guild::GuildCommandResult::Write() { _worldPacket << int32(Result); _worldPacket << int32(Command); _worldPacket << SizedString::BitsSize<8>(Name); _worldPacket.FlushBits(); _worldPacket << SizedString::Data(Name); return &_worldPacket; } void WorldPackets::Guild::AcceptGuildInvite::Read() { _worldPacket >> GuildGuid; } void WorldPackets::Guild::GuildDeclineInvitation::Read() { _worldPacket >> GuildGuid; _worldPacket >> Bits<1>(IsAuto); } void WorldPackets::Guild::DeclineGuildInvites::Read() { Allow = _worldPacket.ReadBit(); } void WorldPackets::Guild::GuildInviteByName::Read() { uint32 nameLen = _worldPacket.ReadBits(9); if (_worldPacket.ReadBit()) ArenaTeam.emplace(); Name = _worldPacket.ReadString(nameLen); if (ArenaTeam) _worldPacket >> *ArenaTeam; } WorldPacket const* WorldPackets::Guild::GuildInvite::Write() { _worldPacket.WriteBits(InviterName.length(), 6); _worldPacket.WriteBits(GuildName.length(), 7); _worldPacket.WriteBits(OldGuildName.length(), 7); _worldPacket.FlushBits(); _worldPacket << uint32(InviterVirtualRealmAddress); _worldPacket << uint32(GuildVirtualRealmAddress); _worldPacket << GuildGUID; _worldPacket << uint32(OldGuildVirtualRealmAddress); _worldPacket << OldGuildGUID; _worldPacket << uint32(EmblemStyle); _worldPacket << uint32(EmblemColor); _worldPacket << uint32(BorderStyle); _worldPacket << uint32(BorderColor); _worldPacket << uint32(Background); _worldPacket << int32(AchievementPoints); _worldPacket.WriteString(InviterName); _worldPacket.WriteString(GuildName); _worldPacket.WriteString(OldGuildName); return &_worldPacket; } ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRosterProfessionData const& rosterProfessionData) { data << int32(rosterProfessionData.DbID); data << int32(rosterProfessionData.Rank); data << int32(rosterProfessionData.Step); return data; } ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRosterMemberData const& rosterMemberData) { data << rosterMemberData.Guid; data << int32(rosterMemberData.RankID); data << int32(rosterMemberData.AreaID); data << int32(rosterMemberData.PersonalAchievementPoints); data << int32(rosterMemberData.GuildReputation); data << float(rosterMemberData.LastSave); for (uint8 i = 0; i < 2; i++) data << rosterMemberData.Profession[i]; data << uint32(rosterMemberData.VirtualRealmAddress); data << uint8(rosterMemberData.Status); data << uint8(rosterMemberData.Level); data << uint8(rosterMemberData.ClassID); data << uint8(rosterMemberData.Gender); data << uint64(rosterMemberData.GuildClubMemberID); data << uint8(rosterMemberData.RaceID); data.WriteBits(rosterMemberData.Name.length(), 6); data.WriteBits(rosterMemberData.Note.length(), 8); data.WriteBits(rosterMemberData.OfficerNote.length(), 8); data.WriteBit(rosterMemberData.Authenticated); data.WriteBit(rosterMemberData.SorEligible); data.FlushBits(); data << rosterMemberData.DungeonScore; data.WriteString(rosterMemberData.Name); data.WriteString(rosterMemberData.Note); data.WriteString(rosterMemberData.OfficerNote); return data; } WorldPacket const* WorldPackets::Guild::GuildEventStatusChange::Write() { _worldPacket << Guid; _worldPacket.WriteBit(AFK); _worldPacket.WriteBit(DND); _worldPacket.FlushBits(); return &_worldPacket; } WorldPacket const* WorldPackets::Guild::GuildEventPresenceChange::Write() { _worldPacket << Guid; _worldPacket << uint32(VirtualRealmAddress); _worldPacket.WriteBits(Name.length(), 6); _worldPacket.WriteBit(LoggedOn); _worldPacket.FlushBits(); _worldPacket.WriteString(Name); return &_worldPacket; } WorldPacket const* WorldPackets::Guild::GuildEventMotd::Write() { _worldPacket.WriteBits(MotdText.length(), 11); _worldPacket.FlushBits(); _worldPacket.WriteString(MotdText); return &_worldPacket; } WorldPacket const* WorldPackets::Guild::GuildEventPlayerJoined::Write() { _worldPacket << Guid; _worldPacket << uint32(VirtualRealmAddress); _worldPacket.WriteBits(Name.length(), 6); _worldPacket.FlushBits(); _worldPacket.WriteString(Name); return &_worldPacket; } WorldPacket const* WorldPackets::Guild::GuildEventRankChanged::Write() { _worldPacket << RankID; return &_worldPacket; } WorldPacket const* WorldPackets::Guild::GuildEventBankMoneyChanged::Write() { _worldPacket << Money; return &_worldPacket; } WorldPacket const* WorldPackets::Guild::GuildEventLogQueryResults::Write() { _worldPacket.reserve(4 + Entry.size() * 38); _worldPacket << uint32(Entry.size()); for (GuildEventEntry const& entry : Entry) { _worldPacket << entry.PlayerGUID; _worldPacket << entry.OtherGUID; _worldPacket << uint8(entry.TransactionType); _worldPacket << uint8(entry.RankID); _worldPacket << uint32(entry.TransactionDate); } return &_worldPacket; } WorldPacket const* WorldPackets::Guild::GuildEventPlayerLeft::Write() { _worldPacket.WriteBit(Removed); _worldPacket.WriteBits(LeaverName.length(), 6); if (Removed) { _worldPacket.WriteBits(RemoverName.length(), 6); _worldPacket << RemoverGUID; _worldPacket << uint32(RemoverVirtualRealmAddress); _worldPacket.WriteString(RemoverName); } _worldPacket << LeaverGUID; _worldPacket << uint32(LeaverVirtualRealmAddress); _worldPacket.WriteString(LeaverName); return &_worldPacket; } WorldPacket const* WorldPackets::Guild::GuildPermissionsQueryResults::Write() { _worldPacket << uint32(RankID); _worldPacket << int32(Flags); _worldPacket << int32(WithdrawGoldLimit); _worldPacket << int32(NumTabs); _worldPacket << uint32(Tab.size()); for (GuildRankTabPermissions const& tab : Tab) { _worldPacket << int32(tab.Flags); _worldPacket << int32(tab.WithdrawItemLimit); } return &_worldPacket; } void WorldPackets::Guild::GuildSetRankPermissions::Read() { _worldPacket >> RankID; _worldPacket >> RankOrder; _worldPacket >> Flags; _worldPacket >> WithdrawGoldLimit; for (uint8 i = 0; i < GUILD_BANK_MAX_TABS; i++) { _worldPacket >> TabFlags[i]; _worldPacket >> TabWithdrawItemLimit[i]; } _worldPacket.ResetBitPos(); uint32 rankNameLen = _worldPacket.ReadBits(7); RankName = _worldPacket.ReadString(rankNameLen); _worldPacket >> OldFlags; } WorldPacket const* WorldPackets::Guild::GuildEventNewLeader::Write() { _worldPacket.WriteBit(SelfPromoted); _worldPacket.WriteBits(OldLeaderName.length(), 6); _worldPacket.WriteBits(NewLeaderName.length(), 6); _worldPacket.FlushBits(); _worldPacket << OldLeaderGUID; _worldPacket << uint32(OldLeaderVirtualRealmAddress); _worldPacket << NewLeaderGUID; _worldPacket << uint32(NewLeaderVirtualRealmAddress); _worldPacket.WriteString(OldLeaderName); _worldPacket.WriteString(NewLeaderName); return &_worldPacket; } WorldPacket const* WorldPackets::Guild::GuildEventTabModified::Write() { _worldPacket << int32(Tab); _worldPacket.WriteBits(Name.length(), 7); _worldPacket.WriteBits(Icon.length(), 9); _worldPacket.FlushBits(); _worldPacket.WriteString(Name); _worldPacket.WriteString(Icon); return &_worldPacket; } WorldPacket const* WorldPackets::Guild::GuildEventTabTextChanged::Write() { _worldPacket << Tab; return &_worldPacket; } ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRankData const& rankData) { data << uint8(rankData.RankID); data << int32(rankData.RankOrder); data << uint32(rankData.Flags); data << uint32(rankData.WithdrawGoldLimit); for (uint8 i = 0; i < GUILD_BANK_MAX_TABS; i++) { data << uint32(rankData.TabFlags[i]); data << uint32(rankData.TabWithdrawItemLimit[i]); } data.WriteBits(rankData.RankName.length(), 7); data.FlushBits(); data.WriteString(rankData.RankName); return data; } void WorldPackets::Guild::GuildAddRank::Read() { uint32 nameLen = _worldPacket.ReadBits(7); _worldPacket.ResetBitPos(); _worldPacket >> RankOrder; Name = _worldPacket.ReadString(nameLen); } void WorldPackets::Guild::GuildAssignMemberRank::Read() { _worldPacket >> Member; _worldPacket >> RankOrder; } void WorldPackets::Guild::GuildDeleteRank::Read() { _worldPacket >> RankOrder; } void WorldPackets::Guild::GuildGetRanks::Read() { _worldPacket >> GuildGUID; } WorldPacket const* WorldPackets::Guild::GuildRanks::Write() { _worldPacket << uint32(Ranks.size()); for (GuildRankData const& rank : Ranks) _worldPacket << rank; return &_worldPacket; } WorldPacket const* WorldPackets::Guild::GuildSendRankChange::Write() { _worldPacket << Officer; _worldPacket << Other; _worldPacket << uint32(RankID); _worldPacket.WriteBit(Promote); _worldPacket.FlushBits(); return &_worldPacket; } void WorldPackets::Guild::GuildShiftRank::Read() { _worldPacket >> RankOrder; ShiftUp = _worldPacket.ReadBit(); } void WorldPackets::Guild::GuildUpdateInfoText::Read() { uint32 textLen = _worldPacket.ReadBits(11); InfoText = _worldPacket.ReadString(textLen); } void WorldPackets::Guild::GuildSetMemberNote::Read() { _worldPacket >> NoteeGUID; uint32 noteLen = _worldPacket.ReadBits(8); IsPublic = _worldPacket.ReadBit(); Note = _worldPacket.ReadString(noteLen); } WorldPacket const* WorldPackets::Guild::GuildMemberUpdateNote::Write() { _worldPacket.reserve(16 + 2 + Note.size()); _worldPacket << Member; _worldPacket.WriteBits(Note.length(), 8); _worldPacket.WriteBit(IsPublic); _worldPacket.FlushBits(); _worldPacket.WriteString(Note); return &_worldPacket; } void WorldPackets::Guild::GuildDemoteMember::Read() { _worldPacket >> Demotee; } void WorldPackets::Guild::GuildPromoteMember::Read() { _worldPacket >> Promotee; } void WorldPackets::Guild::GuildOfficerRemoveMember::Read() { _worldPacket >> Removee; } void WorldPackets::Guild::GuildChangeNameRequest::Read() { uint32 nameLen = _worldPacket.ReadBits(7); NewName = _worldPacket.ReadString(nameLen); } WorldPacket const* WorldPackets::Guild::GuildFlaggedForRename::Write() { _worldPacket.WriteBit(FlagSet); return &_worldPacket; } void WorldPackets::Guild::RequestGuildPartyState::Read() { _worldPacket >> GuildGUID; } WorldPacket const* WorldPackets::Guild::GuildPartyState::Write() { _worldPacket.WriteBit(InGuildParty); _worldPacket.FlushBits(); _worldPacket << int32(NumMembers); _worldPacket << int32(NumRequired); _worldPacket << float(GuildXPEarnedMult); return &_worldPacket; } ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildRewardItem const& rewardItem) { data << uint32(rewardItem.ItemID); data << uint32(rewardItem.AchievementLogic); data << uint32(rewardItem.AchievementsRequired.size()); data << uint64(rewardItem.RaceMask.RawValue); data << int32(rewardItem.MinGuildLevel); data << int32(rewardItem.MinGuildRep); data << uint64(rewardItem.Cost); for (std::size_t i = 0; i < rewardItem.AchievementsRequired.size(); i++) data << uint32(rewardItem.AchievementsRequired[i]); return data; } void WorldPackets::Guild::RequestGuildRewardsList::Read() { _worldPacket >> CurrentVersion; } WorldPacket const* WorldPackets::Guild::GuildRewardList::Write() { _worldPacket << Version; _worldPacket << uint32(RewardItems.size()); for (GuildRewardItem const& item : RewardItems) _worldPacket << item; return &_worldPacket; } void WorldPackets::Guild::GuildBankActivate::Read() { _worldPacket >> Banker; FullUpdate = _worldPacket.ReadBit(); } void WorldPackets::Guild::GuildBankBuyTab::Read() { _worldPacket >> Banker; _worldPacket >> BankTab; } void WorldPackets::Guild::GuildBankUpdateTab::Read() { _worldPacket >> Banker; _worldPacket >> BankTab; _worldPacket.ResetBitPos(); uint32 nameLen = _worldPacket.ReadBits(7); uint32 iconLen = _worldPacket.ReadBits(9); Name = _worldPacket.ReadString(nameLen); Icon = _worldPacket.ReadString(iconLen); } void WorldPackets::Guild::GuildBankDepositMoney::Read() { _worldPacket >> Banker; _worldPacket >> Money; } void WorldPackets::Guild::GuildBankQueryTab::Read() { _worldPacket >> Banker; _worldPacket >> Tab; FullUpdate = _worldPacket.ReadBit(); } WorldPacket const* WorldPackets::Guild::GuildBankRemainingWithdrawMoney::Write() { _worldPacket << RemainingWithdrawMoney; return &_worldPacket; } void WorldPackets::Guild::GuildBankWithdrawMoney::Read() { _worldPacket >> Banker; _worldPacket >> Money; } WorldPacket const* WorldPackets::Guild::GuildBankQueryResults::Write() { _worldPacket << uint64(Money); _worldPacket << int32(Tab); _worldPacket << int32(WithdrawalsRemaining); _worldPacket << uint32(TabInfo.size()); _worldPacket << uint32(ItemInfo.size()); _worldPacket.WriteBit(FullUpdate); _worldPacket.FlushBits(); for (GuildBankTabInfo const& tab : TabInfo) { _worldPacket << int32(tab.TabIndex); _worldPacket.WriteBits(tab.Name.length(), 7); _worldPacket.WriteBits(tab.Icon.length(), 9); _worldPacket.FlushBits(); _worldPacket.WriteString(tab.Name); _worldPacket.WriteString(tab.Icon); } for (GuildBankItemInfo const& item : ItemInfo) { _worldPacket << int32(item.Slot); _worldPacket << int32(item.Count); _worldPacket << int32(item.EnchantmentID); _worldPacket << int32(item.Charges); _worldPacket << int32(item.OnUseEnchantmentID); _worldPacket << int32(item.Flags); _worldPacket << item.Item; _worldPacket.WriteBits(item.SocketEnchant.size(), 2); _worldPacket.WriteBit(item.Locked); _worldPacket.FlushBits(); for (Item::ItemGemData const& socketEnchant : item.SocketEnchant) _worldPacket << socketEnchant; } return &_worldPacket; } void WorldPackets::Guild::AutoGuildBankItem::Read() { _worldPacket >> Banker; _worldPacket >> BankTab; _worldPacket >> BankSlot; _worldPacket >> ContainerItemSlot; if (_worldPacket.ReadBit()) ContainerSlot.emplace(); if (ContainerSlot) _worldPacket >> *ContainerSlot; } void WorldPackets::Guild::StoreGuildBankItem::Read() { _worldPacket >> Banker; _worldPacket >> BankTab; _worldPacket >> BankSlot; _worldPacket >> ContainerItemSlot; if (_worldPacket.ReadBit()) ContainerSlot.emplace(); if (ContainerSlot) _worldPacket >> *ContainerSlot; } void WorldPackets::Guild::SwapItemWithGuildBankItem::Read() { _worldPacket >> Banker; _worldPacket >> BankTab; _worldPacket >> BankSlot; _worldPacket >> ContainerItemSlot; if (_worldPacket.ReadBit()) ContainerSlot.emplace(); if (ContainerSlot) _worldPacket >> *ContainerSlot; } void WorldPackets::Guild::SwapGuildBankItemWithGuildBankItem::Read() { _worldPacket >> Banker; _worldPacket >> BankTab[0]; _worldPacket >> BankSlot[0]; _worldPacket >> BankTab[1]; _worldPacket >> BankSlot[1]; } void WorldPackets::Guild::MoveGuildBankItem::Read() { _worldPacket >> Banker; _worldPacket >> BankTab; _worldPacket >> BankSlot; _worldPacket >> BankTab1; _worldPacket >> BankSlot1; } void WorldPackets::Guild::MergeItemWithGuildBankItem::Read() { _worldPacket >> Banker; _worldPacket >> BankTab; _worldPacket >> BankSlot; _worldPacket >> ContainerItemSlot; _worldPacket >> StackCount; if (_worldPacket.ReadBit()) ContainerSlot.emplace(); if (ContainerSlot) _worldPacket >> *ContainerSlot; } void WorldPackets::Guild::SplitItemToGuildBank::Read() { _worldPacket >> Banker; _worldPacket >> BankTab; _worldPacket >> BankSlot; _worldPacket >> ContainerItemSlot; _worldPacket >> StackCount; if (_worldPacket.ReadBit()) ContainerSlot.emplace(); if (ContainerSlot) _worldPacket >> *ContainerSlot; } void WorldPackets::Guild::MergeGuildBankItemWithItem::Read() { _worldPacket >> Banker; _worldPacket >> BankTab; _worldPacket >> BankSlot; _worldPacket >> ContainerItemSlot; _worldPacket >> StackCount; if (_worldPacket.ReadBit()) ContainerSlot.emplace(); if (ContainerSlot) _worldPacket >> *ContainerSlot; } void WorldPackets::Guild::SplitGuildBankItemToInventory::Read() { _worldPacket >> Banker; _worldPacket >> BankTab; _worldPacket >> BankSlot; _worldPacket >> ContainerItemSlot; _worldPacket >> StackCount; if (_worldPacket.ReadBit()) ContainerSlot.emplace(); if (ContainerSlot) _worldPacket >> *ContainerSlot; } void WorldPackets::Guild::AutoStoreGuildBankItem::Read() { _worldPacket >> Banker; _worldPacket >> BankTab; _worldPacket >> BankSlot; } void WorldPackets::Guild::MergeGuildBankItemWithGuildBankItem::Read() { _worldPacket >> Banker; _worldPacket >> BankTab; _worldPacket >> BankSlot; _worldPacket >> BankTab1; _worldPacket >> BankSlot1; _worldPacket >> StackCount; } void WorldPackets::Guild::SplitGuildBankItem::Read() { _worldPacket >> Banker; _worldPacket >> BankTab; _worldPacket >> BankSlot; _worldPacket >> BankTab1; _worldPacket >> BankSlot1; _worldPacket >> StackCount; } void WorldPackets::Guild::GuildBankLogQuery::Read() { _worldPacket >> Tab; } WorldPacket const* WorldPackets::Guild::GuildBankLogQueryResults::Write() { _worldPacket << int32(Tab); _worldPacket << uint32(Entry.size()); _worldPacket.WriteBit(WeeklyBonusMoney.has_value()); _worldPacket.FlushBits(); for (GuildBankLogEntry const& logEntry : Entry) { _worldPacket << logEntry.PlayerGUID; _worldPacket << uint32(logEntry.TimeOffset); _worldPacket << int8(logEntry.EntryType); _worldPacket.WriteBit(logEntry.Money.has_value()); _worldPacket.WriteBit(logEntry.ItemID.has_value()); _worldPacket.WriteBit(logEntry.Count.has_value()); _worldPacket.WriteBit(logEntry.OtherTab.has_value()); _worldPacket.FlushBits(); if (logEntry.Money.has_value()) _worldPacket << uint64(*logEntry.Money); if (logEntry.ItemID.has_value()) _worldPacket << int32(*logEntry.ItemID); if (logEntry.Count.has_value()) _worldPacket << int32(*logEntry.Count); if (logEntry.OtherTab.has_value()) _worldPacket << int8(*logEntry.OtherTab); } if (WeeklyBonusMoney) _worldPacket << uint64(*WeeklyBonusMoney); return &_worldPacket; } void WorldPackets::Guild::GuildBankTextQuery::Read() { _worldPacket >> Tab; } WorldPacket const* WorldPackets::Guild::GuildBankTextQueryResult::Write() { _worldPacket << int32(Tab); _worldPacket.WriteBits(Text.length(), 14); _worldPacket.FlushBits(); _worldPacket.WriteString(Text); return &_worldPacket; } void WorldPackets::Guild::GuildBankSetTabText::Read() { _worldPacket >> Tab; TabText = _worldPacket.ReadString(_worldPacket.ReadBits(14)); } void WorldPackets::Guild::GuildQueryNews::Read() { _worldPacket >> GuildGUID; } ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Guild::GuildNewsEvent const& newsEvent) { data << int32(newsEvent.Id); data << newsEvent.CompletedDate; data << int32(newsEvent.Type); data << int32(newsEvent.Flags); for (std::size_t i = 0; i < newsEvent.Data.size(); ++i) data << int32(newsEvent.Data[i]); data << newsEvent.MemberGuid; data << uint32(newsEvent.MemberList.size()); for (ObjectGuid memberGuid : newsEvent.MemberList) data << memberGuid; data.WriteBit(newsEvent.Item.has_value()); data.FlushBits(); if (newsEvent.Item) data << *newsEvent.Item; // WorldPackets::Item::ItemInstance return data; } WorldPacket const* WorldPackets::Guild::GuildNews::Write() { _worldPacket << uint32(NewsEvents.size()); for (GuildNewsEvent const& newsEvent : NewsEvents) _worldPacket << newsEvent; return &_worldPacket; } void WorldPackets::Guild::GuildNewsUpdateSticky::Read() { _worldPacket >> GuildGUID; _worldPacket >> NewsID; _worldPacket >> Bits<1>(Sticky); } void WorldPackets::Guild::GuildSetGuildMaster::Read() { uint32 nameLen = _worldPacket.ReadBits(9); NewMasterName = _worldPacket.ReadString(nameLen); } WorldPacket const* WorldPackets::Guild::GuildChallengeUpdate::Write() { for (int32 i = 0; i < GUILD_CHALLENGES_TYPES; ++i) _worldPacket << int32(CurrentCount[i]); for (int32 i = 0; i < GUILD_CHALLENGES_TYPES; ++i) _worldPacket << int32(MaxCount[i]); for (int32 i = 0; i < GUILD_CHALLENGES_TYPES; ++i) _worldPacket << int32(MaxLevelGold[i]); for (int32 i = 0; i < GUILD_CHALLENGES_TYPES; ++i) _worldPacket << int32(Gold[i]); return &_worldPacket; } void WorldPackets::Guild::SaveGuildEmblem::Read() { _worldPacket >> Vendor; _worldPacket >> EStyle; _worldPacket >> EColor; _worldPacket >> BStyle; _worldPacket >> BColor; _worldPacket >> Bg; } WorldPacket const* WorldPackets::Guild::PlayerSaveGuildEmblem::Write() { _worldPacket << int32(Error); return &_worldPacket; } void WorldPackets::Guild::GuildSetAchievementTracking::Read() { AchievementIDs.resize(_worldPacket.read()); for (uint32& achievementID : AchievementIDs) _worldPacket >> achievementID; } WorldPacket const* WorldPackets::Guild::GuildNameChanged::Write() { _worldPacket << GuildGUID; _worldPacket.WriteBits(GuildName.length(), 7); _worldPacket.FlushBits(); _worldPacket.WriteString(GuildName); return &_worldPacket; }