diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Handlers/GuildHandler.cpp | 14 | ||||
-rw-r--r-- | src/server/game/Server/Packets/GuildPackets.cpp | 14 | ||||
-rw-r--r-- | src/server/game/Server/Packets/GuildPackets.h | 10 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.h | 3 |
5 files changed, 29 insertions, 14 deletions
diff --git a/src/server/game/Handlers/GuildHandler.cpp b/src/server/game/Handlers/GuildHandler.cpp index f8164cb8e99..ad3de84beb5 100644 --- a/src/server/game/Handlers/GuildHandler.cpp +++ b/src/server/game/Handlers/GuildHandler.cpp @@ -417,18 +417,8 @@ void WorldSession::HandleGuildSetGuildMaster(WorldPackets::Guild::GuildSetGuildM guild->HandleSetNewGuildMaster(this, packet.NewMasterName); } -void WorldSession::HandleGuildSetAchievementTracking(WorldPacket& recvPacket) +void WorldSession::HandleGuildSetAchievementTracking(WorldPackets::Guild::GuildSetAchievementTracking& packet) { - uint32 count = recvPacket.ReadBits(24); - std::set<uint32> achievementIds; - - for (uint32 i = 0; i < count; ++i) - { - uint32 achievementId; - recvPacket >> achievementId; - achievementIds.insert(achievementId); - } - if (Guild* guild = GetPlayer()->GetGuild()) - guild->HandleSetAchievementTracking(this, achievementIds); + guild->HandleSetAchievementTracking(this, packet.AchievementIDs); } diff --git a/src/server/game/Server/Packets/GuildPackets.cpp b/src/server/game/Server/Packets/GuildPackets.cpp index 7fcc0f05eda..3b4a395347f 100644 --- a/src/server/game/Server/Packets/GuildPackets.cpp +++ b/src/server/game/Server/Packets/GuildPackets.cpp @@ -811,3 +811,17 @@ WorldPacket const* WorldPackets::Guild::PlayerSaveGuildEmblem::Write() return &_worldPacket; } + + +void WorldPackets::Guild::GuildSetAchievementTracking::Read() +{ + uint32 count; + _worldPacket >> count; + + for (uint32 i = 0; i < count; ++i) + { + uint32 value; + _worldPacket >> value; + AchievementIDs.insert(value); + } +} diff --git a/src/server/game/Server/Packets/GuildPackets.h b/src/server/game/Server/Packets/GuildPackets.h index 3202d2a3581..eab723c77af 100644 --- a/src/server/game/Server/Packets/GuildPackets.h +++ b/src/server/game/Server/Packets/GuildPackets.h @@ -1006,6 +1006,16 @@ namespace WorldPackets int32 Error = 0; }; + + class GuildSetAchievementTracking final : public ClientPacket + { + public: + GuildSetAchievementTracking(WorldPacket&& packet) : ClientPacket(CMSG_GUILD_SET_ACHIEVEMENT_TRACKING, std::move(packet)) { } + + void Read() override; + + std::set<uint32> AchievementIDs; + }; } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 37358fd9759..0fe60e71afa 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -445,7 +445,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_GUILD_QUERY_NEWS, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Guild::GuildQueryNews, &WorldSession::HandleGuildQueryNews); DEFINE_HANDLER(CMSG_GUILD_QUERY_RECIPES, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_GUILD_REPLACE_GUILD_MASTER, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL); - DEFINE_OPCODE_HANDLER_OLD(CMSG_GUILD_SET_ACHIEVEMENT_TRACKING, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildSetAchievementTracking); + DEFINE_HANDLER(CMSG_GUILD_SET_ACHIEVEMENT_TRACKING, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildSetAchievementTracking, &WorldSession::HandleGuildSetAchievementTracking); DEFINE_HANDLER(CMSG_GUILD_SET_FOCUSED_ACHIEVEMENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Achievement::GuildSetFocusedAchievement, &WorldSession::HandleGuildSetFocusedAchievement); DEFINE_HANDLER(CMSG_GUILD_SET_GUILD_MASTER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildSetGuildMaster, &WorldSession::HandleGuildSetGuildMaster); DEFINE_HANDLER(CMSG_GUILD_SET_MEMBER_NOTE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Guild::GuildSetMemberNote, &WorldSession::HandleGuildSetMemberNote); diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index efa3a7cb90e..eae2af75e88 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -255,6 +255,7 @@ namespace WorldPackets class GuildSetGuildMaster; class GuildChallengeUpdateRequest; class SaveGuildEmblem; + class GuildSetAchievementTracking; } namespace Inspect @@ -1079,7 +1080,7 @@ class WorldSession void HandleGuildAssignRank(WorldPackets::Guild::GuildAssignMemberRank& packet); void HandleGuildLeave(WorldPackets::Guild::GuildLeave& leave); void HandleGuildDelete(WorldPackets::Guild::GuildDelete& packet); - void HandleGuildSetAchievementTracking(WorldPacket& recvPacket); + void HandleGuildSetAchievementTracking(WorldPackets::Guild::GuildSetAchievementTracking& packet); void HandleGuildSetGuildMaster(WorldPackets::Guild::GuildSetGuildMaster& packet); void HandleGuildUpdateMotdText(WorldPackets::Guild::GuildUpdateMotdText& packet); void HandleGuildNewsUpdateSticky(WorldPackets::Guild::GuildNewsUpdateSticky& packet); |