PHP Code:
INSERT INTO `achievements` (`id`, `levels`, `dynamic_badgelevel`, `badge`, `pixels_base`, `pixels_multiplier`, `points`, `need`, `have`) VALUES
(1, 1, '1', 'ACH_AvatarLooks', 50, 0, 10, 1, 0),
(5, 1, '1', 'ACH_Motto', 50, 0, 10, 1, 0),
(6, 1, '1', 'ACH_Student', 50, 0, 10, 1, 0),
(7, 1, '1', 'ACH_AvatarTags', 50, 0, 10, 5, 0),
(11, 1, '0', 'Z63', 50, 0, 10, 1, 0),
(12, 10, '1', 'ACH_RoomEntry', 5, 0, 10, 5, 0),
(15, 10, '1', 'ACH_RespectEarned', 50, 1, 10, 1, 0),
(16, 1, '1', 'ACH_RespectGiven', 20, 1, 10, 100, 0),
(17, 10, '1', 'ACH_GiftGiver', 20, 1, 10, 1, 0),
(18, 10, '1', 'ACH_GiftReceiver', 20, 1, 10, 1, 0),
(19, 9, '1', 'HX', 50, 1.25, 10, 1, 0),
(20, 9, '1', 'SF', 50, 1.25, 10, 9, 0);
C# foreach:
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
}
Current bugs: