Example #1
0
		internal void Init(IQueryAdapter DBClient)
		{
			this.Polls.Clear();
			DBClient.setQuery("SELECT * FROM polls WHERE enabled = '1'");
			DataTable table = DBClient.getTable();
			if (table != null)
			{
				foreach (DataRow dataRow in table.Rows)
				{
					uint num = uint.Parse(dataRow["id"].ToString());
					DBClient.setQuery("SELECT * FROM poll_questions WHERE poll_id = " + num);
					DataTable table2 = DBClient.getTable();
					List<PollQuestion> list = new List<PollQuestion>();
					foreach (DataRow dataRow2 in table2.Rows)
					{
						list.Add(new PollQuestion(uint.Parse(dataRow2["id"].ToString()), (string)dataRow2["question"], int.Parse(dataRow2["answertype"].ToString()), dataRow2["answers"].ToString().Split(new char[]
						{
							'|'
						}), (string)dataRow2["correct_answer"]));
					}
					Poll value = new Poll(num, uint.Parse(dataRow["room_id"].ToString()), (string)dataRow["caption"], (string)dataRow["invitation"], (string)dataRow["greetings"], (string)dataRow["prize"], int.Parse(dataRow["type"].ToString()), list);
					this.Polls.Add(num, value);
				}
			}
		}
Example #2
0
        internal void Initialize(IQueryAdapter dbClient)
        {
            quests = new Dictionary<uint, Quest>();
            questCount = new Dictionary<string, int>();

            ReloadQuests(dbClient);
        }
Example #3
0
        private void ReloadQuests(IQueryAdapter dbClient)
        {
            quests.Clear();

            dbClient.setQuery("SELECT * FROM quests");
            DataTable dTable = dbClient.getTable();

            uint id;
            string category;
            int num;
            int type;
            uint goalData;
            string name;
            int reward;
            string dataBit;
            foreach (DataRow dRow in dTable.Rows)
            {
                id = Convert.ToUInt32(dRow["id"]);
                category = (string)dRow["category"];
                num = (int)dRow["series_number"];
                type = (int)dRow["goal_type"];
                goalData = Convert.ToUInt32(dRow["goal_data"]);
                name = (string)dRow["name"];
                reward = (int)dRow["reward"];
                dataBit = (string)dRow["data_bit"];

                Quest quest = new Quest(id, category, num, (QuestType)type, goalData, name, reward, dataBit);
                quests.Add(id, quest);
                AddToCounter(category);
            }
        }
Example #4
0
        //internal void LoadRoles(DatabaseClient dbClient)
        //{
        //    ClearRoles();

        //    DataTable Data = dbClient.getTable("SELECT * FROM ranks ORDER BY id ASC;");

        //    if (Data != null)
        //    {
        //        foreach (DataRow Row in Data.Rows)
        //        {
        //            Roles.Add((uint)Row["id"], new Role((uint)Row["id"], (string)Row["name"]));
        //        }
        //    }
        //}

        internal void LoadRights(IQueryAdapter dbClient)
        {
            ClearRights();

            dbClient.setQuery("SELECT fuse, rank FROM fuserights;");
            DataTable Data = dbClient.getTable();

            dbClient.setQuery("SELECT fuse, sub FROM fuserights_subs;");
            DataTable SubData = dbClient.getTable();

            if (Data != null)
            {
                foreach (DataRow Row in Data.Rows)
                {
                    Rights.Add((string)Row["fuse"], Convert.ToUInt32(Row["rank"]));
                }
            }

            if (SubData != null)
            {
                foreach (DataRow Row in SubData.Rows)
                {
                    SubRights.Add((string)Row["fuse"], (string)Row["sub"]);
                }
            }
        }
Example #5
0
        internal static void InitAchievementManager(IQueryAdapter dbClient)
        {
            dbClient.setQuery("SELECT achievements.*, achievement_categories.name " +
                                "FROM achievements " +
                                "JOIN achievement_categories " +
                                "ON achievement_categories.id = achievements.category");

            DataTable dTable = dbClient.getTable();

            achievements = new Dictionary<uint, AchievementBase>();

            uint achievementID;
            uint levels;
            uint badgelevel;
            string badge;
            int pixelBase;
            int pixelMMPORG;
            int pixelReward;
            string category;
            foreach (DataRow dRow in dTable.Rows)
            {
                achievementID = Convert.ToUInt32(dRow[0]);
                levels = Convert.ToUInt32(dRow[1]);
                badgelevel = Convert.ToUInt32(dRow[2]);
                badge = (string)dRow[3];
                pixelBase = (int)dRow[4];
                pixelMMPORG = (int)dRow[5];
                pixelReward = (int)dRow[6];
                category = (string)dRow[8];

                AchievementBase achivement = new AchievementBase(achievementID, levels, badgelevel, badge, pixelBase, pixelMMPORG, pixelReward, category);
                achievements.Add(achievementID, achivement);
            }
        }
Example #6
0
        /// <summary>
        ///     Initializes the specified database client.
        /// </summary>
        /// <param name="dbClient">The database client.</param>
        internal void Init(IQueryAdapter dbClient)
        {
            Polls.Clear();

            dbClient.SetQuery("SELECT * FROM polls_data WHERE enabled = '1'");

            var table = dbClient.GetTable();

            if (table == null)
                return;

            foreach (DataRow dataRow in table.Rows)
            {
                var num = uint.Parse(dataRow["id"].ToString());

                dbClient.SetQuery($"SELECT * FROM polls_questions WHERE poll_id = {num}");

                var table2 = dbClient.GetTable();

                var list = (from DataRow dataRow2 in table2.Rows select new PollQuestion(uint.Parse(dataRow2["id"].ToString()), (string) dataRow2["question"], int.Parse(dataRow2["answertype"].ToString()), dataRow2["answers"].ToString().Split('|'), (string) dataRow2["correct_answer"])).ToList();

                var value = new Poll(num, uint.Parse(dataRow["room_id"].ToString()), (string) dataRow["caption"], (string) dataRow["invitation"], (string) dataRow["greetings"], (string) dataRow["prize"], int.Parse(dataRow["type"].ToString()), list);

                Polls.Add(num, value);
            }
        }
Example #7
0
        public Group(DataRow Data, IQueryAdapter dbClient)
        {
            this.ID = Convert.ToInt32(Data["id"]);
            this.Name = Data["name"].ToString();
            this.Description = Data["description"].ToString();
            this.DateCreated = Data["date_created"].ToString();
            this.OwnerID = Convert.ToInt32(Data["users_id"]);
            this.RoomID = Convert.ToInt32(Data["rooms_id"]);
            this.ColorID1 = Convert.ToInt32(Data["color1"]);
            this.ColorID2 = Convert.ToInt32(Data["color2"]);
            this.Type = Convert.ToInt32(Data["type"]);
            this.RightsType = Convert.ToInt32(Data["rights_type"]);

            // Parse badge data
            string[] rawData = Data["badge_data"].ToString().Split((char)1);
            List<Tuple<int, int, int>> badgeData = new List<Tuple<int,int,int>>();
            for (int i = 0; i < rawData.Length; i++)
            {
                int value1 = int.Parse(rawData[i++]);
                int value2 = int.Parse(rawData[i++]);
                int value3 = int.Parse(rawData[i]);
                badgeData.Add(new Tuple<int, int, int>(value1, value2, value3));
            }

            this.BadgeData = badgeData;
            this.Members = new List<int>();

            // Load members
            dbClient.setQuery("SELECT * FROM group_memberships WHERE groups_id = @id");
            dbClient.addParameter("id", ID);
            foreach (DataRow row in dbClient.getTable().Rows)
            {
                this.Members.Add((int)row["users_id"]);
            }
        }
Example #8
0
        internal static void Init(IQueryAdapter dbClient)
        {
            dbClient.setQuery("SELECT userpeak FROM server_status");
            UserPeak = dbClient.getInteger();

            _runFrequency = int.Parse(FirewindEnvironment.GetConfig().GetEntry("backgroundworker.interval", "10000")); // leon is crazy, 300!?! (THIS IS MADNESS!!)
        }
		internal static void GetAchievementLevels(out Dictionary<string, Achievement> achievements, IQueryAdapter dbClient)
		{
			achievements = new Dictionary<string, Achievement>();
			dbClient.setQuery("SELECT * FROM achievements");
			DataTable table = dbClient.getTable();
			foreach (DataRow dataRow in table.Rows)
			{
				uint id = Convert.ToUInt32(dataRow["id"]);
				string category = (string)dataRow["category"];
				string text = (string)dataRow["group_name"];
				int level = (int)dataRow["level"];
				int rewardPixels = (int)dataRow["reward_pixels"];
				int rewardPoints = (int)dataRow["reward_points"];
				int requirement = (int)dataRow["progress_needed"];
				AchievementLevel level2 = new AchievementLevel(level, rewardPixels, rewardPoints, requirement);
				if (!achievements.ContainsKey(text))
				{
					Achievement achievement = new Achievement(id, text, category);
					achievement.AddLevel(level2);
					achievements.Add(text, achievement);
				}
				else
				{
					achievements[text].AddLevel(level2);
				}
			}
		}
Example #10
0
 internal static void SaveTrigger(IQueryAdapter dbClient, int itemID, int triggetItemID)
 {
     dbClient.setQuery("INSERT INTO trigger_in_place (original_trigger,triggers_item) VALUES (@my_id,@trigger_item)");
     dbClient.addParameter("my_id", itemID);
     dbClient.addParameter("trigger_item", triggetItemID);
     dbClient.runQuery();
 }
Example #11
0
        internal void InitGroups(IQueryAdapter dbClient)
        {
            dbClient.setQuery("SELECT * FROM groups_elements");
            DataTable table = dbClient.getTable();
            string type;

            foreach (DataRow row in table.Rows)
            {
                type = (string)row["Type"];
                GuildsPartsData data = new GuildsPartsData((int)row["Id"], (string)row["ExtraData1"], (string)row["ExtraData2"]);

                if (type == "Base")
                {
                    baseBadges.Add(data);
                }
                else if (data.ExtraData1.StartsWith("symbol_"))
                {
                    symbolBadges.Add(data);
                }
                else if (type == "Color1")
                {
                    colorBadges1.Add(data);
                }
                else if (type == "Color2")
                {
                    colorBadges2.Add(data);
                }
                else if (type == "Color3")
                {
                    colorBadges3.Add(data);
                    htmlBadges.Add(data.Id, data.ExtraData1);
                }
            }
        }
Example #12
0
        /// <summary>
        ///     Gets the achievement levels.
        /// </summary>
        /// <param name="achievements">The achievements.</param>
        /// <param name="dbClient">The database client.</param>
        internal static void GetAchievementLevels(out Dictionary<string, Achievement> achievements,
            IQueryAdapter dbClient)
        {
            achievements = new Dictionary<string, Achievement>();

            dbClient.SetQuery("SELECT * FROM achievements_data");

            foreach (DataRow dataRow in dbClient.GetTable().Rows)
            {
                string achievementName = dataRow["achievement_name"].ToString();

                AchievementLevel level = new AchievementLevel((uint) dataRow["achievement_level"], (uint) dataRow["reward_pixels"],
                    (uint) dataRow["reward_points"], (uint) dataRow["progress_needed"]);

                if (!achievements.ContainsKey(achievementName))
                    achievements.Add(achievementName,
                        new Achievement((uint) dataRow["id"], achievementName,
                            dataRow["achievement_category"].ToString()));

                if (!achievements[achievementName].CheckLevel(level))
                    achievements[achievementName].AddLevel(level);
                else
                    YupiWriterManager.WriteLine(
                        "Was Found a Duplicated Level for: " + achievementName + ", Level: " + level.Level,
                        "Yupi.Achievements", ConsoleColor.Cyan);
            }
        }
Example #13
0
 public DatabaseConnection(string connectionStr, string connType)
 {
     switch (connType.ToLower())
     {
         case "pgsql":
             _pgsqlConnection = new NpgsqlConnection(connectionStr);
             _adapter = new NormalQueryReactor(this);
             _type = 4;
             break;
         case "ingress":
         case "ingres":
             _ingressConnection = new IngresConnection(connectionStr);
             _adapter = new NormalQueryReactor(this);
             _type = 3;
             break;
         case "firebird":
             _firebirdConnection = new FbConnection(connectionStr);
             _adapter = new NormalQueryReactor(this);
             _type = 2;
             break;
         default: // mySql
             _mysqlConnection = new MySqlConnection(connectionStr);
             _adapter = new NormalQueryReactor(this);
             _type = 1;
             break;
     }
 }
Example #14
0
        /// <summary>
        ///     Loads the rights.
        /// </summary>
        /// <param name="dbClient">The database client.</param>
        internal void LoadRights(IQueryAdapter dbClient)
        {
            ClearRights();

            dbClient.SetQuery("SELECT * FROM server_fuses;");

            DataTable table = dbClient.GetTable();

            if (table == null)
                return;

            foreach (DataRow dataRow in table.Rows)
                if (!_cmdRights.ContainsKey(dataRow["command"].ToString()))
                    _cmdRights.Add(dataRow["command"].ToString(), dataRow["rank"].ToString());
                else
                    Writer.WriteLine($"Duplicate Fuse Command \"{dataRow[0]}\" found", "Yupi.Fuses");

            dbClient.SetQuery("SELECT * FROM server_fuserights");

            DataTable table2 = dbClient.GetTable();

            if (table2 == null)
                return;

            foreach (DataRow dataRow2 in table2.Rows)
                if ((int) dataRow2["min_sub"] > 0)
                    _subRights.Add(dataRow2["fuse"].ToString(), (int) dataRow2["min_sub"]);
                else
                    if (!_rights.ContainsKey(dataRow2["fuse"].ToString()))
                        _rights.Add(dataRow2["fuse"].ToString(), (uint)dataRow2["min_rank"]);             
        }
