Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp
- index 4b6b57b..6830cb8 100644
- --- a/src/server/game/Achievements/AchievementMgr.cpp
- +++ b/src/server/game/Achievements/AchievementMgr.cpp
- @@ -575,7 +575,7 @@ void AchievementMgr<Player>::SaveToDB(SQLTransaction& charTrans, SQLTransaction&
- if (mustSaveForCharacter || !isAccountAchievement)
- {
- ssCharDel << "DELETE FROM character_achievement WHERE guid = " << guidLow << " AND achievement IN (";
- - ssCharIns << "INSERT INTO character_achievement (guid, achievement) VALUES ";
- + ssCharIns << "INSERT INTO character_achievement (guid, achievement, date) VALUES ";
- needCharacterExecute = true;
- }
- }
- @@ -598,7 +598,7 @@ void AchievementMgr<Player>::SaveToDB(SQLTransaction& charTrans, SQLTransaction&
- if (mustSaveForCharacter || !isAccountAchievement)
- {
- ssCharDel << achievementId;
- - ssCharIns << '(' << guidLow << ',' << achievementId << ')';
- + ssCharIns << '(' << guidLow << ',' << achievementId << "," << completionData.date << ')';
- }
- /// Mark as saved in db
- @@ -920,6 +920,7 @@ void AchievementMgr<Player>::LoadFromDB(PreparedQueryResult achievementResult, P
- {
- Field* fields = achievementResult->Fetch();
- uint32 achievementid = fields[0].GetUInt16();
- + uint32 guid = fields[1].GetUInt32();
- // Must not happen: cleanup at server startup in sAchievementMgr->LoadCompletedAchievements()
- AchievementEntry const* achievement = sAchievementMgr->GetAchievement(achievementid);
- @@ -927,14 +928,17 @@ void AchievementMgr<Player>::LoadFromDB(PreparedQueryResult achievementResult, P
- continue;
- // Achievement in character_achievement but not in account_achievement, there is a problem.
- - if (m_completedAchievements.find(achievementid) == m_completedAchievements.end())
- + if (m_completedAchievements.find(achievementid) == m_completedAchievements.end() && achievement->flags & ACHIEVEMENT_FLAG_ACCOUNT)
- {
- - TC_LOG_ERROR("achievement", "Achievement '%u' in character_achievement but not in account_achievement, there is a problem.", achievementid);
- + TC_LOG_ERROR("achievement", "Account-wide achievement '%u' in character_achievement but not in account_achievement, there is a problem.", achievementid);
- continue;
- }
- CompletedAchievementData& ca = m_completedAchievements[achievementid];
- ca.completedByThisCharacter = true;
- + ca.date = time_t(fields[2].GetUInt32());
- + ca.changed = false;
- + ca.first_guid = MAKE_NEW_GUID(guid, 0, HIGHGUID_PLAYER);
- _achievementPoints += achievement->points;
- }
Add Comment
Please, Sign In to add comment