Example #1
0
        public static ServerMessage SerializeAchievementList(GameClient Session)
        {
            int num = AchievementManager.Achievements.Count;

            foreach (KeyValuePair <uint, Achievement> current in AchievementManager.Achievements)
            {
                if (current.Value.Type == "hidden")
                {
                    num--;
                }
            }
            ServerMessage Message = new ServerMessage(436);

            Message.AppendInt32(num);
            foreach (KeyValuePair <uint, Achievement> current in AchievementManager.Achievements)
            {
                if (!(current.Value.Type == "hidden"))
                {
                    int num2 = 0;
                    int num3 = 1;
                    if (Session.GetHabbo().Achievements.ContainsKey(current.Value.Id))
                    {
                        num2 = Session.GetHabbo().Achievements[current.Value.Id];
                    }
                    if (current.Value.Levels > 1 && num2 > 0)
                    {
                        num3 = num2 + 1;
                    }
                    if (num3 > current.Value.Levels)
                    {
                        num3 = current.Value.Levels;
                    }
                    Message.AppendUInt(current.Value.Id);
                    Message.AppendInt32(num3);
                    Message.AppendStringWithBreak(AchievementManager.FormatBadgeCode(current.Value.BadgeCode, num3, current.Value.DynamicBadgeLevel));
                    Message.AppendInt32(1);
                    Message.AppendInt32(0);
                    Message.AppendInt32(0);
                    Message.AppendInt32(0);
                    Message.AppendBoolean(num2 == current.Value.Levels);
                    Message.AppendStringWithBreak(current.Value.Type);
                    Message.AppendInt32(current.Value.Levels);
                }
            }
            return(Message);
        }
Example #2
0
        public void UnlockAchievement(GameClient Session, uint uint_0, int int_0)
        {
            if (!AchievementManager.Achievements.ContainsKey(uint_0))
            {
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.WriteLine("AchievementID: " + uint_0 + " does not exist in our database!");
                Console.ForegroundColor = ConsoleColor.White;
            }
            else
            {
                Achievement @class = AchievementManager.Achievements[uint_0];
                if (@class != null && !this.UserHasAchievement(Session, @class.Id, int_0) && int_0 >= 1 && int_0 <= @class.Levels)
                {
                    int num  = AchievementManager.CalculateAchievementValue(@class.Dynamic_badgelevel, @class.PixelMultiplier, int_0);
                    int num2 = AchievementManager.CalculateAchievementValue(@class.ScoreBase, @class.PixelMultiplier, int_0);
                    using (TimedLock.Lock(Session.GetHabbo().GetBadgeComponent().BadgeList))
                    {
                        List <string> list = new List <string>();
                        foreach (Badge current in Session.GetHabbo().GetBadgeComponent().BadgeList)
                        {
                            if (current.Code.StartsWith(@class.BadgeCode))
                            {
                                list.Add(current.Code);
                            }
                        }
                        foreach (string current2 in list)
                        {
                            Session.GetHabbo().GetBadgeComponent().RemoveBadge(current2);
                        }
                    }
                    Session.GetHabbo().GetBadgeComponent().GiveBadge(Session, AchievementManager.FormatBadgeCode(@class.BadgeCode, int_0, @class.DynamicBadgeLevel), true);
                    if (Session.GetHabbo().Achievements.ContainsKey(@class.Id))
                    {
                        Session.GetHabbo().Achievements[@class.Id] = int_0;
                        using (DatabaseClient class2 = PhoenixEnvironment.GetDatabase().GetClient())
                        {
                            class2.ExecuteQuery(string.Concat(new object[]
                            {
                                "UPDATE user_achievements SET achievement_level = '",
                                int_0,
                                "' WHERE user_id = '",
                                Session.GetHabbo().Id,
                                "' AND achievement_id = '",
                                @class.Id,
                                "' LIMIT 1; UPDATE user_stats SET AchievementScore = AchievementScore + ",
                                num2,
                                " WHERE Id = '",
                                Session.GetHabbo().Id,
                                "' LIMIT 1; "
                            }));
                            goto IL_346;
                        }
                    }
                    Session.GetHabbo().Achievements.Add(@class.Id, int_0);
                    using (DatabaseClient class2 = PhoenixEnvironment.GetDatabase().GetClient())
                    {
                        class2.ExecuteQuery(string.Concat(new object[]
                        {
                            "INSERT INTO user_achievements (user_id,achievement_id,achievement_level) VALUES ('",
                            Session.GetHabbo().Id,
                            "','",
                            @class.Id,
                            "','",
                            int_0,
                            "'); UPDATE user_stats SET AchievementScore = AchievementScore + ",
                            num2,
                            " WHERE Id = '",
                            Session.GetHabbo().Id,
                            "' LIMIT 1; "
                        }));
                    }
IL_346:
                    ServerMessage Message = new ServerMessage(437u);
                    Message.AppendUInt(@class.Id);
                    Message.AppendInt32(int_0);
                    Message.AppendInt32(1337);
                    Message.AppendStringWithBreak(AchievementManager.FormatBadgeCode(@class.BadgeCode, int_0, @class.DynamicBadgeLevel));
                    Message.AppendInt32(num2);
                    Message.AppendInt32(num);
                    Message.AppendInt32(0);
                    Message.AppendInt32(0);
                    Message.AppendInt32(0);
                    if (int_0 > 1)
                    {
                        Message.AppendStringWithBreak(AchievementManager.FormatBadgeCode(@class.BadgeCode, int_0 - 1, @class.DynamicBadgeLevel));
                    }
                    else
                    {
                        Message.AppendStringWithBreak("");
                    }
                    Message.AppendStringWithBreak(@class.Type);
                    Session.SendMessage(Message);
                    Session.GetHabbo().AchievementScore += num2;
                    Session.GetHabbo().ActivityPoints   += num;
                    Session.GetHabbo().UpdateActivityPointsBalance(num);
                    if (Session.GetHabbo().FriendStreamEnabled)
                    {
                        using (DatabaseClient adapter = PhoenixEnvironment.GetDatabase().GetClient())
                        {
                            string BadgeCode = "";
                            if (@class.DynamicBadgeLevel)
                            {
                                BadgeCode = @class.BadgeCode + int_0.ToString();
                            }
                            else
                            {
                                BadgeCode = @class.BadgeCode;
                            }

                            if (!string.IsNullOrEmpty(BadgeCode))
                            {
                                string look = PhoenixEnvironment.FilterInjectionChars(Session.GetHabbo().Look);
                                adapter.AddParamWithValue("look", look);
                                adapter.ExecuteQuery("INSERT INTO `friend_stream` (`id`, `type`, `userid`, `gender`, `look`, `time`, `data`) VALUES (NULL, '2', '" + Session.GetHabbo().Id + "', '" + Session.GetHabbo().Gender + "', @look, UNIX_TIMESTAMP(), '" + BadgeCode + "');");
                            }
                        }
                    }
                }
            }
        }