Example #15
0
        public void ReloadQuests(IQueryAdapter dbClient)
        {
            quests.Clear();

            //dbClient.setQuery("SELECT * FROM quests");
            //DataTable dTable = dbClient.getTable();

            //uint id;
            //string category;
            //int num;
            //int type;
            //uint goalData;
            //string name;
            //int reward;
            //string dataBit;
            //foreach (DataRow dRow in dTable.Rows)
            //{
            //    id = Convert.ToUInt32(dRow["id"]);
            //    category = (string)dRow["category"];
            //    num = (int)dRow["series_number"];
            //    type = (int)dRow["goal_type"];
            //    goalData = Convert.ToUInt32(dRow["goal_data"]);
            //    name = (string)dRow["name"];
            //    reward = (int)dRow["reward"];
            //    dataBit = (string)dRow["data_bit"];

            //    Quest quest = new Quest(id, category, num, (QuestType)type, goalData, name, reward, dataBit);
            //    quests.Add(id, quest);
            //    AddToCounter(category);
            //}
        }
		internal void LoadBans(IQueryAdapter dbClient)
		{
			this.bannedUsernames.Clear();
			this.bannedIPs.Clear();
			this.bannedMachines.Clear();
			dbClient.setQuery("SELECT bantype,value,reason,expire FROM bans");
			DataTable table = dbClient.getTable();
			double num = (double)CyberEnvironment.GetUnixTimestamp();
			foreach (DataRow dataRow in table.Rows)
			{
				string text = (string)dataRow["value"];
				string reasonMessage = (string)dataRow["reason"];
				double num2 = (double)dataRow["expire"];
				string a = (string)dataRow["bantype"];
				ModerationBanType type;
				if (a == "user")
				{
					type = ModerationBanType.USERNAME;
				}
				else
				{
					if (a == "ip")
					{
						type = ModerationBanType.IP;
					}
					else
					{
						type = ModerationBanType.MACHINE;
					}
				}
				ModerationBan moderationBan = new ModerationBan(type, text, reasonMessage, num2);
				if (num2 > num)
				{
					if (moderationBan.Type == ModerationBanType.USERNAME)
					{
                        if (!this.bannedUsernames.Contains(text))
						{
							this.bannedUsernames.Add(text, moderationBan);
						}
					}
					else
					{
						if (moderationBan.Type == ModerationBanType.IP)
						{
                            if (!this.bannedIPs.Contains(text))
							{
								this.bannedIPs.Add(text, moderationBan);
							}
						}
						else
						{
							if (!this.bannedMachines.ContainsKey(text))
							{
								this.bannedMachines.Add(text, moderationBan);
							}
						}
					}
				}
			}
		}
Example #17
0
        //internal void ClearCategories()
        //{
        //    Categories.Clear();
        //}

        internal void LoadTopics(IQueryAdapter dbClient)
        {
            Topics.Clear();
            DataTable TopicData = null;

            dbClient.setQuery("SELECT id, title, body, subject, known_issue FROM help_topics");
            TopicData = dbClient.getTable();

            if (TopicData == null)
            {
                return;
            }

            foreach (DataRow Row in TopicData.Rows)
            {
                HelpTopic NewTopic = new HelpTopic(Convert.ToUInt32(Row["id"]), (string)Row["title"], (string)Row["body"], Convert.ToUInt32(Row["subject"]));

                Topics.Add(Convert.ToUInt32(Row["id"]), NewTopic);

                int Importance = int.Parse(Row["known_issue"].ToString());

                if (Importance == 1)
                {
                    KnownIssues.Add(NewTopic);
                }
                else if (Importance == 2)
                {
                    ImportantTopics.Add(NewTopic);
                }
            }
        }
 /// <summary>
 ///     Initializes the specified database client.
 /// </summary>
 /// <param name="dbClient">The database client.</param>
 internal static void Init(IQueryAdapter dbClient)
 {
     dbClient.SetQuery("SELECT userpeak FROM server_status");
     _userPeak = dbClient.GetInteger();
     _lowPriorityStopWatch = new Stopwatch();
     _lowPriorityStopWatch.Start();
 }
Example #19
0
        public void Initialize(IQueryAdapter dbClient)
        {
            dbClient.setQuery("SELECT id,caption,min_rank FROM navigator_flatcats WHERE enabled = 2");
            DataTable dPrivCats = dbClient.getTable();

            dbClient.setQuery("SELECT * FROM navigator_publics ORDER BY ordernum ASC");
            DataTable dPubItems = dbClient.getTable();

            if (dPrivCats != null)
            {
                PrivateCategories.Clear();
                foreach (DataRow Row in dPrivCats.Rows)
                {
                    PrivateCategories.Add((int)Row["id"], new FlatCat((int)Row["id"], (string)Row["caption"], (int)Row["min_rank"]));
                }
            }

            if (dPubItems != null)
            {
                PublicItems.Clear();
                foreach (DataRow Row in dPubItems.Rows)
                {
                    PublicItems.Add((int)Row["id"], new PublicItem((int)Row["id"], int.Parse(Row["bannertype"].ToString()), (string)Row["caption"], (string)Row["description"],
                        (string)Row["image"], ((Row["image_type"].ToString().ToLower() == "internal") ? PublicImageType.INTERNAL : PublicImageType.EXTERNAL),
                        Convert.ToUInt32(Row["room_id"]), (int)Row["category_id"], (int)Row["category_parent_id"], SilverwaveEnvironment.EnumToBool(Row["recommended"].ToString()), (int)Row["typeofdata"], (string)Row["tag"]));
                }
            }
        }
Example #20
0
 /// <summary>
 /// Gets the achievement levels.
 /// </summary>
 /// <param name="achievements">The achievements.</param>
 /// <param name="dbClient">The database client.</param>
 internal static void GetAchievementLevels(out Dictionary<string, Achievement> achievements, IQueryAdapter dbClient)
 {
     achievements = new Dictionary<string, Achievement>();
     dbClient.SetQuery("SELECT * FROM achievements_data");
     DataTable table = dbClient.GetTable();
     foreach (DataRow dataRow in table.Rows)
     {
         uint id = Convert.ToUInt32(dataRow["id"]);
         var category = (string)dataRow["category"];
         var text = (string)dataRow["group_name"];
         var level = (int)dataRow["level"];
         var rewardPixels = (int)dataRow["reward_pixels"];
         var rewardPoints = (int)dataRow["reward_points"];
         var requirement = (int)dataRow["progress_needed"];
         var level2 = new AchievementLevel(level, rewardPixels, rewardPoints, requirement);
         if (!achievements.ContainsKey(text))
         {
             Achievement achievement = new Achievement(id, text, category);
             achievement.AddLevel(level2);
             achievements.Add(text, achievement);
         }
         else
         {
             if (!achievements[text].CheckLevel(level2))
                 achievements[text].AddLevel(level2);
             else
                 Out.WriteLine("Was Found a Duplicated Level for: " + text + ", Level: " + level2.Level, "[Azure.Achievements]", ConsoleColor.Cyan);
         }
     }
 }
Example #21
0
        public void LoadFromDatabase(IQueryAdapter dbClient, Room insideRoom)
        {
            dbClient.setQuery("SELECT trigger_data FROM trigger_item WHERE trigger_id = @id ");
            dbClient.addParameter("id", (int)this.itemID);
            DataRow dRow = dbClient.getRow();
            if (dRow != null)
            {
                this.delay = Convert.ToInt32(dRow[0].ToString());
            }
            else
            {
                delay = 20;
            }

            dbClient.setQuery("SELECT triggers_item FROM trigger_in_place WHERE original_trigger = " + this.itemID);
            DataTable dTable = dbClient.getTable();
            RoomItem targetItem;
            foreach (DataRow dRows in dTable.Rows)
            {
                targetItem = insideRoom.GetRoomItemHandler().GetItem(Convert.ToUInt32(dRows[0]));
                if (targetItem == null || this.items.Contains(targetItem))
                    continue;
                this.items.Add(targetItem);
            }
        }
Example #22
0
		internal void LoadItems(IQueryAdapter dbClient)
		{
			this.Items = new Dictionary<uint, Item>();
			dbClient.setQuery("SELECT * FROM furniture");
			DataTable table = dbClient.getTable();
			if (table != null)
			{
				string[] array = null;
				foreach (DataRow dataRow in table.Rows)
				{
					try
					{
						uint num = Convert.ToUInt32(dataRow["id"]);
						int sprite = (int)dataRow["sprite_id"];
						int flatId = (int)dataRow["flat_id"];
						string publicName = (string)dataRow["public_name"];
						string name = (string)dataRow["item_name"];
						string type = dataRow["type"].ToString();
						int width = (int)dataRow["width"];
						int length = (int)dataRow["length"];
						double height;
						if (dataRow["stack_height"].ToString().Contains(";"))
						{
							array = dataRow["stack_height"].ToString().Split(new char[]
							{
								';'
							});
							height = Convert.ToDouble(array[0]);
						}
						else
						{
							height = Convert.ToDouble(dataRow["stack_height"]);
						}
						bool stackable = Convert.ToInt32(dataRow["can_stack"]) == 1;
						bool walkable = Convert.ToInt32(dataRow["is_walkable"]) == 1;
						bool isSeat = Convert.ToInt32(dataRow["can_sit"]) == 1;
						bool allowRecycle = Convert.ToInt32(dataRow["allow_recycle"]) == 1;
						bool allowTrade = Convert.ToInt32(dataRow["allow_trade"]) == 1;
						bool allowMarketplaceSell = Convert.ToInt32(dataRow["allow_marketplace_sell"]) == 1;
						bool allowGift = Convert.ToInt32(dataRow["allow_gift"]) == 1;
						bool allowInventoryStack = Convert.ToInt32(dataRow["allow_inventory_stack"]) == 1;
						InteractionType typeFromString = InterractionTypes.GetTypeFromString((string)dataRow["interaction_type"]);
						int modes = (int)dataRow["interaction_modes_count"];
						string vendingIds = (string)dataRow["vending_ids"];
						bool sub = MercuryEnvironment.EnumToBool(dataRow["subscriber"].ToString());
						int effect = (int)dataRow["effectid"];
						bool stackMultiple = MercuryEnvironment.EnumToBool(dataRow["stack_multiplier"].ToString());
						Item value = new Item(num, sprite, publicName, name, type, width, length, height, stackable, walkable, isSeat, allowRecycle, allowTrade, allowMarketplaceSell, allowGift, allowInventoryStack, typeFromString, modes, vendingIds, sub, effect, stackMultiple, array, flatId);
						this.Items.Add(num, value);
					}
					catch (Exception ex)
					{
						Console.WriteLine(ex.ToString());
						Console.ReadKey();
						Logging.WriteLine("Could not load item #" + Convert.ToUInt32(dataRow[0]) + ", please verify the data is okay.", ConsoleColor.Gray);
					}
				}
			}
		}
Example #23
0
        public void SaveToDatabase(IQueryAdapter dbClient)
        {
            dbClient.setQuery("REPLACE INTO trigger_item SET trigger_id = @id, trigger_input = 'integer',  trigger_data = @trigger_data , all_user_triggerable = 0");

            dbClient.addParameter("id", (int)this.item.Id);
            dbClient.addParameter("trigger_data", timeout);
            dbClient.runQuery();
        }
Example #24
0
		internal static void SaveMessage(IQueryAdapter dbClient, uint ToId, uint FromId, string Message)
		{
			dbClient.setQuery("INSERT INTO messenger_offline_messages (to_id, from_id, message, timestamp) VALUES (@tid, @fid, @msg, UNIX_TIMESTAMP())");
			dbClient.addParameter("tid", ToId);
			dbClient.addParameter("fid", FromId);
			dbClient.addParameter("msg", Message);
			dbClient.runQuery();
		}
Example #25
0
        /// <summary>
        ///     Loads the bans.
        /// </summary>
        /// <param name="dbClient">The database client.</param>
        internal void LoadBans(IQueryAdapter dbClient)
        {
            _bannedUsernames.Clear();
            _bannedIPs.Clear();
            _bannedMachines.Clear();
            dbClient.SetQuery("SELECT bantype,value,reason,expire FROM users_bans");
            DataTable table = dbClient.GetTable();
            double num = Yupi.GetUnixTimeStamp();

            foreach (DataRow dataRow in table.Rows)
            {
                string text = (string) dataRow["value"];
                string reasonMessage = (string) dataRow["reason"];
                double num2 = (double) dataRow["expire"];
                string a = (string) dataRow["bantype"];

                ModerationBanType type;

                switch (a)
                {
                    case "user":
                        type = ModerationBanType.UserName;
                        break;

                    case "ip":
                        type = ModerationBanType.Ip;
                        break;

                    default:
                        type = ModerationBanType.Machine;
                        break;
                }

                ModerationBan moderationBan = new ModerationBan(type, text, reasonMessage, num2);

                if (!(num2 > num))
                    continue;

                switch (moderationBan.Type)
                {
                    case ModerationBanType.UserName:
                        if (!_bannedUsernames.Contains(text))
                            _bannedUsernames.Add(text, moderationBan);
                        break;

                    case ModerationBanType.Ip:
                        if (!_bannedIPs.Contains(text))
                            _bannedIPs.Add(text, moderationBan);
                        break;

                    default:
                        if (!_bannedMachines.ContainsKey(text))
                            _bannedMachines.Add(text, moderationBan);
                        break;
                }
            }
        }
Example #26
0
        /// <summary>
        ///     Initializes the specified database client.
        /// </summary>
        /// <param name="dbClient">The database client.</param>
        internal void Initialize(IQueryAdapter dbClient)
        {
            dbClient.SetQuery("SELECT * FROM catalog_clothing");
            ClothingItems = new Dictionary<string, ClothingItem>();
            _table = dbClient.GetTable();

            foreach (DataRow dataRow in _table.Rows)
                ClothingItems.Add((string)dataRow["item_name"], new ClothingItem(dataRow));
        }
Example #27
0
        internal void LoadBots(IQueryAdapter dbClient)
        {
            Bots = new List<RoomBot>();

            dbClient.setQuery("SELECT id, room_id, ai_type, walk_mode, name, motto, look, x, y, z, rotation, min_x, min_y, max_x, max_y FROM bots;");
            DataTable Data = dbClient.getTable();

            dbClient.setQuery("SELECT id, bot_id, keywords, response_text, mode, serve_id FROM bots_responses;");
            DataTable BotResponses = dbClient.getTable();

            dbClient.setQuery("SELECT text, shout, bot_id FROM bots_speech;");
            DataTable BotSpeech = dbClient.getTable();

            List<BotResponse> Responses = new List<BotResponse>();
            List<RandomSpeech> Speeches = new List<RandomSpeech>();

            foreach (DataRow Row in BotResponses.Rows)
            {
                Responses.Add(new BotResponse(Convert.ToUInt32(Row["bot_id"]), (string)Row["keywords"], (string)Row["response_text"], Row["mode"].ToString(), (int)Row["serve_id"]));
            }

            foreach (DataRow Row in BotSpeech.Rows)
            {
                Speeches.Add(new RandomSpeech((string)Row["text"], ButterflyEnvironment.EnumToBool(Row["shout"].ToString()), Convert.ToUInt32(Row["bot_id"])));
            }

            if (Data == null)
            {
                return;
            }

            foreach (DataRow Row in Data.Rows)
            {
                string BotAI = (string)Row["ai_type"];
                AIType BotAIType;
                switch (BotAI)
                {
                    case "generic":
                        BotAIType = AIType.Generic;
                        break;
                    case "guide":
                        BotAIType = AIType.Guide;
                        break;
                    case "pet":
                        BotAIType = AIType.Pet;
                        break;
                    default:
                        BotAIType = AIType.Generic;
                        break;
                }

                Bots.Add(new RoomBot(Convert.ToUInt32(Row["id"]), Convert.ToUInt32(Row["room_id"]), BotAIType, (string)Row["walk_mode"],
                    (String)Row["name"], (string)Row["motto"], (String)Row["look"], (int)Row["x"], (int)Row["y"], (int)Row["z"],
                    (int)Row["rotation"], (int)Row["min_x"], (int)Row["min_y"], (int)Row["max_x"], (int)Row["max_y"], ref Speeches, ref Responses));
            }
        }
