aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2012-07-09 14:22:54 +0200
committerShauren <shauren.trinity@gmail.com>2012-07-09 14:22:54 +0200
commit9f52f4df537c6ce0cd5329b03ee04c5bc57f271e (patch)
tree4303d61c895a2495d1a99bb10b3712bba31bac6d
parent06a4ade88a9aee90e66c02852752c6acc30b7a6d (diff)
Core/Achievements: Fixed a mistake in building guild criteria packets
-rwxr-xr-xsrc/server/game/Achievements/AchievementMgr.cpp18
1 files changed, 13 insertions, 5 deletions
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<Guild>::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<uint64*>(&criteriaProgress[0]) = progress->second.counter;
*reinterpret_cast<uint64*>(&criteriaGuid[0]) = progress->second.CompletedGUID;
@@ -2610,13 +2621,10 @@ void AchievementMgr<Guild>::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);
}