Esempio n. 1
0
        public bool Execute(params object[] Params)
        {
            if (Params == null || Params.Length == 0)
            {
                return(false);
            }

            if (String.IsNullOrEmpty(StringData))
            {
                return(false);
            }


            string[] Stuff = StringData.Split('\t');
            if (Stuff.Length != 2)
            {
                return(false);//This is important, incase a c**t scripts.
            }
            string Username = Stuff[0];

            RoomUser User = Instance.GetRoomUserManager().GetBotByName(Username);

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

            string Figure = Stuff[1];

            User.BotData.Look   = Figure;
            User.BotData.Gender = "M";

            MessageComposer UserChangeComposer = new UserChangeComposer(User.VirtualId, User.BotData);

            Instance.SendPacket(UserChangeComposer);



            using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("UPDATE `bots` SET `look` = @look, `gender` = @gender WHERE `id` = '" + User.BotData.Id + "' LIMIT 1");
                dbClient.AddParameter("look", User.BotData.Look);
                dbClient.AddParameter("gender", User.BotData.Gender);
                dbClient.RunQuery();
            }

            return(true);
        }
Esempio n. 2
0
        public void Parse(HabboHotel.GameClients.GameClient session, ClientPacket packet)
        {
            if (!session.GetHabbo().InRoom)
            {
                return;
            }

            Room room = session.GetHabbo().CurrentRoom;

            if (room == null)
            {
                return;
            }

            int    botId      = packet.PopInt();
            int    actionId   = packet.PopInt();
            string dataString = packet.PopString();

            if (actionId < 1 || actionId > 5)
            {
                return;
            }

            if (!room.GetRoomUserManager().TryGetBot(botId, out RoomUser bot))
            {
                return;
            }

            if (bot.BotData.OwnerId != session.GetHabbo().Id&& !session.GetHabbo().GetPermissions().HasRight("bot_edit_any_override"))
            {
                return;
            }

            RoomBot roomBot = bot.BotData;

            if (roomBot == null)
            {
                return;
            }

            /* 1 = Copy looks
             * 2 = Setup Speech
             * 3 = Relax
             * 4 = Dance
             * 5 = Change Name
             */

            switch (actionId)
            {
                #region Copy Looks (1)
            case 1:
            {
                //Change the defaults
                bot.BotData.Look   = session.GetHabbo().Look;
                bot.BotData.Gender = session.GetHabbo().Gender;

                UserChangeComposer userChangeComposer = new UserChangeComposer(bot.VirtualId, bot.BotData);

                room.SendPacket(userChangeComposer);



                using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                {
                    dbClient.SetQuery("UPDATE `bots` SET `look` = @look, `gender` = '" + session.GetHabbo().Gender + "' WHERE `id` = '" + bot.BotData.Id + "' LIMIT 1");
                    dbClient.AddParameter("look", session.GetHabbo().Look);
                    dbClient.RunQuery();
                }

                //Room.SendMessage(new UserChangeComposer(BotUser.GetClient(), true));
                break;
            }
                #endregion

                #region Setup Speech (2)
            case 2:
            {
                string[] configData = dataString.Split(new[]
                    {
                        ";#;"
                    }, StringSplitOptions.None);

                string[] speechData = configData[0].Split(new[]
                    {
                        '\r',
                        '\n'
                    }, StringSplitOptions.RemoveEmptyEntries);

                string automaticChat    = Convert.ToString(configData[1]);
                string speakingInterval = Convert.ToString(configData[2]);
                string mixChat          = Convert.ToString(configData[3]);

                if (String.IsNullOrEmpty(speakingInterval) || Convert.ToInt32(speakingInterval) <= 0 || Convert.ToInt32(speakingInterval) < 7)
                {
                    speakingInterval = "7";
                }

                roomBot.AutomaticChat    = Convert.ToBoolean(automaticChat);
                roomBot.SpeakingInterval = Convert.ToInt32(speakingInterval);
                roomBot.MixSentences     = Convert.ToBoolean(mixChat);

                using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                {
                    dbClient.RunQuery("DELETE FROM `bots_speech` WHERE `bot_id` = '" + bot.BotData.Id + "'");

                    #region Save Data - TODO: MAKE METHODS FOR THIS.

                    for (int i = 0; i <= speechData.Length - 1; i++)
                    {
                        dbClient.SetQuery("INSERT INTO `bots_speech` (`bot_id`, `text`) VALUES (@id, @data)");
                        dbClient.AddParameter("id", botId);
                        dbClient.AddParameter("data", speechData[i]);
                        dbClient.RunQuery();

                        dbClient.SetQuery("UPDATE `bots` SET `automatic_chat` = @AutomaticChat, `speaking_interval` = @SpeakingInterval, `mix_sentences` = @MixChat WHERE `id` = @id LIMIT 1");
                        dbClient.AddParameter("id", botId);
                        dbClient.AddParameter("AutomaticChat", automaticChat.ToLower());
                        dbClient.AddParameter("SpeakingInterval", Convert.ToInt32(speakingInterval));
                        dbClient.AddParameter("MixChat", PlusEnvironment.BoolToEnum(Convert.ToBoolean(mixChat)));
                        dbClient.RunQuery();
                    }
                    #endregion

                    #region Handle Speech
                    roomBot.RandomSpeech.Clear();

                    dbClient.SetQuery("SELECT `text` FROM `bots_speech` WHERE `bot_id` = @id");
                    dbClient.AddParameter("id", botId);

                    DataTable botSpeech = dbClient.GetTable();

                    foreach (DataRow speech in botSpeech.Rows)
                    {
                        roomBot.RandomSpeech.Add(new RandomSpeech(Convert.ToString(speech["text"]), botId));
                    }

                    #endregion
                }
                break;
            }
                #endregion

                #region Relax (3)
            case 3:
            {
                if (bot.BotData.WalkingMode == "stand")
                {
                    bot.BotData.WalkingMode = "freeroam";
                }
                else
                {
                    bot.BotData.WalkingMode = "stand";
                }

                using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                {
                    dbClient.RunQuery("UPDATE `bots` SET `walk_mode` = '" + bot.BotData.WalkingMode + "' WHERE `id` = '" + bot.BotData.Id + "' LIMIT 1");
                }
                break;
            }
                #endregion

                #region Dance (4)
            case 4:
            {
                if (bot.BotData.DanceId > 0)
                {
                    bot.BotData.DanceId = 0;
                }
                else
                {
                    Random randomDance = new Random();
                    bot.BotData.DanceId = randomDance.Next(1, 4);
                }

                room.SendPacket(new DanceComposer(bot.VirtualId, bot.BotData.DanceId));
                break;
            }
                #endregion

                #region Change Name (5)
            case 5:
            {
                if (dataString.Length == 0)
                {
                    session.SendWhisper("Come on, atleast give the bot a name!");
                    return;
                }
                else if (dataString.Length >= 16)
                {
                    session.SendWhisper("Come on, the bot doesn't need a name that long!");
                    return;
                }

                if (dataString.Contains("<img src") || dataString.Contains("<font ") || dataString.Contains("</font>") || dataString.Contains("</a>") || dataString.Contains("<i>"))
                {
                    session.SendWhisper("No HTML, please :<");
                    return;
                }

                bot.BotData.Name = dataString;
                using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                {
                    dbClient.SetQuery("UPDATE `bots` SET `name` = @name WHERE `id` = '" + bot.BotData.Id + "' LIMIT 1");
                    dbClient.AddParameter("name", dataString);
                    dbClient.RunQuery();
                }
                room.SendPacket(new UsersComposer(bot));
                break;
            }
                #endregion
            }
        }