Example #28
0
        internal static WiredLoaderObject LoadItem(RoomItem item, Room room, IQueryAdapter dbClient)
        {
            InteractionType type = item.GetBaseItem().InteractionType;
            List<RoomItem> items = null;
            if (NeedsFurnitures(type))
            {
                dbClient.setQuery("SELECT trigger_item FROM wired_to_item WHERE wired_id = " + item.Id);
                DataTable dTable = dbClient.getTable();
                RoomItem targetItem;
                items = new List<RoomItem>(5);
                foreach (DataRow dRows in dTable.Rows)
                {
                    targetItem = room.GetRoomItemHandler().GetItem(Convert.ToUInt32(dRows[0]));
                    if (targetItem == null || items.Contains(targetItem))
                    {
                        continue;
                    }

                    items.Add(targetItem);
                }
            }

            string[] settings = null;
            
            if(HasSettings(type))
            {
                settings = new string[4];
                dbClient.setQuery("SELECT data_one, data_two,data_three, data_four FROM wired_data WHERE wired_id = " + item.Id);

                DataRow dRow = dbClient.getRow();
                if (dRow != null)
                {
                    for (int i = 0; i < 4; i++)
                    {
                        settings[i] = dRow[i].ToString();
                    }
                }
                else
                {
                    settings = new string[] { "", "", "", "" };
                }
            }

            Dictionary<uint, OriginalItemLocation> originalPositionList = null;
            if (HasOriginalItemLocations(type))
            {
                originalPositionList = new Dictionary<uint, OriginalItemLocation>(5);
                dbClient.setQuery("SELECT item_id, original_x, original_y, rotation, height, extradata FROM wired_original_item_locations WHERE wired_id = " + item.Id);
                DataTable dTable = dbClient.getTable();
                foreach (DataRow dRows in dTable.Rows)
                {
                    originalPositionList.Add(uint.Parse(dRows[0].ToString()), new OriginalItemLocation(uint.Parse(dRows[0].ToString()), int.Parse(dRows[1].ToString()), int.Parse(dRows[2].ToString()), (double)Convert.ToDecimal(dRows[4]), int.Parse(dRows[3].ToString()), dRows[5].ToString()));
                }
            }
            return new WiredLoaderObject(items, originalPositionList, settings);
        }
Example #29
0
        internal GroupManager(IQueryAdapter dbClient)
        {
            this.lastCycle = DateTime.Now;
            this.Groups = new Dictionary<int, Group>();
            this._groupReferences = new Dictionary<int, int>();
            this._groupDeleteQueue = new Queue();
            //LoadGroups(dbClient);

            FirewindEnvironment.GetGame().GetClientManager().OnLoggedInClient += GroupManager_OnLoggedInClient;
        }
Example #30
0
 public void LoadFromDatabase(IQueryAdapter dbClient, Room insideRoom)
 {
     dbClient.setQuery("SELECT trigger_data FROM trigger_item WHERE trigger_id = @id ");
     dbClient.addParameter("id", (int)this.item.Id);
     DataRow dRow = dbClient.getRow();
     if (dRow != null)
         this.requiredCycles = Convert.ToInt32(dRow[0].ToString());
     else
         this.requiredCycles = 20;
 }
Example #31
0
 public void LoadFromDatabase(IQueryAdapter dbClient, Room insideRoom)
 {
     dbClient.setQuery("SELECT trigger_data FROM wired_data WHERE trigger_id = @id ");
     dbClient.addParameter("id", (int)item.Id);
     cyclesRequired = dbClient.getInteger();
 }
Example #32
0
 internal static void Init(IQueryAdapter dbClient)
 {
     dbClient.setQuery("SELECT userpeak FROM server_status");
     UserPeak   = dbClient.getInteger();
     mColdTitle = string.Empty;
 }
Example #33
0
 public DatabaseConnection(string ConnectionStr)
 {
     this._con     = new MySqlConnection(ConnectionStr);
     this._adapter = new NormalQueryReactor(this);
 }
Example #34
0
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            if (!Session.GetHabbo().InRoom)
            {
                return;
            }

            Room Room;

            if (!CloudServer.GetGame().GetRoomManager().TryGetRoom(Session.GetHabbo().CurrentRoomId, out Room))
            {
                return;
            }

            if (!Room.CheckRights(Session, true))
            {
                return;
            }

            int BotId = Packet.PopInt();
            int X     = Packet.PopInt();
            int Y     = Packet.PopInt();

            if (!Room.GetGameMap().CanWalk(X, Y, false) || !Room.GetGameMap().ValidTile(X, Y))
            {
                Session.SendNotification("Não pode colocar um bot aqui!");
                return;
            }

            Bot Bot = null;

            if (!Session.GetHabbo().GetInventoryComponent().TryGetBot(BotId, out Bot))
            {
                return;
            }

            int BotCount = 0;

            foreach (RoomUser User in Room.GetRoomUserManager().GetUserList().ToList())
            {
                if (User == null || User.IsPet || !User.IsBot)
                {
                    continue;
                }

                BotCount += 1;
            }

            if (BotCount >= 25 && !Session.GetHabbo().GetPermissions().HasRight("bot_place_any_override"))
            {
                Session.SendNotification("Sentimos muito, mas só pode colocar 25 bots no quarto!");
                return;
            }

            //TODO: Hmm, maybe not????
            using (IQueryAdapter dbClient = CloudServer.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("UPDATE `bots` SET `room_id` = @roomId, `x` = @CoordX, `y` = @CoordY WHERE `id` = @BotId LIMIT 1");
                dbClient.AddParameter("roomId", Room.RoomId);
                dbClient.AddParameter("BotId", Bot.Id);
                dbClient.AddParameter("CoordX", X);
                dbClient.AddParameter("CoordY", Y);
                dbClient.RunQuery();
            }

            List <RandomSpeech> BotSpeechList = new List <RandomSpeech>();

            //TODO: Grab data?
            DataRow GetData = null;

            using (IQueryAdapter dbClient = CloudServer.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("SELECT `ai_type`,`rotation`,`walk_mode`,`automatic_chat`,`speaking_interval`,`mix_sentences`,`chat_bubble` FROM `bots` WHERE `id` = @BotId LIMIT 1");
                dbClient.AddParameter("BotId", Bot.Id);
                GetData = dbClient.getRow();

                dbClient.SetQuery("SELECT * FROM `bots_speech` WHERE `bot_id` = @BotId ORDER BY id ASC");
                dbClient.AddParameter("BotId", Bot.Id);
                DataTable BotSpeech = dbClient.getTable();

                foreach (DataRow Speech in BotSpeech.Rows)
                {
                    BotSpeechList.Add(new RandomSpeech(Convert.ToString(Speech["text"]), Bot.Id));
                }
            }

            RoomUser BotUser = Room.GetRoomUserManager().DeployBot(new RoomBot(Bot.Id, Session.GetHabbo().CurrentRoomId, Convert.ToString(GetData["ai_type"]), Convert.ToString(GetData["walk_mode"]), Bot.Name, "", Bot.Figure, X, Y, 0, 4, 0, 0, 0, 0, ref BotSpeechList, "", 0, Bot.OwnerId, CloudServer.EnumToBool(GetData["automatic_chat"].ToString()), Convert.ToInt32(GetData["speaking_interval"]), CloudServer.EnumToBool(GetData["mix_sentences"].ToString()), Convert.ToInt32(GetData["chat_bubble"])), null);

            using (IQueryAdapter dbClient = CloudServer.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("SELECT * FROM `bots` WHERE `id` = @BotId ");
                dbClient.AddParameter("BotId", Bot.Id);
                DataTable BotSpeechData = dbClient.getTable();
                foreach (DataRow SpeechData in BotSpeechData.Rows)
                {
                    BotUser.Chat("Olá!", false, (Convert.ToInt32(SpeechData["chat_bubble"])));
                }
            }

            Room.GetGameMap().UpdateUserMovement(new System.Drawing.Point(X, Y), new System.Drawing.Point(X, Y), BotUser);


            Bot ToRemove = null;

            if (!Session.GetHabbo().GetInventoryComponent().TryRemoveBot(BotId, out ToRemove))
            {
                Console.WriteLine("Erro em eliminar no bot: " + ToRemove.Id);
                return;
            }
            Session.SendMessage(new BotInventoryComposer(Session.GetHabbo().GetInventoryComponent().GetBots()));
        }
        public void CloseAll()
        {
            foreach (GameClient client in GetClients.ToList())
            {
                if (client == null)
                {
                    continue;
                }

                if (client.GetHabbo() != null)
                {
                    try
                    {
                        using (IQueryAdapter dbClient = BiosEmuThiago.GetDatabaseManager().GetQueryReactor())
                        {
                            dbClient.runFastQuery(client.GetHabbo().GetQueryString);
                        }
                        Console.Clear();
                        log.Info("<<- DESLIGANDO SERVIDOR ->> GUARDANDO INVENTARIOS");
                    }
                    catch
                    {
                    }
                }
            }

            log.Info("Pronto, economizou o inventário dos usuários!");
            log.Info("Fechando as conexões do servidor ...");
            try
            {
                foreach (GameClient client in GetClients.ToList())
                {
                    if (client == null || client.GetConnection() == null)
                    {
                        continue;
                    }

                    try
                    {
                        BiosEmuThiago.GetConnectionManager().Destroy();
                        client.GetConnection().Dispose();
                    }
                    catch (Exception e)
                    {
                        ExceptionLogger.LogException(e);
                    }

                    Console.Clear();
                    log.Info("<<- APAGANDO SERVIDOR ->> Conexões de fechamento");
                }
            }
            catch (Exception e)
            {
                ExceptionLogger.LogException(e);
            }

            if (_clients.Count > 0)
            {
                _clients.Clear();
            }

            log.Info("Conexões fechadas!");
        }
        public void Parse(GameClient Session, ClientPacket Packet)
        {
            int pollId     = Packet.PopInt();
            int questionId = Packet.PopInt();
            int count      = Packet.PopInt();


            RoomPoll poll = null;

            if (Session == null || Session.GetHabbo() == null)
            {
                return;
            }

            Room room = Session.GetHabbo().CurrentRoom;

            if (room == null)
            {
                return;
            }

            if (questionId == -1)
            {
                string answer = Packet.PopString();
                if (room.poolQuestion != string.Empty)
                {
                    if (room.yesPoolAnswers.Contains(Session.GetHabbo().Id) || room.noPoolAnswers.Contains(Session.GetHabbo().Id))
                    {
                        return;
                    }

                    if (answer.Equals("1"))
                    {
                        room.yesPoolAnswers.Add(Session.GetHabbo().Id);
                        NeonEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_PollVote", 1);
                    }
                    else
                    {
                        room.noPoolAnswers.Add(Session.GetHabbo().Id);
                        NeonEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_PollVote", 1);
                    }

                    room.SendMessage(new QuickPollResultMessageComposer(Session.GetHabbo().Id, answer, room.yesPoolAnswers.Count, room.noPoolAnswers.Count));
                    return;
                }
            }
            else if (NeonEnvironment.GetGame().GetPollManager().TryGetPollForRoom(room.Id, out poll))
            {
                if (!poll.Questions.TryGetValue(questionId, out RoomPollQuestion question))
                {
                    return;
                }

                string answer = "";

                switch (question.Type)
                {
                case RoomPollQuestionType.Textbox:
                    answer = "" + Packet.PopString();
                    break;

                case RoomPollQuestionType.Radio:
                    answer = "" + Packet.PopString();
                    break;

                case RoomPollQuestionType.Checkbox:
                    for (int i = 0; i < count; ++i)
                    {
                        answer = "" + answer + ":" + Packet.PopString();
                    }
                    break;
                }

                using (IQueryAdapter dbClient = NeonEnvironment.GetDatabaseManager().GetQueryReactor())
                {
                    dbClient.SetQuery("INSERT INTO `user_room_poll_results` (`user_id`,`poll_id`,`question_id`,`answer`,`timestamp`) VALUES (@uid,@pid,@qid,@answer,@timestamp);");
                    dbClient.AddParameter("uid", Session.GetHabbo().Id);
                    dbClient.AddParameter("pid", poll.Id);
                    dbClient.AddParameter("qid", question.Id);
                    dbClient.AddParameter("answer", answer);
                    dbClient.AddParameter("timestamp", UnixTimestamp.GetNow());
                    dbClient.RunQuery();
                }

                if (question.SeriesOrder >= poll.LastQuestionId)
                {
                    Session.GetHabbo().GetPolls().TryAdd(poll.Id);

                    if (!string.IsNullOrEmpty(poll.BadgeReward))
                    {
                        if (!Session.GetHabbo().GetBadgeComponent().HasBadge(poll.BadgeReward))
                        {
                            Session.GetHabbo().GetBadgeComponent().GiveBadge(poll.BadgeReward, true, Session);
                        }
                    }

                    if (poll.CreditReward > 0)
                    {
                        Session.GetHabbo().Credits += poll.CreditReward;
                        Session.SendMessage(new CreditBalanceComposer(Session.GetHabbo().Credits));
                    }

                    if (poll.PixelReward > 0)
                    {
                        Session.GetHabbo().Duckets += poll.PixelReward;
                        Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().Duckets, poll.PixelReward));
                    }
                }
            }
            else
            {
                return;
            }
        }
Example #37
0
 public void DeleteFromDatabase(IQueryAdapter dbClient)
 {
     dbClient.RunQuery("DELETE FROM wired_items WHERE trigger_id = '" + this.itemID + "'");
 }
