aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Handlers/GuildHandler.cpp14
-rw-r--r--src/server/game/Server/Packets/GuildPackets.cpp14
-rw-r--r--src/server/game/Server/Packets/GuildPackets.h10
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
-rw-r--r--src/server/game/Server/WorldSession.h3
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 59fccb4831a..69fc978e958 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 40525d54ca7..33ef19e3f59 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
@@ -1081,7 +1082,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);