Okay if you think this is copy it isn't I have made it by myself.
I coded the achievement points after unlocking achievement and I coded the have and need in list.
In achievements.cs search
After add:Code:public bool DynamicBadgeLevel;
search:Code:public int Points; public int Need; public int Have;
Replace with:Code:uint Id, int Levels, string BadgeCode, int PixelBase, double PixelMultiplier, bool DynamicBadgeLevel
Search:Code:uint Id, int Levels, string BadgeCode, int PixelBase, double PixelMultiplier, bool DynamicBadgeLevel, int Points, int Need, int Have
Add:Code:this.DynamicBadgeLevel = DynamicBadgeLevel;
Now go to AchievementManager.cs and search:Code:this.Points = Points; this.Need = Need; this.Have = Have;
Replace with:Code:Achievements.Add((uint)Row["id"], new Achievement((uint)Row["id"], (int)Row["levels"], (string)Row["badge"], (int)Row["pixels_base"], (double)Row["pixels_multiplier"], UberEnvironment.EnumToBool(Row["dynamic_badgelevel"].ToString())));
Search:Code:Achievements.Add((uint)Row["id"], new Achievement((uint)Row["id"], (int)Row["levels"], (string)Row["badge"], (int)Row["pixels_base"], (double)Row["pixels_multiplier"], UberEnvironment.EnumToBool(Row["dynamic_badgelevel"].ToString()),(int)Row["points"], (int)Row["need"], (int)Row["have"]));
Replace WHOLE foreach with:Code:foreach (Achievement Achievement in AchievementsToList)
Search:Code:foreach (Achievement Achievement in AchievementsToList) { int Level = NextAchievementLevels[Achievement.Id]; int Pixels = CalculateAchievementValue(Achievement.PixelBase, Achievement.PixelMultiplier, Level); Message.AppendUInt(Achievement.Id); Message.AppendInt32(Level); Message.AppendStringWithBreak(FormatBadgeCode(Achievement.BadgeCode, Level, Achievement.DynamicBadgeLevel)); Message.AppendInt32(Achievement.Need); Message.AppendInt32(15); Message.AppendInt32(Achievement.Have); Message.AppendInt32(0); }
REPLACE WHOLE VOID (better to backup old if you fuck up this code) with:Code:public void UnlockAchievement(GameClient Session, uint AchievementId, int Level)
In Habbo.cs search:Code:public void UnlockAchievement(GameClient Session, uint AchievementId, int Level) { // Get the achievement Achievement Achievement = Achievements[AchievementId]; // Make sure the achievement is valid and has not already been unlocked if (Achievement == null || UserHasAchievement(Session, Achievement.Id, Level) || Level < 1 || Level > Achievement.Levels) { return; } // Calculate the pixel value for this achievement int Value = CalculateAchievementValue(Achievement.PixelBase, Achievement.PixelMultiplier, Level); // Remove any previous badges for this achievement (old levels) lock (((Session.GetHabbo().GetBadgeComponent().BadgeList))) { List<string> BadgesToRemove = new List<string>(); foreach (Badge Badge in Session.GetHabbo().GetBadgeComponent().BadgeList) { if (Badge.Code.StartsWith(Achievement.BadgeCode)) { BadgesToRemove.Add(Badge.Code); } } foreach (string Badge in BadgesToRemove) { Session.GetHabbo().GetBadgeComponent().RemoveBadge(Badge); } } // Give the user the new badge Session.GetHabbo().GetBadgeComponent().GiveBadge(FormatBadgeCode(Achievement.BadgeCode, Level, Achievement.DynamicBadgeLevel), true); // Update or set the achievement level for the user if (Session.GetHabbo().Achievements.ContainsKey(Achievement.Id)) { Session.GetHabbo().Achievements[Achievement.Id] = Level; using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.ExecuteQuery("UPDATE user_achievements SET achievement_level = '" + Level + "' WHERE user_id = '" + Session.GetHabbo().Id + "' AND achievement_id = '" + Achievement.Id + "' LIMIT 1"); } } else { Session.GetHabbo().Achievements.Add(Achievement.Id, Level); using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.ExecuteQuery("INSERT INTO user_achievements (user_id,achievement_id,achievement_level) VALUES ('" + Session.GetHabbo().Id + "','" + Achievement.Id + "','" + Level + "')"); } } // Notify the user of the achievement gain Session.GetMessageHandler().GetResponse().Init(437); Session.GetMessageHandler().GetResponse().AppendUInt(Achievement.Id); Session.GetMessageHandler().GetResponse().AppendInt32(Level); Session.GetMessageHandler().GetResponse().AppendStringWithBreak(FormatBadgeCode(Achievement.BadgeCode, Level, Achievement.DynamicBadgeLevel)); Session.GetMessageHandler().GetResponse().AppendInt32(Achievement.Points); // achievement points Session.GetMessageHandler().GetResponse().AppendInt32(Achievement.PixelBase); // pixels if (Level > 1) { Session.GetMessageHandler().GetResponse().AppendStringWithBreak(FormatBadgeCode(Achievement.BadgeCode, (Level - 1), Achievement.DynamicBadgeLevel)); } else { Session.GetMessageHandler().GetResponse().AppendStringWithBreak(""); } Session.GetMessageHandler().SendResponse(); // Give the user the pixels he deserves Session.GetHabbo().ActivityPoints += Value; Session.GetHabbo().UpdateActivityPointsBalance(true, Value); // Gives the user teh ach points. Session.GetHabbo().AchPoints += Achievement.Points; // [13-12-2009 17:03:34 from 62.50.35.181:30000] // FvXXDRB // [13-12-2009 17:03:34 from 62.50.35.181:30000] // FuQBIACH_Motto1 // FuPBJACH_RoomEntry2ACH_RoomEntry1 }
Add below:Code:public int ActivityPoints;
Credits to:Code:public int AchPoints;
Meth0d - UberCMS
Toperwin - First R63 achievement fix
Me - For achievement points + have/need
I don't know any emulator (except of Nabbo's) which have this same code. If you know show me the code.