Example #38
0
        public void Fill(DataRow Row)
        {
            this.Id          = Convert.ToInt32(Row["id"]);
            this.Name        = (string)Row["caption"];
            this.Description = (string)Row["description"];
            this.OwnerName   = (string)Row["owner"];
            this.OwnerId     = 0;
            this.Langue      = Language.FRANCAIS;
            using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                queryreactor.SetQuery("SELECT id, langue FROM users WHERE username = @owner");
                queryreactor.AddParameter("owner", this.OwnerName);
                DataRow UserRow = queryreactor.GetRow();
                if (UserRow != null)
                {
                    this.OwnerId = Convert.ToInt32(UserRow["id"]);
                    this.Langue  = LanguageManager.ParseLanguage(UserRow["langue"].ToString());
                }
            }
            switch (Row["state"].ToString().ToLower())
            {
            case "open":
                this.State = 0;
                break;

            case "password":
                this.State = 2;
                break;

            case "hide":
                this.State = 3;
                break;

            default:
                this.State = 1;
                break;
            }
            this.Category            = (int)Row["category"];
            this.UsersNow            = (int)Row["users_now"];
            this.UsersMax            = (int)Row["users_max"];
            this.ModelName           = (string)Row["model_name"];
            this.Score               = (int)Row["score"];
            this.Tags                = new List <string>();
            this.AllowPets           = ButterflyEnvironment.EnumToBool(Row["allow_pets"].ToString());
            this.AllowPetsEating     = ButterflyEnvironment.EnumToBool(Row["allow_pets_eat"].ToString());
            this.AllowWalkthrough    = ButterflyEnvironment.EnumToBool(Row["allow_walkthrough"].ToString());
            this.AllowRightsOverride = ButterflyEnvironment.EnumToBool(Row["allow_rightsoverride"].ToString());
            this.Hidewall            = ButterflyEnvironment.EnumToBool(Row["allow_hidewall"].ToString());
            this.Password            = (string)Row["password"];
            this.Wallpaper           = (string)Row["wallpaper"];
            this.Floor               = (string)Row["floor"];
            this.Landscape           = (string)Row["landscape"];
            this.FloorThickness      = (int)Row["floorthick"];
            this.WallThickness       = (int)Row["wallthick"];

            this.ChatType            = (int)Row["chat_type"];
            this.ChatBalloon         = (int)Row["chat_balloon"];
            this.ChatSpeed           = (int)Row["chat_speed"];
            this.ChatMaxDistance     = (int)Row["chat_max_distance"];
            this.ChatFloodProtection = (int)Row["chat_flood_protection"];

            this.MuteFuse   = Convert.ToInt32((string)Row["moderation_mute_fuse"]);
            this.WhoCanKick = Convert.ToInt32((string)Row["moderation_kick_fuse"]);
            this.BanFuse    = Convert.ToInt32((string)Row["moderation_ban_fuse"]);
            this.GroupId    = (int)Row["groupId"];
            Group Group;

            ButterflyEnvironment.GetGame().GetGroupManager().TryGetGroup(this.GroupId, out Group);
            this.Group      = Group;
            this.HideWireds = ButterflyEnvironment.EnumToBool(Row["allow_hidewireds"].ToString());

            this.TrocStatus = Convert.ToInt32((string)Row["TrocStatus"]);
            Dictionary <int, int> Items = new Dictionary <int, int>();

            if (!string.IsNullOrEmpty(Row["icon_items"].ToString()))
            {
                string str1    = Row["icon_items"].ToString();
                char[] chArray = new char[1] {
                    '|'
                };
                foreach (string str2 in str1.Split(chArray))
                {
                    if (!string.IsNullOrEmpty(str2))
                    {
                        string[] strArray = str2.Replace('.', ',').Split(new char[1] {
                            ','
                        });
                        int result1 = 0;
                        int result2 = 0;
                        int.TryParse(strArray[0], out result1);
                        if (strArray.Length > 1)
                        {
                            int.TryParse(strArray[1], out result2);
                        }
                        try
                        {
                            if (!Items.ContainsKey(result1))
                            {
                                Items.Add(result1, result2);
                            }
                        }
                        catch (Exception ex)
                        {
                            Logging.LogException("Exception: " + (ex).ToString() + "[" + str2 + "]");
                        }
                    }
                }
            }
            string str3 = Row["tags"].ToString();

            char[] chArray1 = new char[1] {
                ','
            };
            foreach (string str1 in str3.Split(chArray1))
            {
                this.Tags.Add(str1);
            }

            this.SellPrice = (int)Row["price"];

            this.mModel = ButterflyEnvironment.GetGame().GetRoomManager().GetModel(this.ModelName, this.Id);
        }
Example #39
0
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            int GroupId = Packet.PopInt();
            int UserId  = Packet.PopInt();

            Group Group = null;

            if (!PlusEnvironment.GetGame().GetGroupManager().TryGetGroup(GroupId, out Group))
            {
                return;
            }

            if (UserId == Session.GetHabbo().Id)
            {
                if (Group.IsMember(UserId))
                {
                    Group.DeleteMember(UserId);
                }

                if (Group.IsAdmin(UserId))
                {
                    if (Group.IsAdmin(UserId))
                    {
                        Group.TakeAdmin(UserId);
                    }

                    Room Room;

                    if (!PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(Group.RoomId, out Room))
                    {
                        return;
                    }

                    RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                    if (User != null)
                    {
                        User.RemoveStatus("flatctrl 1");
                        User.UpdateNeeded = true;

                        if (User.GetClient() != null)
                        {
                            User.GetClient().SendPacket(new YouAreControllerComposer(0));
                        }
                    }
                }

                using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                {
                    dbClient.SetQuery("DELETE FROM `group_memberships` WHERE `group_id` = @GroupId AND `user_id` = @UserId");
                    dbClient.AddParameter("GroupId", GroupId);
                    dbClient.AddParameter("UserId", UserId);
                    dbClient.RunQuery();
                }

                Session.SendPacket(new GroupInfoComposer(Group, Session));
                if (Session.GetHabbo().GetStats().FavouriteGroupId == GroupId)
                {
                    Session.GetHabbo().GetStats().FavouriteGroupId = 0;
                    using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                    {
                        dbClient.SetQuery("UPDATE `user_stats` SET `groupid` = '0' WHERE `id` = @userId LIMIT 1");
                        dbClient.AddParameter("userId", UserId);
                        dbClient.RunQuery();
                    }

                    if (Group.AdminOnlyDeco == 0)
                    {
                        Room Room;
                        if (!PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(Group.RoomId, out Room))
                        {
                            return;
                        }

                        RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                        if (User != null)
                        {
                            User.RemoveStatus("flatctrl 1");
                            User.UpdateNeeded = true;

                            if (User.GetClient() != null)
                            {
                                User.GetClient().SendPacket(new YouAreControllerComposer(0));
                            }
                        }
                    }

                    if (Session.GetHabbo().InRoom&& Session.GetHabbo().CurrentRoom != null)
                    {
                        RoomUser User = Session.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);
                        if (User != null)
                        {
                            Session.GetHabbo().CurrentRoom.SendPacket(new UpdateFavouriteGroupComposer(Group, User.VirtualId));
                        }
                        Session.GetHabbo().CurrentRoom.SendPacket(new RefreshFavouriteGroupComposer(Session.GetHabbo().Id));
                    }
                    else
                    {
                        Session.SendPacket(new RefreshFavouriteGroupComposer(Session.GetHabbo().Id));
                    }
                }
                return;
            }
            else
            {
                if (Group.CreatorId == Session.GetHabbo().Id || Group.IsAdmin(Session.GetHabbo().Id))
                {
                    if (!Group.IsMember(UserId))
                    {
                        return;
                    }

                    if (Group.IsAdmin(UserId) && Group.CreatorId != Session.GetHabbo().Id)
                    {
                        Session.SendNotification("Sorry, only group creators can remove other administrators from the group.");
                        return;
                    }

                    if (Group.IsAdmin(UserId))
                    {
                        Group.TakeAdmin(UserId);
                    }

                    if (Group.IsMember(UserId))
                    {
                        Group.DeleteMember(UserId);
                    }

                    List <UserCache> Members   = new List <UserCache>();
                    List <int>       MemberIds = Group.GetAllMembers;
                    foreach (int Id in MemberIds.ToList())
                    {
                        UserCache GroupMember = PlusEnvironment.GetGame().GetCacheManager().GenerateUser(Id);
                        if (GroupMember == null)
                        {
                            continue;
                        }

                        if (!Members.Contains(GroupMember))
                        {
                            Members.Add(GroupMember);
                        }
                    }


                    int FinishIndex  = 14 < Members.Count ? 14 : Members.Count;
                    int MembersCount = Members.Count;

                    Session.SendPacket(new GroupMembersComposer(Group, Members.Take(FinishIndex).ToList(), MembersCount, 1, (Group.CreatorId == Session.GetHabbo().Id || Group.IsAdmin(Session.GetHabbo().Id)), 0, ""));
                }
            }
        }
Example #40
0
        /// <summary>
        ///     Bans the user.
        /// </summary>
        /// <param name="client">The client.</param>
        /// <param name="moderator">The moderator.</param>
        /// <param name="lengthSeconds">The length seconds.</param>
        /// <param name="reason">The reason.</param>
        /// <param name="ipBan">if set to <c>true</c> [ip ban].</param>
        /// <param name="machine">if set to <c>true</c> [machine].</param>
        internal void BanUser(GameClient client, string moderator, double lengthSeconds, string reason, bool ipBan,
                              bool machine)
        {
            ModerationBanType type    = ModerationBanType.UserName;
            string            text    = client.GetHabbo().UserName;
            string            typeStr = "user";
            double            num     = Yupi.GetUnixTimeStamp() + lengthSeconds;

            if (ipBan)
            {
                type = ModerationBanType.Ip;

                using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
                {
                    queryReactor.SetQuery("SELECT ip_last FROM users WHERE username = @name LIMIT 1");
                    queryReactor.AddParameter("name", text);
                    text = queryReactor.GetString();
                }

                typeStr = "ip";
            }
            if (machine)
            {
                type    = ModerationBanType.Machine;
                typeStr = "machine";
                text    = client.MachineId;
            }

            ModerationBan moderationBan = new ModerationBan(type, text, reason, num);

            switch (moderationBan.Type)
            {
            case ModerationBanType.Ip:
                if (_bannedIPs.Contains(text))
                {
                    _bannedIPs[text] = moderationBan;
                }
                else
                {
                    _bannedIPs.Add(text, moderationBan);
                }
                break;

            case ModerationBanType.Machine:
                if (_bannedMachines.ContainsKey(text))
                {
                    _bannedMachines[text] = moderationBan;
                }
                else
                {
                    _bannedMachines.Add(text, moderationBan);
                }
                break;

            default:
                if (_bannedUsernames.Contains(text))
                {
                    _bannedUsernames[text] = moderationBan;
                }
                else
                {
                    _bannedUsernames.Add(text, moderationBan);
                }
                break;
            }

            using (IQueryAdapter queryreactor2 = Yupi.GetDatabaseManager().GetQueryReactor())
            {
                queryreactor2.SetQuery(
                    "INSERT INTO users_bans (bantype,value,reason,expire,added_by,added_date) VALUES (@rawvar,@var,@reason,@num,@mod,@time)");
                queryreactor2.AddParameter("rawvar", typeStr);
                queryreactor2.AddParameter("var", text);
                queryreactor2.AddParameter("reason", reason);
                queryreactor2.AddParameter("num", num);
                queryreactor2.AddParameter("mod", moderator);
                queryreactor2.AddParameter("time", DateTime.Now.ToLongDateString());
                queryreactor2.RunQuery();
            }

            if (ipBan)
            {
                DataTable dataTable;

                using (IQueryAdapter queryreactor3 = Yupi.GetDatabaseManager().GetQueryReactor())
                {
                    queryreactor3.SetQuery("SELECT id FROM users WHERE ip_last = @var");
                    queryreactor3.AddParameter("var", text);
                    dataTable = queryreactor3.GetTable();
                }

                if (dataTable != null)
                {
                    using (IQueryAdapter queryreactor4 = Yupi.GetDatabaseManager().GetQueryReactor())
                    {
                        foreach (DataRow dataRow in dataTable.Rows)
                        {
                            queryreactor4.RunFastQuery(
                                $"UPDATE users_info SET bans = bans + 1 WHERE user_id = {Convert.ToUInt32(dataRow["id"])}");
                        }
                    }
                }

                BanUser(client, moderator, lengthSeconds, reason, false, false);
                return;
            }

            using (IQueryAdapter queryreactor5 = Yupi.GetDatabaseManager().GetQueryReactor())
                queryreactor5.RunFastQuery(
                    $"UPDATE users_info SET bans = bans + 1 WHERE user_id = {client.GetHabbo().Id}");

            client.Disconnect("banned");
        }
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            int GroupId = Packet.PopInt();

            Group Group = null;

            if (!PlusEnvironment.GetGame().GetGroupManager().TryGetGroup(GroupId, out Group))
            {
                return;
            }

            if (Group.CreatorId != Session.GetHabbo().Id)
            {
                return;
            }

            int Type         = Packet.PopInt();
            int FurniOptions = Packet.PopInt();

            switch (Type)
            {
            default:
            case 0:
                Group.GroupType = GroupType.OPEN;
                break;

            case 1:
                Group.GroupType = GroupType.LOCKED;
                break;

            case 2:
                Group.GroupType = GroupType.PRIVATE;
                break;
            }

            if (Group.GroupType != GroupType.LOCKED)
            {
                if (Group.GetRequests.Count > 0)
                {
                    foreach (int UserId in Group.GetRequests.ToList())
                    {
                        Group.HandleRequest(UserId, false);
                    }

                    Group.ClearRequests();
                }
            }

            using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("UPDATE `groups` SET `state` = @GroupState, `admindeco` = @AdminDeco WHERE `id` = @groupId LIMIT 1");
                dbClient.AddParameter("GroupState", (Group.GroupType == GroupType.OPEN ? 0 : Group.GroupType == GroupType.LOCKED ? 1 : 2).ToString());
                dbClient.AddParameter("AdminDeco", (FurniOptions == 1 ? 1 : 0).ToString());
                dbClient.AddParameter("groupId", Group.Id);
                dbClient.RunQuery();
            }

            Group.AdminOnlyDeco = FurniOptions;

            Room Room;

            if (!PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(Group.RoomId, out Room))
            {
                return;
            }

            foreach (RoomUser User in Room.GetRoomUserManager().GetRoomUsers().ToList())
            {
                if (Room.OwnerId == User.UserId || Group.IsAdmin(User.UserId) || !Group.IsMember(User.UserId))
                {
                    continue;
                }

                if (FurniOptions == 1)
                {
                    User.RemoveStatus("flatctrl 1");
                    User.UpdateNeeded = true;

                    User.GetClient().SendPacket(new YouAreControllerComposer(0));
                }
                else if (FurniOptions == 0 && !User.Statusses.ContainsKey("flatctrl 1"))
                {
                    User.SetStatus("flatctrl 1", "");
                    User.UpdateNeeded = true;

                    User.GetClient().SendPacket(new YouAreControllerComposer(1));
                }
            }

            Session.SendPacket(new GroupInfoComposer(Group, Session));
        }
