mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-02-02 02:23:49 +00:00
feat(Core/Achievements): Add possibility to complete achievements and update achievement criteria for offline players. (#19851)
This commit is contained in:
committed by
GitHub
parent
221dbd3fdb
commit
9999a80c96
@@ -861,39 +861,40 @@ enum PlayedTimeIndex
|
||||
// used at player loading query list preparing, and later result selection
|
||||
enum PlayerLoginQueryIndex
|
||||
{
|
||||
PLAYER_LOGIN_QUERY_LOAD_FROM = 0,
|
||||
PLAYER_LOGIN_QUERY_LOAD_AURAS = 3,
|
||||
PLAYER_LOGIN_QUERY_LOAD_SPELLS = 4,
|
||||
PLAYER_LOGIN_QUERY_LOAD_QUEST_STATUS = 5,
|
||||
PLAYER_LOGIN_QUERY_LOAD_DAILY_QUEST_STATUS = 6,
|
||||
PLAYER_LOGIN_QUERY_LOAD_REPUTATION = 7,
|
||||
PLAYER_LOGIN_QUERY_LOAD_INVENTORY = 8,
|
||||
PLAYER_LOGIN_QUERY_LOAD_ACTIONS = 9,
|
||||
PLAYER_LOGIN_QUERY_LOAD_MAILS = 10,
|
||||
PLAYER_LOGIN_QUERY_LOAD_MAIL_ITEMS = 11,
|
||||
PLAYER_LOGIN_QUERY_LOAD_SOCIAL_LIST = 13,
|
||||
PLAYER_LOGIN_QUERY_LOAD_HOME_BIND = 14,
|
||||
PLAYER_LOGIN_QUERY_LOAD_SPELL_COOLDOWNS = 15,
|
||||
PLAYER_LOGIN_QUERY_LOAD_DECLINED_NAMES = 16,
|
||||
PLAYER_LOGIN_QUERY_LOAD_ACHIEVEMENTS = 18,
|
||||
PLAYER_LOGIN_QUERY_LOAD_CRITERIA_PROGRESS = 19,
|
||||
PLAYER_LOGIN_QUERY_LOAD_EQUIPMENT_SETS = 20,
|
||||
PLAYER_LOGIN_QUERY_LOAD_ENTRY_POINT = 21,
|
||||
PLAYER_LOGIN_QUERY_LOAD_GLYPHS = 22,
|
||||
PLAYER_LOGIN_QUERY_LOAD_TALENTS = 23,
|
||||
PLAYER_LOGIN_QUERY_LOAD_ACCOUNT_DATA = 24,
|
||||
PLAYER_LOGIN_QUERY_LOAD_SKILLS = 25,
|
||||
PLAYER_LOGIN_QUERY_LOAD_WEEKLY_QUEST_STATUS = 26,
|
||||
PLAYER_LOGIN_QUERY_LOAD_RANDOM_BG = 27,
|
||||
PLAYER_LOGIN_QUERY_LOAD_BANNED = 28,
|
||||
PLAYER_LOGIN_QUERY_LOAD_QUEST_STATUS_REW = 29,
|
||||
PLAYER_LOGIN_QUERY_LOAD_INSTANCE_LOCK_TIMES = 30,
|
||||
PLAYER_LOGIN_QUERY_LOAD_SEASONAL_QUEST_STATUS = 31,
|
||||
PLAYER_LOGIN_QUERY_LOAD_MONTHLY_QUEST_STATUS = 32,
|
||||
PLAYER_LOGIN_QUERY_LOAD_BREW_OF_THE_MONTH = 34,
|
||||
PLAYER_LOGIN_QUERY_LOAD_CORPSE_LOCATION = 35,
|
||||
PLAYER_LOGIN_QUERY_LOAD_CHARACTER_SETTINGS = 36,
|
||||
PLAYER_LOGIN_QUERY_LOAD_PET_SLOTS = 37,
|
||||
PLAYER_LOGIN_QUERY_LOAD_FROM = 0,
|
||||
PLAYER_LOGIN_QUERY_LOAD_AURAS = 3,
|
||||
PLAYER_LOGIN_QUERY_LOAD_SPELLS = 4,
|
||||
PLAYER_LOGIN_QUERY_LOAD_QUEST_STATUS = 5,
|
||||
PLAYER_LOGIN_QUERY_LOAD_DAILY_QUEST_STATUS = 6,
|
||||
PLAYER_LOGIN_QUERY_LOAD_REPUTATION = 7,
|
||||
PLAYER_LOGIN_QUERY_LOAD_INVENTORY = 8,
|
||||
PLAYER_LOGIN_QUERY_LOAD_ACTIONS = 9,
|
||||
PLAYER_LOGIN_QUERY_LOAD_MAILS = 10,
|
||||
PLAYER_LOGIN_QUERY_LOAD_MAIL_ITEMS = 11,
|
||||
PLAYER_LOGIN_QUERY_LOAD_SOCIAL_LIST = 13,
|
||||
PLAYER_LOGIN_QUERY_LOAD_HOME_BIND = 14,
|
||||
PLAYER_LOGIN_QUERY_LOAD_SPELL_COOLDOWNS = 15,
|
||||
PLAYER_LOGIN_QUERY_LOAD_DECLINED_NAMES = 16,
|
||||
PLAYER_LOGIN_QUERY_LOAD_ACHIEVEMENTS = 18,
|
||||
PLAYER_LOGIN_QUERY_LOAD_CRITERIA_PROGRESS = 19,
|
||||
PLAYER_LOGIN_QUERY_LOAD_EQUIPMENT_SETS = 20,
|
||||
PLAYER_LOGIN_QUERY_LOAD_ENTRY_POINT = 21,
|
||||
PLAYER_LOGIN_QUERY_LOAD_GLYPHS = 22,
|
||||
PLAYER_LOGIN_QUERY_LOAD_TALENTS = 23,
|
||||
PLAYER_LOGIN_QUERY_LOAD_ACCOUNT_DATA = 24,
|
||||
PLAYER_LOGIN_QUERY_LOAD_SKILLS = 25,
|
||||
PLAYER_LOGIN_QUERY_LOAD_WEEKLY_QUEST_STATUS = 26,
|
||||
PLAYER_LOGIN_QUERY_LOAD_RANDOM_BG = 27,
|
||||
PLAYER_LOGIN_QUERY_LOAD_BANNED = 28,
|
||||
PLAYER_LOGIN_QUERY_LOAD_QUEST_STATUS_REW = 29,
|
||||
PLAYER_LOGIN_QUERY_LOAD_INSTANCE_LOCK_TIMES = 30,
|
||||
PLAYER_LOGIN_QUERY_LOAD_SEASONAL_QUEST_STATUS = 31,
|
||||
PLAYER_LOGIN_QUERY_LOAD_MONTHLY_QUEST_STATUS = 32,
|
||||
PLAYER_LOGIN_QUERY_LOAD_BREW_OF_THE_MONTH = 34,
|
||||
PLAYER_LOGIN_QUERY_LOAD_CORPSE_LOCATION = 35,
|
||||
PLAYER_LOGIN_QUERY_LOAD_CHARACTER_SETTINGS = 36,
|
||||
PLAYER_LOGIN_QUERY_LOAD_PET_SLOTS = 37,
|
||||
PLAYER_LOGIN_QUERY_LOAD_OFFLINE_ACHIEVEMENTS_UPDATES = 38,
|
||||
MAX_PLAYER_LOGIN_QUERY
|
||||
};
|
||||
|
||||
|
||||
@@ -5023,7 +5023,7 @@ bool Player::LoadFromDB(ObjectGuid playerGuid, CharacterDatabaseQueryHolder cons
|
||||
SetCreationTime(fields[74].Get<Seconds>());
|
||||
|
||||
// load achievements before anything else to prevent multiple gains for the same achievement/criteria on every loading (as loading does call UpdateAchievementCriteria)
|
||||
m_achievementMgr->LoadFromDB(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_ACHIEVEMENTS), holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_CRITERIA_PROGRESS));
|
||||
m_achievementMgr->LoadFromDB(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_ACHIEVEMENTS), holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_CRITERIA_PROGRESS), holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_OFFLINE_ACHIEVEMENTS_UPDATES));
|
||||
|
||||
uint32 money = fields[8].Get<uint32>();
|
||||
if (money > MAX_MONEY_AMOUNT)
|
||||
|
||||
@@ -159,7 +159,7 @@ void Player::Update(uint32 p_time)
|
||||
}
|
||||
}
|
||||
|
||||
m_achievementMgr->UpdateTimedAchievements(p_time);
|
||||
m_achievementMgr->Update(p_time);
|
||||
|
||||
if (HasUnitState(UNIT_STATE_MELEE_ATTACKING) && !HasUnitState(UNIT_STATE_CASTING) && !HasUnitState(UNIT_STATE_CHARGING))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user