From 9f52f4df537c6ce0cd5329b03ee04c5bc57f271e Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 9 Jul 2012 14:22:54 +0200 Subject: Core/Achievements: Fixed a mistake in building guild criteria packets --- src/server/game/Achievements/AchievementMgr.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index 7ff744a1dc8..dafcd88433f 100755 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -2567,6 +2567,17 @@ void AchievementMgr::SendAchievementInfo(Player* receiver, uint32 achieve continue; ++numCriteria; + } + + criteriaBits.WriteBits(numCriteria, 21); + + for (AchievementCriteriaEntryList::const_iterator itr = criteria->begin(); itr != criteria->end(); ++itr) + { + uint32 criteriaId = (*itr)->ID; + CriteriaProgressMap::const_iterator progress = m_criteriaProgress.find(criteriaId); + if (progress == m_criteriaProgress.end()) + continue; + *reinterpret_cast(&criteriaProgress[0]) = progress->second.counter; *reinterpret_cast(&criteriaGuid[0]) = progress->second.CompletedGUID; @@ -2610,13 +2621,10 @@ void AchievementMgr::SendAchievementInfo(Player* receiver, uint32 achieve criteriaData.WriteByteSeq(criteriaGuid[0]); } - WorldPacket data(SMSG_GUILD_CRITERIA_DATA, 3 + criteriaBits.size() + criteriaData.size()); - data.WriteBits(numCriteria, 21); + WorldPacket data(SMSG_GUILD_CRITERIA_DATA, criteriaBits.size() + criteriaData.size()); + data.append(criteriaBits); if (numCriteria) - { - data.append(criteriaBits); data.append(criteriaData); - } receiver->GetSession()->SendPacket(&data); } -- cgit v1.2.3