Example #42
0
        /// <summary>
        ///     Loads the bans.
        /// </summary>
        /// <param name="dbClient">The database client.</param>
        internal void LoadBans(IQueryAdapter dbClient)
        {
            _bannedUsernames.Clear();
            _bannedIPs.Clear();
            _bannedMachines.Clear();
            dbClient.SetQuery("SELECT bantype,value,reason,expire FROM users_bans");
            DataTable table = dbClient.GetTable();
            double    num   = Yupi.GetUnixTimeStamp();

            foreach (DataRow dataRow in table.Rows)
            {
                string text          = (string)dataRow["value"];
                string reasonMessage = (string)dataRow["reason"];
                double num2          = (double)dataRow["expire"];
                string a             = (string)dataRow["bantype"];

                ModerationBanType type;

                switch (a)
                {
                case "user":
                    type = ModerationBanType.UserName;
                    break;

                case "ip":
                    type = ModerationBanType.Ip;
                    break;

                default:
                    type = ModerationBanType.Machine;
                    break;
                }

                ModerationBan moderationBan = new ModerationBan(type, text, reasonMessage, num2);

                if (!(num2 > num))
                {
                    continue;
                }

                switch (moderationBan.Type)
                {
                case ModerationBanType.UserName:
                    if (!_bannedUsernames.Contains(text))
                    {
                        _bannedUsernames.Add(text, moderationBan);
                    }
                    break;

                case ModerationBanType.Ip:
                    if (!_bannedIPs.Contains(text))
                    {
                        _bannedIPs.Add(text, moderationBan);
                    }
                    break;

                default:
                    if (!_bannedMachines.ContainsKey(text))
                    {
                        _bannedMachines.Add(text, moderationBan);
                    }
                    break;
                }
            }
        }
Example #43
0
        internal static void InitGroups(IQueryAdapter dbClient)
        {
            htmlBadges1 = new Hashtable();
            htmlBadges2 = new Hashtable();

            List <GuildsParts>            BaseBadges   = new List <GuildsParts>();
            List <GuildsParts>            SymbolBadges = new List <GuildsParts>();
            Dictionary <int, GuildsParts> ColorBadges1 = new Dictionary <int, GuildsParts>();
            Dictionary <int, GuildsParts> ColorBadges2 = new Dictionary <int, GuildsParts>();
            Dictionary <int, GuildsParts> ColorBadges3 = new Dictionary <int, GuildsParts>();

            dbClient.setQuery("SELECT * FROM group_badges_part");
            DataTable Row = dbClient.getTable();

            foreach (DataRow Data in Row.Rows)
            {
                if (Data["type"].ToString() == "base")
                {
                    BaseBadges.Add(new GuildsParts(Convert.ToInt32(Data["id"]), (string)Data["code"], (string)Data["code2"]));
                }
                else if (Data["type"].ToString() == "symbol")
                {
                    SymbolBadges.Add(new GuildsParts(Convert.ToInt32(Data["id"]), (string)Data["code"], (string)Data["code2"]));
                }
                else if (Data["type"].ToString() == "base_color")
                {
                    ColorBadges1.Add(Convert.ToInt32(Data["id"]), new GuildsParts(Convert.ToInt32(Data["id"]), (string)Data["code"], (string)Data["code2"]));
                }
                else if (Data["type"].ToString() == "symbol_color")
                {
                    ColorBadges2.Add(Convert.ToInt32(Data["id"]), new GuildsParts(Convert.ToInt32(Data["id"]), (string)Data["code"], (string)Data["code2"]));

                    if (!htmlBadges1.ContainsKey(Convert.ToInt32(Data["id"])))
                    {
                        htmlBadges1.Add(Convert.ToInt32(Data["id"]), (string)Data["code"]);
                    }
                }
                else if (Data["type"].ToString() == "other_color")
                {
                    ColorBadges3.Add(Convert.ToInt32(Data["id"]), new GuildsParts(Convert.ToInt32(Data["id"]), (string)Data["code"], (string)Data["code2"]));

                    if (!htmlBadges2.ContainsKey(Convert.ToInt32(Data["id"])))
                    {
                        htmlBadges2.Add(Convert.ToInt32(Data["id"]), (string)Data["code"]);
                    }
                }
            }

            ServerMessage Itemm = new ServerMessage(Outgoing.SendGroupsElements);

            Itemm.AppendInt32(BaseBadges.Count); // Count of items 'Bases'
            foreach (var GD in BaseBadges)
            {
                Itemm.AppendInt32(GD.Id);
                Itemm.AppendString(GD.ExtraData1);
                Itemm.AppendString(GD.ExtraData2);
            }

            Itemm.AppendInt32(SymbolBadges.Count); // count symbols
            foreach (var GD in SymbolBadges)
            {
                Itemm.AppendInt32(GD.Id);
                Itemm.AppendString(GD.ExtraData1);
                Itemm.AppendString(GD.ExtraData2);
            }

            Itemm.AppendInt32(ColorBadges1.Count);
            foreach (var GD in ColorBadges1.Values)
            {
                Itemm.AppendInt32(GD.Id);
                Itemm.AppendString(GD.ExtraData1);
            }

            Itemm.AppendInt32(ColorBadges2.Count);
            foreach (var GD in ColorBadges2.Values)
            {
                Itemm.AppendInt32(GD.Id);
                Itemm.AppendString(GD.ExtraData1);
            }

            Itemm.AppendInt32(ColorBadges3.Count);
            foreach (var GD in ColorBadges3.Values)
            {
                Itemm.AppendInt32(GD.Id);
                Itemm.AppendString(GD.ExtraData1);
            }

            OtanixEnvironment.GetGame().GetCatalog().mGroupPage = Itemm;

            BaseBadges.Clear();
            SymbolBadges.Clear();
            ColorBadges1.Clear();
            ColorBadges2.Clear();
            ColorBadges3.Clear();

            BaseBadges   = null;
            SymbolBadges = null;
            ColorBadges1 = null;
            ColorBadges2 = null;
            ColorBadges3 = null;
        }
        public void Parse(GameClient Session, ClientPacket Packet)
        {
            if (Session == null || Session.GetHabbo() == null || Session.GetHabbo().GetMessenger() == null)
            {
                return;
            }

            int User = Packet.PopInt();
            int Type = Packet.PopInt();

            if (!Session.GetHabbo().GetMessenger().FriendshipExists(User))
            {
                Session.SendMessage(new BroadcastMessageAlertComposer("Oops, Solo puedes poner una relacion primeramente siendo amigos."));
                return;
            }

            if (Type < 0 || Type > 3)
            {
                Session.SendMessage(new BroadcastMessageAlertComposer("Oops, Ha elegido un tipo de relacion no valido."));
                return;
            }

            if (Session.GetHabbo().Relationships.Count > 2000)
            {
                Session.SendMessage(new BroadcastMessageAlertComposer("Lo sentimos, el limite de relaciones es 2000"));
                return;
            }

            using (IQueryAdapter dbClient = NeonEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                if (Type == 0)
                {
                    dbClient.SetQuery("SELECT `id` FROM `user_relationships` WHERE `user_id` = '" + Session.GetHabbo().Id + "' AND `target` = @target LIMIT 1");
                    dbClient.AddParameter("target", User);
                    int Id = dbClient.getInteger();

                    dbClient.SetQuery("DELETE FROM `user_relationships` WHERE `user_id` = '" + Session.GetHabbo().Id + "' AND `target` = @target LIMIT 1");
                    dbClient.AddParameter("target", User);
                    dbClient.RunQuery();

                    if (Session.GetHabbo().Relationships.ContainsKey(User))
                    {
                        Session.GetHabbo().Relationships.Remove(User);
                    }
                }
                else
                {
                    dbClient.SetQuery("SELECT id FROM `user_relationships` WHERE `user_id` = '" + Session.GetHabbo().Id + "' AND `target` = @target LIMIT 1");
                    dbClient.AddParameter("target", User);
                    int Id = dbClient.getInteger();

                    if (Id > 0)
                    {
                        dbClient.SetQuery("DELETE FROM `user_relationships` WHERE `user_id` = '" + Session.GetHabbo().Id + "' AND `target` = @target LIMIT 1");
                        dbClient.AddParameter("target", User);
                        dbClient.RunQuery();

                        if (Session.GetHabbo().Relationships.ContainsKey(User))
                        {
                            Session.GetHabbo().Relationships.Remove(User);
                        }
                    }

                    dbClient.SetQuery("INSERT INTO `user_relationships` (`user_id`,`target`,`type`) VALUES ('" + Session.GetHabbo().Id + "', @target, @type)");
                    dbClient.AddParameter("target", User);
                    dbClient.AddParameter("type", Type);
                    int newId = Convert.ToInt32(dbClient.InsertQuery());

                    if (!Session.GetHabbo().Relationships.ContainsKey(User))
                    {
                        Session.GetHabbo().Relationships.Add(User, new Relationship(newId, User, Type));
                    }
                }

                GameClient Client = NeonEnvironment.GetGame().GetClientManager().GetClientByUserID(User);
                if (Client != null)
                {
                    Session.GetHabbo().GetMessenger().UpdateFriend(User, Client, true);
                }
                else
                {
                    Habbo Habbo = NeonEnvironment.GetHabboById(User);
                    if (Habbo != null)
                    {
                        if (Session.GetHabbo().GetMessenger().TryGetFriend(User, out MessengerBuddy Buddy))
                        {
                            Session.SendMessage(new FriendListUpdateComposer(Session, Buddy));
                        }
                    }
                }
            }
        }
Example #45
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="AchievementManager" /> class.
 /// </summary>
 /// <param name="dbClient">The database client.</param>
 /// <param name="loadedAchs">The loaded achs.</param>
 internal AchievementManager(IQueryAdapter dbClient, out uint loadedAchs)
 {
     Achievements = new Dictionary <string, Achievement>();
     LoadAchievements(dbClient);
     loadedAchs = (uint)Achievements.Count;
 }
Example #46
0
        internal bool RequestBuddy(string UserQuery)
        {
            uint userID;
            bool hasFQDisabled;

            GameClient client = PiciEnvironment.GetGame().GetClientManager().GetClientByUsername(UserQuery);

            if (client == null)
            {
                DataRow Row = null;
                using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor())
                {
                    dbClient.setQuery("SELECT id,block_newfriends FROM users WHERE username = @query");
                    dbClient.addParameter("query", UserQuery.ToLower());
                    Row = dbClient.getRow();
                }

                if (Row == null)
                {
                    return(false);
                }

                userID        = Convert.ToUInt32(Row["id"]);
                hasFQDisabled = PiciEnvironment.EnumToBool(Row["block_newfriends"].ToString());
            }
            else
            {
                userID        = client.GetHabbo().Id;
                hasFQDisabled = client.GetHabbo().HasFriendRequestsDisabled;
            }

            if (hasFQDisabled)
            {
                GetClient().GetMessageHandler().GetResponse().Init(260);
                GetClient().GetMessageHandler().GetResponse().AppendInt32(39);
                GetClient().GetMessageHandler().GetResponse().AppendInt32(3);
                GetClient().GetMessageHandler().SendResponse();
                return(true);
            }

            uint ToId = userID;

            if (RequestExists(ToId))
            {
                return(true);
            }

            using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor())
            {
                if (dbClient.dbType == DatabaseType.MSSQL)
                {
                    dbClient.runFastQuery("DELETE FROM messenger_requests WHERE sender = " + userID + " AND receiver = " + ToId);
                    dbClient.runFastQuery("INSERT INTO messenger_requests (sender,receiver) VALUES (" + this.UserId + "," + ToId + ")");
                }
                else
                {
                    dbClient.runFastQuery("REPLACE INTO messenger_requests (sender,receiver) VALUES (" + this.UserId + "," + ToId + ")");
                }
            }

            GameClient ToUser = PiciEnvironment.GetGame().GetClientManager().GetClientByUserID(ToId);

            if (ToUser == null || ToUser.GetHabbo() == null)
            {
                return(true);
            }

            MessengerRequest Request = new MessengerRequest(ToId, UserId, PiciEnvironment.GetGame().GetClientManager().GetNameById(UserId));

            ToUser.GetHabbo().GetMessenger().OnNewRequest(UserId);

            ServerMessage NewFriendNotif = new ServerMessage(132);

            Request.Serialize(NewFriendNotif);
            ToUser.SendMessage(NewFriendNotif);
            requests.Add(ToId, Request);
            return(true);
        }
