/// <summary> /// Actualiza el progreso una recompensa. /// </summary> /// <param name="Session"></param> /// <param name="UserId"></param> /// <param name="AchievementGroup"></param> /// <param name="ProgressAmount"></param> /// <returns></returns> public bool ProgressUserAchievement(uint UserId, string AchievementGroup, int ProgressAmount) { Habbo Habbo = UsersCache.getHabboCache(UserId); if (Habbo == null) { return(false); } GameClient Session = Habbo.GetClient(); Achievement AchievementData = GetAchievementByName(AchievementGroup); if (AchievementData == null) { return(false); } UserAchievement UserData = Habbo.GetAchievementData(AchievementGroup); if (UserData == null) { UserData = new UserAchievement(AchievementGroup, 0, 0); Habbo.Achievements.Add(AchievementGroup, UserData); } uint TotalLevels = (uint)AchievementData.Levels.Length; if (UserData.Level == TotalLevels) { return(false); // ya está todo completado } uint TargetLevel = UserData.Level + 1; if (TargetLevel > TotalLevels) { TargetLevel = TotalLevels; } uint TargetRequeriment = AchievementData.Levels[TargetLevel - 1]; UserData.Progress += ProgressAmount; if (UserData.Progress >= TargetRequeriment) { UserData.Level++; if (TargetLevel == 1) { Habbo.GetBadgeComponent().GiveBadge(AchievementGroup + TargetLevel); } else { Habbo.GetBadgeComponent().UpdateBadge(AchievementGroup + TargetLevel); } Habbo.AchievementPoints += AchievementData.Reward; if (Session != null) { Session.SendMessage(AchievementUnlockedComposer.Compose(AchievementData, TargetLevel, AchievementData.Reward)); Session.SendMessage(AchievementScoreUpdateComposer.Compose(Habbo.AchievementPoints)); } } if (Session != null) { Session.SendMessage(AchievementProgressComposer.Compose(AchievementData, UserData)); } using (IQueryAdapter dbClient = OtanixEnvironment.GetDatabaseManager().getQueryreactor()) { dbClient.setQuery("REPLACE INTO user_achievements VALUES (" + Habbo.Id + ", @group, " + UserData.Level + ", " + UserData.Progress + ")"); dbClient.addParameter("group", AchievementGroup); dbClient.runQuery(); } if (Session == null) { Habbo.SaveBadges(); } return(true); }