Example #47
0
        /// <summary>
        ///     Progresses the user achievement.
        /// </summary>
        /// <param name="session">The session.</param>
        /// <param name="achievementGroup">The achievement group.</param>
        /// <param name="progressAmount">The progress amount.</param>
        /// <param name="fromZero">if set to <c>true</c> [from zero].</param>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        internal bool ProgressUserAchievement(GameClient session, string achievementGroup, uint progressAmount, bool fromZero = false)
        {
            if (Achievements.ContainsKey(achievementGroup) && session?.GetHabbo() != null)
            {
                Achievement achievement = Achievements[achievementGroup];

                Habbo user = session.GetHabbo();

                // Get UserAchievementData, if the user doesn't has the Achievement, create a new.
                UserAchievement userAchievement = user.Achievements.ContainsKey(achievementGroup) ? user.GetAchievementData(achievementGroup) : new UserAchievement(achievementGroup, 0, 0);

                // If is a New Achievement is fromZero
                if (!user.Achievements.ContainsKey(achievementGroup))
                {
                    fromZero = true;
                }

                // If user hasn't the Achievement, after created the new, Must add in Collections.
                if (!user.Achievements.ContainsKey(achievementGroup))
                {
                    user.Achievements.Add(achievementGroup, userAchievement);
                }

                // Get Achievement
                userAchievement = user.Achievements[achievementGroup];

                // Total Levels from this Achievement
                uint achievementLevelsCount = (uint)achievement.Levels.Count;

                // Get User Achievement Level
                uint achievementCurrentLevel = userAchievement.Level;

                // Get User Achievement Progress
                uint achievementCurrentProgress = userAchievement.Progress;

                // If the next Level is the last level must set to Levels.Count (Ex: 38 Levels => .Count = 37 (Max Level in the Array, but .Count 37 == 38, Soo need put Level - 1)
                uint achievementNextLevel = achievementCurrentLevel + 1 > achievementLevelsCount ? achievementLevelsCount : achievementCurrentLevel + 1;

                // Set Achievement Progress
                uint achievementProgress = achievementCurrentProgress + progressAmount;

                // If he has already the Max, something is wrong.
                if (achievementCurrentLevel == achievementLevelsCount)
                {
                    return(false);
                }

                // Get Next Level Data
                AchievementLevel achievementNextLevelData = achievement.Levels[achievementNextLevel];

                // if progress isn't sufficient or, isn't new Achievement
                if (achievementProgress < achievementNextLevelData.Requirement || achievementCurrentLevel >= 1)
                {
                    fromZero = false;
                }

                // If progress is sufficient to next level, or is new Achievement
                if (achievementProgress >= achievementNextLevelData.Requirement || (achievementCurrentLevel < 1))
                {
                    fromZero = true;
                }

                // if is a new level (but level isn't 0)
                if (achievementProgress >= achievementNextLevelData.Requirement)
                {
                    achievementProgress = 0;
                }

                // If is new Level
                if (fromZero)
                {
                    // Set Level
                    userAchievement.SetLevel(achievementNextLevel);

                    // Set Progress
                    userAchievement.SetProgress(achievementProgress);

                    // Give Reward Points
                    user.AchievementPoints += achievementNextLevelData.RewardPoints;
                    user.NotifyNewPixels(achievementNextLevelData.RewardPixels);
                    user.ActivityPoints += achievementNextLevelData.RewardPixels;

                    // Update Points Balance
                    user.UpdateActivityPointsBalance();

                    // Remove old Badge - (Is not problem if is First Level Badge, because if the user hasn't the badg, simply, will not remove.
                    user.GetBadgeComponent().RemoveBadge(Convert.ToString($"{achievementGroup}{achievementNextLevel - 1}"), session);

                    // Give new Badge
                    user.GetBadgeComponent().GiveBadge($"{achievementGroup}{achievementNextLevel}", true, session);

                    // Update in Database
                    using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
                        queryReactor.RunFastQuery($"REPLACE INTO users_achievements VALUES ('{user.Id}', '{achievementGroup}', '{achievementNextLevel}', '{achievementProgress}')");

                    // Send Unlocked Composer
                    session.SendMessage(AchievementUnlockedComposer.Compose(achievement, achievementNextLevel, achievementNextLevelData.RewardPoints, achievementNextLevelData.RewardPixels));

                    // Send Score Composer
                    session.SendMessage(AchievementScoreUpdateComposer.Compose(user.AchievementPoints));

                    // Send Progress Composer
                    session.SendMessage(AchievementProgressComposer.Compose(achievement, achievementNextLevel, achievementNextLevelData, achievementLevelsCount, userAchievement));

                    // Set Talent
                    if (Yupi.GetGame().GetTalentManager().Talents.Values.Any(talent => talent.AchievementGroup == achievementGroup))
                    {
                        Yupi.GetGame().GetTalentManager().CompleteUserTalent(session, Yupi.GetGame().GetTalentManager().GetTalentData(achievementGroup));
                    }
                }
                else
                {
                    // Get Current Level Data
                    AchievementLevel achievementCurrentLevelData = achievement.Levels[achievementCurrentLevel];

                    // It's the Same Level
                    userAchievement.SetLevel(achievementCurrentLevel);

                    // But increase Progress
                    userAchievement.SetProgress(achievementProgress);

                    // Update in Database
                    using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
                        queryReactor.RunFastQuery($"REPLACE INTO users_achievements VALUES ('{user.Id}', '{achievementGroup}', '{achievementCurrentLevel}', '{achievementProgress}')");

                    // Compose Current Data
                    session.SendMessage(AchievementProgressComposer.Compose(achievement, achievementCurrentLevel, achievementCurrentLevelData, achievementLevelsCount, userAchievement));
                }

                // Send User New Data
                GameClientMessageHandler messageHandler = session.GetMessageHandler();

                messageHandler.GetResponse().Init(LibraryParser.OutgoingRequest("UpdateUserDataMessageComposer"));
                messageHandler.GetResponse().AppendInteger(-1);
                messageHandler.GetResponse().AppendString(user.Look);
                messageHandler.GetResponse().AppendString(user.Gender.ToLower());
                messageHandler.GetResponse().AppendString(user.Motto);
                messageHandler.GetResponse().AppendInteger(user.AchievementPoints);

                messageHandler.SendResponse();

                return(true);
            }

            return(false);
        }
Example #48
0
        public void SendInstantMessage(int ToId, string Message)
        {
            if (ToId == 0)
            {
                return;
            }

            if (GetClient() == null)
            {
                return;
            }

            if (GetClient().GetHabbo() == null)
            {
                return;
            }

            #region Custom Chats
            var Group = CloudServer.GetGame().GetGroupManager().GetGroupsForUser(GetClient().GetHabbo().Id).Where(c => c.HasChat).ToList();
            foreach (var gp in Group)
            {
                if (ToId == int.MinValue + gp.Id) // int.MaxValue
                {
                    //CloudServer.GetGame().GetClientManager().SendMessaget(new FuckingConsoleMessageComposer(ToId, Message, GetClient().GetHabbo().Username + "/" + GetClient().GetHabbo().Look + "/" + GetClient().GetHabbo().Id), GetClient().GetHabbo().Id);
                    CloudServer.GetGame().GetClientManager().GroupChatAlert(new FuckingConsoleMessageComposer(int.MinValue + gp.Id, Message, GetClient().GetHabbo().Username + "/" + GetClient().GetHabbo().Look + "/" + GetClient().GetHabbo().Id), gp, GetClient().GetHabbo().Id);
                    return;
                }
            }
            if (GetClient().GetHabbo().Rank >= 3 && ToId == int.MinValue) // int.MaxValue
            {
                CloudServer.GetGame().GetClientManager().StaffAlert(new FuckingConsoleMessageComposer(ToId, Message, GetClient().GetHabbo().Username + "/" + GetClient().GetHabbo().Look + "/" + GetClient().GetHabbo().Id), GetClient().GetHabbo().Id);
                return;
            }
            else if (GetClient().GetHabbo().Rank == 2 || GetClient().GetHabbo().Rank >= 12 && ToId == (int.MinValue + 1))
            {
                CloudServer.GetGame().GetClientManager().GuideAlert(new FuckingConsoleMessageComposer(ToId, Message, GetClient().GetHabbo().Username + "/" + GetClient().GetHabbo().Look + "/" + GetClient().GetHabbo().Id), GetClient().GetHabbo().Id);
                return;
            }
            #endregion

            if (!FriendshipExists(ToId))
            {
                GetClient().SendMessage(new InstantMessageErrorComposer(MessengerMessageErrors.YOUR_NOT_FRIENDS, ToId));
                return;
            }

            if (GetClient().GetHabbo().MessengerSpamCount >= 12)
            {
                GetClient().GetHabbo().MessengerSpamTime  = CloudServer.GetUnixTimestamp() + 60;
                GetClient().GetHabbo().MessengerSpamCount = 0;
                GetClient().SendNotification("You cannot send a message, you have flooded the console.\n\nYou can send a message in 60 seconds.");
                return;
            }
            else if (GetClient().GetHabbo().MessengerSpamTime > CloudServer.GetUnixTimestamp())
            {
                double Time = GetClient().GetHabbo().MessengerSpamTime - CloudServer.GetUnixTimestamp();
                GetClient().SendNotification("You cannot send a message, you have flooded the console.\n\nYou can send a message in " + Time + " seconds.");
                return;
            }


            GetClient().GetHabbo().MessengerSpamCount++;

            GameClient Client = CloudServer.GetGame().GetClientManager().GetClientByUserID(ToId);
            if (Client == null || Client.GetHabbo() == null || Client.GetHabbo().GetMessenger() == null)
            {
                using (IQueryAdapter dbClient = CloudServer.GetDatabaseManager().GetQueryReactor())
                {
                    dbClient.SetQuery("INSERT INTO `messenger_offline_messages` (`to_id`, `from_id`, `message`, `timestamp`) VALUES (@tid, @fid, @msg, UNIX_TIMESTAMP())");
                    dbClient.AddParameter("tid", ToId);
                    dbClient.AddParameter("fid", GetClient().GetHabbo().Id);
                    dbClient.AddParameter("msg", Message);
                    dbClient.RunQuery();
                }
                return;
            }

            if (!Client.GetHabbo().AllowConsoleMessages || Client.GetHabbo().MutedUsers.Contains(GetClient().GetHabbo().Id))
            {
                GetClient().SendMessage(new InstantMessageErrorComposer(MessengerMessageErrors.FRIEND_BUSY, ToId));
                return;
            }

            if (GetClient().GetHabbo().TimeMuted > 0)
            {
                GetClient().SendMessage(new InstantMessageErrorComposer(MessengerMessageErrors.YOUR_MUTED, ToId));
                return;
            }

            if (Client.GetHabbo().TimeMuted > 0)
            {
                GetClient().SendMessage(new InstantMessageErrorComposer(MessengerMessageErrors.FRIEND_MUTED, ToId));
            }

            if (String.IsNullOrEmpty(Message))
            {
                return;
            }

            Client.SendMessage(new NewConsoleMessageComposer(_userId, Message));
            LogPM(_userId, ToId, Message);
        }
Example #49
0
 public void SaveToDatabase(IQueryAdapter dbClient)
 {
     WiredUtillity.SaveTriggerItem(dbClient, this.itemID, string.Empty, this.NameBot, false, this.items);
 }
Example #50
0
        public bool RequestBuddy(string UserQuery)
        {
            int  userID;
            bool hasFQDisabled;

            GameClient client = CloudServer.GetGame().GetClientManager().GetClientByUsername(UserQuery);

            if (client == null)
            {
                DataRow Row = null;
                using (IQueryAdapter dbClient = CloudServer.GetDatabaseManager().GetQueryReactor())
                {
                    dbClient.SetQuery("SELECT `id`,`block_newfriends` FROM `users` WHERE `username` = @query LIMIT 1");
                    dbClient.AddParameter("query", UserQuery.ToLower());
                    Row = dbClient.getRow();
                }

                if (Row == null)
                {
                    return(false);
                }

                userID        = Convert.ToInt32(Row["id"]);
                hasFQDisabled = CloudServer.EnumToBool(Row["block_newfriends"].ToString());
            }
            else
            {
                userID        = client.GetHabbo().Id;
                hasFQDisabled = client.GetHabbo().AllowFriendRequests;
            }

            if (hasFQDisabled)
            {
                GetClient().SendMessage(new MessengerErrorComposer(39, 3));
                return(false);
            }

            int ToId = userID;

            if (RequestExists(ToId))
            {
                return(true);
            }

            using (IQueryAdapter dbClient = CloudServer.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.RunQuery("REPLACE INTO `messenger_requests` (`from_id`,`to_id`) VALUES ('" + _userId + "','" + ToId + "')");
            }

            CloudServer.GetGame().GetQuestManager().ProgressUserQuest(GetClient(), QuestType.ADD_FRIENDS);

            GameClient ToUser = CloudServer.GetGame().GetClientManager().GetClientByUserID(ToId);

            if (ToUser == null || ToUser.GetHabbo() == null)
            {
                return(true);
            }

            MessengerRequest Request = new MessengerRequest(ToId, _userId, CloudServer.GetGame().GetClientManager().GetNameById(_userId));

            ToUser.GetHabbo().GetMessenger().OnNewRequest(_userId);

            UserCache ThisUser = CloudServer.GetGame().GetCacheManager().GenerateUser(_userId);

            if (ThisUser != null)
            {
                ToUser.SendMessage(new NewBuddyRequestComposer(ThisUser));
            }

            _requests.Add(ToId, Request);
            return(true);
        }
Example #51
0
 public void SaveToDatabase(IQueryAdapter dbClient)
 {
     WiredUtillity.SaveTriggerItem(dbClient, this.item.Id, string.Empty, this.timeout.ToString(), false, null);
 }
Example #52
0
        // PENDING REWRITE
        internal void BanUser(GameClient Client, string Moderator, Double LengthSeconds, string Reason, Boolean IpBan)
        {
            ModerationBanType Type   = ModerationBanType.USERNAME;
            string            Var    = Client.GetHabbo().Username;
            string            RawVar = "user";
            Double            Expire = PiciEnvironment.GetUnixTimestamp() + LengthSeconds;

            if (Reason == null)
            {
                Client.SendNotif("Please fill in a reason to ban a user.");
                return;
            }

            if (IpBan)
            {
                Type   = ModerationBanType.IP;
                Var    = Client.GetConnection().getIp();
                RawVar = "ip";
            }

            ModerationBan ban = new ModerationBan(Type, Var, Reason, Expire);

            if (ban.Type == ModerationBanType.IP)
            {
                if (bannedIPs.ContainsKey(Var))
                {
                    bannedIPs[Var] = ban;
                }
                else
                {
                    bannedIPs.Add(Var, ban);
                }
            }
            else
            {
                if (bannedUsernames.ContainsKey(Var))
                {
                    bannedUsernames[Var] = ban;
                }
                else
                {
                    bannedUsernames.Add(Var, ban);
                }
            }

            using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor())
            {
                dbClient.setQuery("INSERT INTO bans (bantype,value,reason,expire,added_by,added_date) VALUES (@rawvar,@var,@reason,'" + Expire + "',@mod,'" + DateTime.Now.ToLongDateString() + "')");
                dbClient.addParameter("rawvar", RawVar);
                dbClient.addParameter("var", Var);
                dbClient.addParameter("reason", Reason);
                dbClient.addParameter("mod", Moderator);
                dbClient.runQuery();
            }

            if (IpBan)
            {
                DataTable UsersAffected = null;

                using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor())
                {
                    dbClient.setQuery("SELECT id FROM users WHERE ip_last = @var");
                    dbClient.addParameter("var", Var);
                    UsersAffected = dbClient.getTable();
                }

                if (UsersAffected != null)
                {
                    using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor())
                    {
                        foreach (DataRow Row in UsersAffected.Rows)
                        {
                            dbClient.runFastQuery("UPDATE user_info SET bans = bans + 1 WHERE user_id = " + Convert.ToUInt32(Row["id"]));
                        }
                    }
                }


                BanUser(Client, Moderator, LengthSeconds, Reason, false);
            }
            else
            {
                using (IQueryAdapter dbClient = PiciEnvironment.GetDatabaseManager().getQueryreactor())
                {
                    dbClient.runFastQuery("UPDATE user_info SET bans = bans + 1 WHERE user_id = " + Client.GetHabbo().Id);
                }

                Client.SendBanMessage(LanguageLocale.GetValue("moderation.banned") + " " + Reason);
                Client.Disconnect();
            }
        }
Example #53
0
File: Game.cs Project: dm5wg/Yupi
        /// <summary>
        ///     Initializes a new instance of the <see cref="Game" /> class.
        /// </summary>
        /// <param name="conns">The conns.</param>
        internal Game(int conns)
        {
            //Console.WriteLine();
            Writer.WriteLine(@"Starting up Yupi Emulator for " + Environment.MachineName + "...", @"Yupi.Boot");
            //Console.WriteLine();

            _clientManager = new GameClientManager();
            using (IQueryAdapter commitableQueryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
            {
                AbstractBar bar = new AnimatedBar();
                const int   wait = 15, end = 5;

                uint itemsLoaded;
                uint navigatorLoaded;
                uint roomModelLoaded;
                uint achievementLoaded;
                uint pollLoaded;

                Progress(bar, wait, end, "Cleaning dirty in database...");
                DatabaseCleanup(commitableQueryReactor);

                Progress(bar, wait, end, "Loading Bans...");
                _banManager = new ModerationBanManager();
                _banManager.LoadBans(commitableQueryReactor);

                Progress(bar, wait, end, "Loading Roles...");
                _roleManager = new RoleManager();
                _roleManager.LoadRights(commitableQueryReactor);

                Progress(bar, wait, end, "Loading Items...");
                _itemManager = new ItemManager();
                _itemManager.LoadItems(commitableQueryReactor, out itemsLoaded);

                Progress(bar, wait, end, "Loading Catalog...");
                _catalog = new CatalogManager();

                Progress(bar, wait, end, "Loading Targeted Offers...");
                _targetedOfferManager = new TargetedOfferManager();

                Progress(bar, wait, end, "Loading Clothing...");
                _clothingManager = new ClothingManager();
                _clothingManager.Initialize(commitableQueryReactor);

                Progress(bar, wait, end, "Loading Rooms...");
                _roomManager = new RoomManager();
                _roomManager.LoadModels(commitableQueryReactor, out roomModelLoaded);

                Progress(bar, wait, end, "Loading NavigatorManager...");
                _navigatorManager = new HotelBrowserManager();
                _navigatorManager.Initialize(commitableQueryReactor, out navigatorLoaded);

                Progress(bar, wait, end, "Loading Groups...");
                _groupManager = new GroupManager();
                _groupManager.InitGroups();

                Progress(bar, wait, end, "Loading PixelManager...");
                _pixelManager = new ExchangeManager();

                Progress(bar, wait, end, "Loading HotelView...");
                _hotelView = new HotelLandingManager();

                Progress(bar, wait, end, "Loading Hall Of Fame...");
                _hallOfFame = new HallOfFame();

                Progress(bar, wait, end, "Loading ModerationTool...");
                _moderationTool = new ModerationTool();
                _moderationTool.LoadMessagePresets(commitableQueryReactor);
                _moderationTool.LoadPendingTickets(commitableQueryReactor);

                Progress(bar, wait, end, "Loading Bots...");
                _botManager = new BotManager();

                Progress(bar, wait, end, "Loading Events...");
                _events = new RoomEvents();

                Progress(bar, wait, end, "Loading Talents...");
                _talentManager = new TalentManager();
                _talentManager.Initialize(commitableQueryReactor);

                Progress(bar, wait, end, "Loading Pinata...");
                _pinataHandler = new PinataHandler();
                _pinataHandler.Initialize(commitableQueryReactor);

                Progress(bar, wait, end, "Loading Crackable Eggs...");
                _crackableEggHandler = new CrackableEggHandler();
                _crackableEggHandler.Initialize(commitableQueryReactor);

                Progress(bar, wait, end, "Loading Polls...");
                _pollManager = new PollManager();
                _pollManager.Init(commitableQueryReactor, out pollLoaded);

                Progress(bar, wait, end, "Loading Achievements...");
                _achievementManager = new AchievementManager(commitableQueryReactor, out achievementLoaded);

                Progress(bar, wait, end, "Loading StaticMessages ...");
                StaticMessagesManager.Load();

                Progress(bar, wait, end, "Loading Guides ...");
                _guideManager = new GuideManager();

                Progress(bar, wait, end, "Loading and Registering Commands...");
                CommandsManager.Register();

                CacheManager.StartProcess();

                //Progress(bar, wait, end, "Loading ServerMutantManager...");
                //this.ServerMutantManager = new ServerMutantManager();

                Console.Write("\r".PadLeft(Console.WindowWidth - Console.CursorLeft - 1));
            }
        }
Example #54
0
        internal static void HandleConditionSave(GameClient Session, uint itemID, Room room, ClientMessage clientMessage)
        {
            // // id, resolveIntParams, resolveStringParam, getStuffIds, resolveStuffSelectionType
            RoomItem item = room.GetRoomItemHandler().GetItem(itemID);

            if (item == null)
            {
                return;
            }

            if (item.wiredCondition != null)
            {
                item.wiredCondition.Dispose();
                item.wiredCondition = null;
            }

            InteractionType type = item.GetBaseItem().InteractionType;

            if (type != InteractionType.conditionfurnishaveusers && type != InteractionType.conditionstatepos &&
                type != InteractionType.conditiontimelessthan && type != InteractionType.conditiontimemorethan &&
                type != InteractionType.conditiontriggeronfurni)
            {
                return;
            }

            // Parse data
            int[] intParams = new int[clientMessage.ReadInt32()];
            for (int i = 0; i < intParams.Length; i++)
            {
                intParams[i] = clientMessage.ReadInt32();
            }

            string stringParam = clientMessage.ReadString();

            int             furniCount;
            List <RoomItem> items = GetItems(clientMessage, room, out furniCount);

            int stuffSelectionType = clientMessage.ReadInt32();

            IWiredCondition handler = null;

            switch (type)
            {
            case InteractionType.conditionfurnishaveusers:
            {
                handler = new FurniHasUser(item, items);
                break;
            }

            case InteractionType.conditionstatepos:
            {
                handler = new FurniStatePosMatch(item, items);
                break;
            }

            case InteractionType.conditiontimelessthan:
            {
                handler = new LessThanTimer(500, room, item);
                break;
            }

            case InteractionType.conditiontimemorethan:
            {
                handler = new MoreThanTimer(500, room, item);
                break;
            }

            case InteractionType.conditiontriggeronfurni:
            {
                handler = new TriggerUserIsOnFurni(item, items);
                break;
            }

            default:
                return;
            }

            item.wiredCondition = handler;
            room.GetWiredHandler().conditionHandler.AddOrIgnoreRefferance(item);

            using (IQueryAdapter dbClient = FirewindEnvironment.GetDatabaseManager().getQueryreactor())
            {
                handler.SaveToDatabase(dbClient);
            }
            Session.SendMessage(new ServerMessage(Outgoing.SaveWired));
        }
Example #55
0
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            if (!Session.GetHabbo().GetPermissions().HasRight("mod_tool"))
            {
                return;
            }

            Room Room = null;

            if (!PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(Packet.PopInt(), out Room))
            {
                return;
            }

            bool SetLock = Packet.PopInt() == 1;
            bool SetName = Packet.PopInt() == 1;
            bool KickAll = Packet.PopInt() == 1;

            if (SetName)
            {
                Room.RoomData.Name        = "Inappropriate to Hotel Management";
                Room.RoomData.Description = "Inappropriate to Hotel Management";
            }

            if (SetLock)
            {
                Room.RoomData.Access = RoomAccess.DOORBELL;
            }

            if (Room.Tags.Count > 0)
            {
                Room.ClearTags();
            }

            if (Room.RoomData.HasActivePromotion)
            {
                Room.RoomData.EndPromotion();
            }

            using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                if (SetName && SetLock)
                {
                    dbClient.RunQuery("UPDATE `rooms` SET `caption` = 'Inappropriate to Hotel Management', `description` = 'Inappropriate to Hotel Management', `tags` = '', `state` = '1' WHERE `id` = '" + Room.RoomId + "' LIMIT 1");
                }
                else if (SetName && !SetLock)
                {
                    dbClient.RunQuery("UPDATE `rooms` SET `caption` = 'Inappropriate to Hotel Management', `description` = 'Inappropriate to Hotel Management', `tags` = '' WHERE `id` = '" + Room.RoomId + "' LIMIT 1");
                }
                else if (!SetName && SetLock)
                {
                    dbClient.RunQuery("UPDATE `rooms` SET `state` = '1', `tags` = '' WHERE `id` = '" + Room.RoomId + "' LIMIT 1");
                }
            }

            Room.SendPacket(new RoomSettingsSavedComposer(Room.RoomId));
            Room.SendPacket(new RoomInfoUpdatedComposer(Room.RoomId));

            if (KickAll)
            {
                foreach (RoomUser RoomUser in Room.GetRoomUserManager().GetUserList().ToList())
                {
                    if (RoomUser == null || RoomUser.IsBot)
                    {
                        continue;
                    }

                    if (RoomUser.GetClient() == null || RoomUser.GetClient().GetHabbo() == null)
                    {
                        continue;
                    }

                    if (RoomUser.GetClient().GetHabbo().Rank >= Session.GetHabbo().Rank || RoomUser.GetClient().GetHabbo().Id == Session.GetHabbo().Id)
                    {
                        continue;
                    }

                    Room.GetRoomUserManager().RemoveUserFromRoom(RoomUser.GetClient(), true, false);
                }
            }
        }
Example #56
0
        public Habbo(int Id, string Username, int Rank, string Motto, string Look, string Gender, int Credits, int ActivityPoints, int HomeRoom,
                     bool HasFriendRequestsDisabled, int LastOnline, bool AppearOffline, bool HideInRoom, double CreateDate, int Diamonds,
                     string machineID, string clientVolume, bool ChatPreference, bool FocusPreference, bool PetsMuted, bool BotsMuted, bool AdvertisingReportBlocked, double LastNameChange,
                     int GOTWPoints, bool IgnoreInvites, double TimeMuted, double TradingLock, bool AllowGifts, int FriendBarState, bool DisableForcedEffects, bool AllowMimic, int VIPRank)
        {
            _id             = Id;
            _username       = Username;
            _rank           = Rank;
            _motto          = Motto;
            _look           = Look;
            _gender         = Gender.ToLower();
            _footballLook   = PlusEnvironment.FilterFigure(Look.ToLower());
            _footballGender = Gender.ToLower();
            _credits        = Credits;
            _duckets        = ActivityPoints;
            _diamonds       = Diamonds;
            _gotwPoints     = GOTWPoints;
            _homeRoom       = HomeRoom;
            _lastOnline     = LastOnline;
            _accountCreated = CreateDate;
            _clientVolume   = new List <int>();
            foreach (string Str in clientVolume.Split(','))
            {
                int Val = 0;
                if (int.TryParse(Str, out Val))
                {
                    _clientVolume.Add(int.Parse(Str));
                }
                else
                {
                    _clientVolume.Add(100);
                }
            }

            _lastNameChange  = LastNameChange;
            _machineId       = machineID;
            _chatPreference  = ChatPreference;
            _focusPreference = FocusPreference;
            _isExpert        = IsExpert == true;

            _appearOffline         = AppearOffline;
            _allowTradingRequests  = true;                      //TODO
            _allowUserFollowing    = true;                      //TODO
            _allowFriendRequests   = HasFriendRequestsDisabled; //TODO
            _allowMessengerInvites = IgnoreInvites;
            _allowPetSpeech        = PetsMuted;
            _allowBotSpeech        = BotsMuted;
            _allowPublicRoomStatus = HideInRoom;
            _allowConsoleMessages  = true;
            _allowGifts            = AllowGifts;
            _allowMimic            = AllowMimic;
            _receiveWhispers       = true;
            _ignorePublicWhispers  = false;
            _playingFastFood       = false;
            _friendbarState        = FriendBarStateUtility.GetEnum(FriendBarState);
            _christmasDay          = ChristmasDay;
            _wantsToRideHorse      = 0;
            _timeAFK = 0;
            _disableForcedEffects = DisableForcedEffects;
            _vipRank = VIPRank;

            _disconnected = false;
            _habboSaved   = false;
            _changingName = false;

            _floodTime   = 0;
            _friendCount = 0;
            _timeMuted   = TimeMuted;
            _timeCached  = DateTime.Now;

            _tradingLockExpiry = TradingLock;
            if (_tradingLockExpiry > 0 && PlusEnvironment.GetUnixTimestamp() > TradingLockExpiry)
            {
                _tradingLockExpiry = 0;
                using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                {
                    dbClient.RunQuery("UPDATE `user_info` SET `trading_locked` = '0' WHERE `user_id` = '" + Id + "' LIMIT 1");
                }
            }

            _bannedPhraseCount  = 0;
            _sessionStart       = PlusEnvironment.GetUnixTimestamp();
            _messengerSpamCount = 0;
            _messengerSpamTime  = 0;
            _creditsTickUpdate  = Convert.ToInt32(PlusEnvironment.GetSettingsManager().TryGetValue("user.currency_scheduler.tick"));

            _tentId            = 0;
            _hopperId          = 0;
            _isHopping         = false;
            _teleportId        = 0;
            _isTeleporting     = false;
            _teleportingRoomId = 0;
            _roomAuthOk        = false;
            _currentRoomId     = 0;

            _hasSpoken                = false;
            _lastAdvertiseReport      = 0;
            _advertisingReported      = false;
            _advertisingReportBlocked = AdvertisingReportBlocked;

            _wiredInteraction   = false;
            _questLastCompleted = 0;
            _inventoryAlert     = false;
            _ignoreBobbaFilter  = false;
            _wiredTeleporting   = false;
            _customBubbleId     = 0;
            _onHelperDuty       = false;
            _fastfoodScore      = 0;
            _petId   = 0;
            _tempInt = 0;

            _lastGiftPurchaseTime       = DateTime.Now;
            _lastMottoUpdateTime        = DateTime.Now;
            _lastClothingUpdateTime     = DateTime.Now;
            _lastForumMessageUpdateTime = DateTime.Now;

            _giftPurchasingWarnings = 0;
            _mottoUpdateWarnings    = 0;
            _clothingUpdateWarnings = 0;

            _sessionGiftBlocked     = false;
            _sessionMottoBlocked    = false;
            _sessionClothingBlocked = false;

            FavoriteRooms = new ArrayList();
            Achievements  = new ConcurrentDictionary <string, UserAchievement>();
            Relationships = new Dictionary <int, Relationship>();
            RatedRooms    = new List <int>();

            //TODO: Nope.
            InitPermissions();

            #region Stats
            DataRow StatRow = null;
            using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("SELECT `id`,`roomvisits`,`onlinetime`,`respect`,`respectgiven`,`giftsgiven`,`giftsreceived`,`dailyrespectpoints`,`dailypetrespectpoints`,`achievementscore`,`quest_id`,`quest_progress`,`groupid`,`tickets_answered`,`respectstimestamp`,`forum_posts` FROM `user_stats` WHERE `id` = @user_id LIMIT 1");
                dbClient.AddParameter("user_id", Id);
                StatRow = dbClient.GetRow();

                if (StatRow == null)//No row, add it yo
                {
                    dbClient.RunQuery("INSERT INTO `user_stats` (`id`) VALUES ('" + Id + "')");
                    dbClient.SetQuery("SELECT `id`,`roomvisits`,`onlinetime`,`respect`,`respectgiven`,`giftsgiven`,`giftsreceived`,`dailyrespectpoints`,`dailypetrespectpoints`,`achievementscore`,`quest_id`,`quest_progress`,`groupid`,`tickets_answered`,`respectstimestamp`,`forum_posts` FROM `user_stats` WHERE `id` = @user_id LIMIT 1");
                    dbClient.AddParameter("user_id", Id);
                    StatRow = dbClient.GetRow();
                }

                try
                {
                    _habboStats = new HabboStats(Convert.ToInt32(StatRow["roomvisits"]), Convert.ToDouble(StatRow["onlineTime"]), Convert.ToInt32(StatRow["respect"]), Convert.ToInt32(StatRow["respectGiven"]), Convert.ToInt32(StatRow["giftsGiven"]),
                                                 Convert.ToInt32(StatRow["giftsReceived"]), Convert.ToInt32(StatRow["dailyRespectPoints"]), Convert.ToInt32(StatRow["dailyPetRespectPoints"]), Convert.ToInt32(StatRow["AchievementScore"]),
                                                 Convert.ToInt32(StatRow["quest_id"]), Convert.ToInt32(StatRow["quest_progress"]), Convert.ToInt32(StatRow["groupid"]), Convert.ToString(StatRow["respectsTimestamp"]), Convert.ToInt32(StatRow["forum_posts"]));

                    if (Convert.ToString(StatRow["respectsTimestamp"]) != DateTime.Today.ToString("MM/dd"))
                    {
                        _habboStats.RespectsTimestamp = DateTime.Today.ToString("MM/dd");
                        SubscriptionData SubData = null;

                        int DailyRespects = 10;

                        if (_permissions.HasRight("mod_tool"))
                        {
                            DailyRespects = 20;
                        }
                        else if (PlusEnvironment.GetGame().GetSubscriptionManager().TryGetSubscriptionData(VIPRank, out SubData))
                        {
                            DailyRespects = SubData.Respects;
                        }

                        _habboStats.DailyRespectPoints    = DailyRespects;
                        _habboStats.DailyPetRespectPoints = DailyRespects;

                        dbClient.RunQuery("UPDATE `user_stats` SET `dailyRespectPoints` = '" + DailyRespects + "', `dailyPetRespectPoints` = '" + DailyRespects + "', `respectsTimestamp` = '" + DateTime.Today.ToString("MM/dd") + "' WHERE `id` = '" + Id + "' LIMIT 1");
                    }
                }
                catch (Exception e)
                {
                    ExceptionLogger.LogException(e);
                }
            }

            Group G = null;
            if (!PlusEnvironment.GetGame().GetGroupManager().TryGetGroup(_habboStats.FavouriteGroupId, out G))
            {
                _habboStats.FavouriteGroupId = 0;
            }
            #endregion
        }
Example #57
0
 public void DeleteFromDatabase(IQueryAdapter dbClient)
 {
     dbClient.runFastQuery("DELETE FROM trigger_in_place WHERE original_trigger = '" + this.item.Id + "'");
 }
Example #58
0
        public void Init()
        {
            Permissions.Clear();
            _commands.Clear();
            PermissionGroups.Clear();
            PermissionGroupRights.Clear();

            using (IQueryAdapter dbClient = BiosEmuThiago.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("SELECT * FROM `permissions`");
                DataTable GetPermissions = dbClient.getTable();

                if (GetPermissions != null)
                {
                    foreach (DataRow Row in GetPermissions.Rows)
                    {
                        Permissions.Add(Convert.ToInt32(Row["id"]), new Permission(Convert.ToInt32(Row["id"]), Convert.ToString(Row["permission"]), Convert.ToString(Row["description"])));
                    }
                }
            }

            using (IQueryAdapter dbClient = BiosEmuThiago.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("SELECT * FROM `permissions_commands`");
                DataTable GetCommands = dbClient.getTable();

                if (GetCommands != null)
                {
                    foreach (DataRow Row in GetCommands.Rows)
                    {
                        _commands.Add(Convert.ToString(Row["command"]), new PermissionCommand(Convert.ToString(Row["command"]), Convert.ToInt32(Row["group_id"]), Convert.ToInt32(Row["subscription_id"])));
                    }
                }
            }

            using (IQueryAdapter dbClient = BiosEmuThiago.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("SELECT * FROM `permissions_groups`");
                DataTable GetPermissionGroups = dbClient.getTable();

                if (GetPermissionGroups != null)
                {
                    foreach (DataRow Row in GetPermissionGroups.Rows)
                    {
                        PermissionGroups.Add(Convert.ToInt32(Row["id"]), new PermissionGroup(Convert.ToString("name"), Convert.ToString("description"), Convert.ToString("badge")));
                    }
                }
            }

            using (IQueryAdapter dbClient = BiosEmuThiago.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("SELECT * FROM `permissions_rights`");
                DataTable GetPermissionRights = dbClient.getTable();

                if (GetPermissionRights != null)
                {
                    foreach (DataRow Row in GetPermissionRights.Rows)
                    {
                        int GroupId      = Convert.ToInt32(Row["group_id"]);
                        int PermissionId = Convert.ToInt32(Row["permission_id"]);

                        if (!PermissionGroups.ContainsKey(GroupId))
                        {
                            continue; // permission group does not exist
                        }

                        Permission Permission = null;

                        if (!Permissions.TryGetValue(PermissionId, out Permission))
                        {
                            continue; // permission does not exist
                        }

                        if (PermissionGroupRights.ContainsKey(GroupId))
                        {
                            PermissionGroupRights[GroupId].Add(Permission.PermissionName);
                        }
                        else
                        {
                            List <string> RightsSet = new List <string>()
                            {
                                Permission.PermissionName
                            };

                            PermissionGroupRights.Add(GroupId, RightsSet);
                        }
                    }
                }
            }

            using (IQueryAdapter dbClient = BiosEmuThiago.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("SELECT * FROM `permissions_subscriptions`");
                DataTable GetPermissionSubscriptions = dbClient.getTable();

                if (GetPermissionSubscriptions != null)
                {
                    foreach (DataRow Row in GetPermissionSubscriptions.Rows)
                    {
                        int PermissionId   = Convert.ToInt32(Row["permission_id"]);
                        int SubscriptionId = Convert.ToInt32(Row["subscription_id"]);

                        Permission Permission = null;
                        if (!Permissions.TryGetValue(PermissionId, out Permission))
                        {
                            continue; // permission does not exist
                        }
                        if (PermissionSubscriptionRights.ContainsKey(SubscriptionId))
                        {
                            PermissionSubscriptionRights[SubscriptionId].Add(Permission.PermissionName);
                        }
                        else
                        {
                            List <string> RightsSet = new List <string>()
                            {
                                Permission.PermissionName
                            };

                            PermissionSubscriptionRights.Add(SubscriptionId, RightsSet);
                        }
                    }
                }
            }

            log.Info("» PRONTO - BY: Thiago Araujo: " + Permissions.Count + " permissões.");
            log.Info("» PRONTO - BY: Thiago Araujo: " + PermissionGroups.Count + " grupo de permissões.");
            log.Info("» PRONTO - BY: Thiago Araujo: " + PermissionGroupRights.Count + " direitos dos grupos de licenciamento.");
            log.Info("» PRONTO - BY: Thiago Araujo: " + PermissionSubscriptionRights.Count + " licenças com direitos de subscrição.");
        }
Example #59
0
        internal List <GroupUser> GetGroupUsersByString(Guild Group, string SearchVal, uint Req)
        {
            List <GroupUser> list = new List <GroupUser>();

            if (string.IsNullOrWhiteSpace(SearchVal))
            {
                if (Req == 0u)
                {
                    using (Dictionary <uint, GroupUser> .ValueCollection.Enumerator enumerator = Group.Members.Values.GetEnumerator())
                    {
                        while (enumerator.MoveNext())
                        {
                            GroupUser current = enumerator.Current;
                            list.Add(current);
                        }
                        return(list);
                    }
                }
                using (Dictionary <uint, GroupUser> .ValueCollection.Enumerator enumerator2 = Group.Admins.Values.GetEnumerator())
                {
                    while (enumerator2.MoveNext())
                    {
                        GroupUser current2 = enumerator2.Current;
                        list.Add(current2);
                    }
                    return(list);
                }
            }
            using (IQueryAdapter queryreactor = CyberEnvironment.GetDatabaseManager().getQueryReactor())
            {
                queryreactor.setQuery("SELECT id FROM users WHERE username LIKE @query");
                queryreactor.addParameter("query", "%" + SearchVal + "%");
                DataTable table = queryreactor.getTable();
                if (table == null)
                {
                    if (Req == 0u)
                    {
                        using (Dictionary <uint, GroupUser> .ValueCollection.Enumerator enumerator3 = Group.Members.Values.GetEnumerator())
                        {
                            while (enumerator3.MoveNext())
                            {
                                GroupUser current3 = enumerator3.Current;
                                list.Add(current3);
                            }
                            goto IL_1CD;
                        }
                    }
                    using (Dictionary <uint, GroupUser> .ValueCollection.Enumerator enumerator4 = Group.Admins.Values.GetEnumerator())
                    {
                        while (enumerator4.MoveNext())
                        {
                            GroupUser current4 = enumerator4.Current;
                            list.Add(current4);
                        }
                        goto IL_1CD;
                    }
                }
                foreach (DataRow dataRow in table.Rows)
                {
                    if (Group.Members.ContainsKey((uint)dataRow[0]))
                    {
                        list.Add(Group.Members[(uint)dataRow[0]]);
                    }
                }
                IL_1CD :;
            }
            return(list);
        }
Example #60
0
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            int OfferId = Packet.PopInt();

            DataRow Row = null;

            using (IQueryAdapter dbClient = RavenEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("SELECT `state`,`timestamp`,`total_price`,`extra_data`,`item_id`,`furni_id`,`user_id`,`limited_number`,`limited_stack` FROM `catalog_marketplace_offers` WHERE `offer_id` = @OfferId LIMIT 1");
                dbClient.AddParameter("OfferId", OfferId);
                Row = dbClient.getRow();
            }

            if (Row == null)
            {
                this.ReloadOffers(Session);
                return;
            }

            if (Convert.ToString(Row["state"]) == "2")
            {
                Session.SendNotification("Oops, esta oferta ya no esta disponible.");
                this.ReloadOffers(Session);
                return;
            }

            if (RavenEnvironment.GetGame().GetCatalog().GetMarketplace().FormatTimestamp() > (Convert.ToDouble(Row["timestamp"])))
            {
                Session.SendNotification("Oops, esta oferta ha expirado..");
                this.ReloadOffers(Session);
                return;
            }

            ItemData Item = null;

            if (!RavenEnvironment.GetGame().GetItemManager().GetItem(Convert.ToInt32(Row["item_id"]), out Item))
            {
                Session.SendNotification("Este furni ya no esta disponible");
                this.ReloadOffers(Session);
                return;
            }
            else
            {
                if (Convert.ToInt32(Row["user_id"]) == Session.GetHabbo().Id)
                {
                    Session.SendNotification("Para evitar falsos promedios, esta prohibido la auto compra de su propio furni");
                    return;
                }

                if (Convert.ToInt32(Row["total_price"]) > Session.GetHabbo().Duckets)
                {
                    Session.SendNotification("Oops, Usted no tiene sufiecientes Duckets para comprar esta oferta");
                    return;
                }

                Session.GetHabbo().Duckets -= Convert.ToInt32(Row["total_price"]);
                Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().Duckets, Convert.ToInt32(Row["total_price"])));


                Item GiveItem = ItemFactory.CreateSingleItem(Item, Session.GetHabbo(), Convert.ToString(Row["extra_data"]), Convert.ToString(Row["extra_data"]), Convert.ToInt32(Row["furni_id"]), Convert.ToInt32(Row["limited_number"]), Convert.ToInt32(Row["limited_stack"]));
                if (GiveItem != null)
                {
                    Session.GetHabbo().GetInventoryComponent().TryAddItem(GiveItem);
                    Session.SendMessage(new FurniListNotificationComposer(GiveItem.Id, 1));

                    Session.SendMessage(new Raven.Communication.Packets.Outgoing.Catalog.PurchaseOKComposer());
                    Session.SendMessage(new FurniListAddComposer(GiveItem));
                    Session.SendMessage(new FurniListUpdateComposer());
                }


                using (IQueryAdapter dbClient = RavenEnvironment.GetDatabaseManager().GetQueryReactor())
                {
                    dbClient.RunQuery("UPDATE `catalog_marketplace_offers` SET `state` = '2' WHERE `offer_id` = '" + OfferId + "' LIMIT 1");

                    int Id = 0;
                    dbClient.SetQuery("SELECT `id` FROM catalog_marketplace_data WHERE sprite = " + Item.SpriteId + " LIMIT 1;");
                    Id = dbClient.getInteger();

                    if (Id > 0)
                    {
                        dbClient.RunQuery("UPDATE `catalog_marketplace_data` SET `sold` = `sold` + 1, `avgprice` = (avgprice + " + Convert.ToInt32(Row["total_price"]) + ") WHERE `id` = " + Id + " LIMIT 1;");
                    }
                    else
                    {
                        dbClient.RunQuery("INSERT INTO `catalog_marketplace_data` (sprite, sold, avgprice) VALUES ('" + Item.SpriteId + "', '1', '" + Convert.ToInt32(Row["total_price"]) + "')");
                    }


                    if (RavenEnvironment.GetGame().GetCatalog().GetMarketplace().MarketAverages.ContainsKey(Item.SpriteId) && RavenEnvironment.GetGame().GetCatalog().GetMarketplace().MarketCounts.ContainsKey(Item.SpriteId))
                    {
                        int num3 = RavenEnvironment.GetGame().GetCatalog().GetMarketplace().MarketCounts[Item.SpriteId];
                        int num4 = (RavenEnvironment.GetGame().GetCatalog().GetMarketplace().MarketAverages[Item.SpriteId] += Convert.ToInt32(Row["total_price"]));

                        RavenEnvironment.GetGame().GetCatalog().GetMarketplace().MarketAverages.Remove(Item.SpriteId);
                        RavenEnvironment.GetGame().GetCatalog().GetMarketplace().MarketAverages.Add(Item.SpriteId, num4);
                        RavenEnvironment.GetGame().GetCatalog().GetMarketplace().MarketCounts.Remove(Item.SpriteId);
                        RavenEnvironment.GetGame().GetCatalog().GetMarketplace().MarketCounts.Add(Item.SpriteId, num3 + 1);
                    }
                    else
                    {
                        if (!RavenEnvironment.GetGame().GetCatalog().GetMarketplace().MarketAverages.ContainsKey(Item.SpriteId))
                        {
                            RavenEnvironment.GetGame().GetCatalog().GetMarketplace().MarketAverages.Add(Item.SpriteId, Convert.ToInt32(Row["total_price"]));
                        }

                        if (!RavenEnvironment.GetGame().GetCatalog().GetMarketplace().MarketCounts.ContainsKey(Item.SpriteId))
                        {
                            RavenEnvironment.GetGame().GetCatalog().GetMarketplace().MarketCounts.Add(Item.SpriteId, 1);
                        }
                    }
                }
            }

            this.ReloadOffers(Session);
        }