コード例 #1
0
ファイル: BotEngine.cs プロジェクト: dekosik/mpets.mobi.bot
        /// <summary>
        /// Запускает задачу, которая играет с питомцем.
        /// </summary>
        /// <param name="BotID">Индентификатор бота (вкладки).</param>
        /// <param name="HttpClient">Ссылка на экземпляр класса <see cref="HttpClient"/>.</param>
        /// <param name="Form">Ссылка на экземпляр класса <see cref="Form1"/>.</param>
        /// <returns></returns>
        public static async Task Play(int BotID, HttpClient HttpClient, Form1 Form)
        {
            // Делаем запрос на главную
            string result = await HelpMethod.GET("/", HttpClient);

            // Парсим бесполезное число
            string rand = new Regex(@"action=play&rand=(.*?)\"" class=").Match(result).Groups[1].Value;

            if (rand.Length > 0)
            {
                // Информируем в статус лог
                HelpMethod.StatusLog("Играем с питомцем...", BotID, Form, Properties.Resources.game);

                // Логируем действие
                HelpMethod.Log("Играем с питомцем...", BotID, Form);

                // Запускаем цикл
                do
                {
                    // Выполняем действие
                    result = await HelpMethod.GET("/?action=play&rand=" + rand, HttpClient);

                    // Парсим бесполезное число
                    rand = new Regex(@"action=play&rand=(.*?)\"" class=").Match(result).Groups[1].Value;

                    // Записываем опыт
                    SaveExpirience("Play", result, BotID, Form);
                }while (rand.Length > 0);
            }
        }
コード例 #2
0
ファイル: BotEngine.cs プロジェクト: dekosik/mpets.mobi.bot
        /// <summary>
        /// Запускает задачу ожидания.
        /// </summary>
        /// <param name="BotID">Индентификатор бота (вкладки).</param>
        /// <param name="Button">Ссылка на экземпляр класса <see cref="Button"/>.</param>
        /// <param name="Interval">Интервал ожидания, в секундах.</param>
        /// <param name="Form">Ссылка на экземпляр класса <see cref="Form1"/>.</param>
        /// <returns></returns>
        public static async Task Sleep(int BotID, Button Button, Form1 Form, int Interval = 60)
        {
            // Инициализируем таймер ожидания
            DateTime taskStop = DateTime.Now.AddSeconds(Interval);

            // Возвращаем доступность кнопки
            Form.Invoke(new Action(() => Button.Enabled = true));

            // Запускам цикл ожидания
            while (true)
            {
                // Получаем текущие время
                DateTime now = DateTime.Now;

                // Если время прошло, выходим из цикла
                if (now.Hour == taskStop.Hour && now.Minute == taskStop.Minute && now.Second == taskStop.Second || Button.Text.Contains(Form1.BOT_START_TEXT))
                {
                    break;
                }

                // Обновляем лог
                HelpMethod.StatusLog($"Повтор через {taskStop.Subtract(now):mm} мин : {taskStop.Subtract(now):ss} сек", BotID, Form, Properties.Resources.sleep);

                // Задержка
                await Task.Delay(100);
            }
        }
コード例 #3
0
ファイル: BotEngine.cs プロジェクト: dekosik/mpets.mobi.bot
        /// <summary>
        /// Запускает задачу, которая даёт питомцу витаминку.
        /// </summary>
        /// <param name="BotID">Индентификатор бота (вкладки).</param>
        /// <param name="HttpClient">Ссылка на экземпляр класса <see cref="HttpClient"/>.</param>
        /// <param name="Form">Ссылка на экземпляр класса <see cref="Form1"/>.</param>
        /// <returns></returns>
        public static async Task WakeUp(int BotID, HttpClient HttpClient, Form1 Form)
        {
            // Делаем запрос на главную
            string result = await HelpMethod.GET("/", HttpClient);

            if (result.Contains("Дать витаминку за"))
            {
                // Информируем в статус лог
                HelpMethod.StatusLog("Даём витаминку...", BotID, Form, Properties.Resources.heart);

                // Даём витаминку
                await HelpMethod.GET("/wakeup", HttpClient);

                // Логируем действие
                HelpMethod.Log("Дали питомцу витаминку.", BotID, Form);
            }
        }
コード例 #4
0
ファイル: BotEngine.cs プロジェクト: dekosik/mpets.mobi.bot
        /// <summary>
        /// Запускает задачу, которая посещает выставки.
        /// </summary>
        /// <param name="BotID">Индентификатор бота (вкладки).</param>
        /// <param name="HttpClient">Ссылка на экземпляр класса <see cref="HttpClient"/>.</param>
        /// <param name="Form">Ссылка на экземпляр класса <see cref="Form1"/>.</param>
        /// <returns></returns>
        public static async Task Showing(int BotID, HttpClient HttpClient, Form1 Form)
        {
            // Делаем запрос на главную
            string result = await HelpMethod.GET("/", HttpClient);

            if (result.Contains("show?start=1"))
            {
                // Информируем в статус лог
                HelpMethod.StatusLog("На выставке...", BotID, Form, Properties.Resources.cup);

                // Логируем действие
                HelpMethod.Log("Идём на выставку...", BotID, Form);

                // Запускаем поход на выставку
                await HelpMethod.GET("/show?start=1", HttpClient);

                // Запускаем цикл
                do
                {
                    // Ходим на выставку
                    result = await HelpMethod.GET("/show", HttpClient);

                    // Если нужно выбрать страну
                    if (result.Contains("Выбрать"))
                    {
                        // Парсим ссылку для выбора страны
                        string show_select = new Regex(@"<a href=""(/.*?\?id=[0-9].?)").Match(result).Groups[1].Value;

                        // Если ссылка не пустая
                        if (show_select.Length > 0)
                        {
                            result = await HelpMethod.GET(show_select, HttpClient);

                            HelpMethod.Log($"Выбрали новую страну на выставке.", BotID, Form, Color.Green, false);
                        }
                    }

                    // Записываем опыт
                    SaveExpirience("Showing", result, BotID, Form);
                }while (result.Contains("Участвовать за") || result.Contains("Соревноваться"));

                // Логируем действие
                HelpMethod.Log($"Выставка завершена.", BotID, Form);
            }
        }
コード例 #5
0
ファイル: BotEngine.cs プロジェクト: dekosik/mpets.mobi.bot
        /// <summary>
        /// Запускает задачу, которая обновляет основую статистику питомца, а так же за сессию.
        /// </summary>
        /// <param name="BotID">Индентификатор бота (вкладки).</param>
        /// <param name="HttpClient">Ссылка на экземпляр класса <see cref="HttpClient"/>.</param>
        /// <param name="Form">Ссылка на экземпляр класса <see cref="Form1"/>.</param>
        /// <param name="Setting">Ссылка на экземпляр класса <see cref="IniFiles"/>.</param>
        /// <returns></returns>
        public static async Task Statistics(int BotID, HttpClient HttpClient, Form1 Form, IniFiles Setting)
        {
            // Информируем в статус лог
            HelpMethod.StatusLog("Обновление статистики...", BotID, Form, Properties.Resources.update);

            // Делаем запрос на профиль
            string result = await HelpMethod.GET("/profile", HttpClient);

            // Парсим основную статистику
            string beauty_string   = new Regex(@"Красота: (.*?)</div>").Match(result).Groups[1].Value;
            string coin_string     = new Regex(@"Монеты: (.*?)</div>").Match(result).Groups[1].Value;
            string heart_string    = new Regex(@"Сердечки: (.*?)</div>").Match(result).Groups[1].Value;
            string level_string    = new Regex("height=\"16\" width=\"16\" alt=\"\"/>([0-9].*?)</td>").Match(result).Groups[1].Value;
            string avatar_string   = new Regex(@"avatar([0-9][0-9]?).png").Match(result).Groups[1].Value;
            string isVip_string    = new Regex(@"category(.*?)effect").Match(result).Groups[1].Value;
            string nickname_string = new Regex("<a class=\"darkgreen_link\" href=\"/avatars\">(.*?)</a>").Match(result).Groups[1].Value;

            // Получаем ссылку на нижний статус лог
            ToolStrip toolstript_session = HelpMethod.findControl.FindToolStrip("toolstrip_bottom_log", BotID, Form);

            // Получаем сохраненный массив значений
            string[] beauty = (string[])toolstript_session.Items[1].Tag;
            string[] heart  = (string[])toolstript_session.Items[2].Tag;
            string[] coin   = (string[])toolstript_session.Items[3].Tag;

            if (beauty_string.Length > 0)
            {
                // Обновляем текущее количество красоты
                HelpMethod.findControl.FindToolStrip("toolstrip_top_log", BotID, Form).Items[1].Text = $"Красота: {HelpMethod.StringNumberFormat(beauty_string, false)}";

                // Высчитываем красоту
                if (!Convert.ToBoolean(beauty[2]))
                {
                    beauty[0] = beauty_string;
                    beauty[2] = true.ToString().ToLower();
                }
                else
                {
                    beauty[1] = (Convert.ToInt32(beauty_string) - Convert.ToInt32(beauty[0])).ToString();
                }
            }

            if (coin_string.Length > 0)
            {
                // Обновляем текущее количество монет
                HelpMethod.findControl.FindToolStrip("toolstrip_top_log", BotID, Form).Items[2].Text = $"Монет: {HelpMethod.StringNumberFormat(coin_string, false)}";

                // Высчитываем монеты
                if (!Convert.ToBoolean(coin[2]))
                {
                    coin[0] = coin_string;
                    coin[2] = true.ToString().ToLower();
                }
                else
                {
                    coin[1] = (Convert.ToInt32(coin_string) - Convert.ToInt32(coin[0])).ToString();
                }
            }

            if (heart_string.Length > 0)
            {
                // Обновляем текущее количество сердечек
                ToolStrip heart_current = HelpMethod.findControl.FindToolStrip("toolstrip_top_log", BotID, Form);

                heart_current.Items[0].Text        = $"Сердечек: {HelpMethod.StringNumberFormat(heart_string)}";
                heart_current.Items[0].ToolTipText = $"Сердечек: {HelpMethod.StringNumberFormat(heart_string, false)}";

                // Высчитываем сердечки
                if (!Convert.ToBoolean(heart[2]))
                {
                    heart[0] = heart_string;
                    heart[2] = true.ToString().ToLower();
                }
                else
                {
                    heart[1] = (Convert.ToInt32(heart_string) - Convert.ToInt32(heart[0])).ToString();
                }
            }

            // Проверка на VIP Аккаунт
            HelpMethod.findControl.FindLabel("label_isVip", BotID, Form).Tag = isVip_string.Length > 0;

            // Обновляем в сохранение
            toolstript_session.Items[1].Tag = beauty;
            toolstript_session.Items[2].Tag = heart;
            toolstript_session.Items[3].Tag = coin;

            // Обновляем текст
            toolstript_session.Items[1].Text        = $"{HelpMethod.StringNumberFormat(beauty[1], false)} собрано";
            toolstript_session.Items[2].Text        = $"{HelpMethod.StringNumberFormat(heart[1])} собрано";
            toolstript_session.Items[2].ToolTipText = $"{HelpMethod.StringNumberFormat(heart[1], false)} собрано";
            toolstript_session.Items[3].Text        = $"{HelpMethod.StringNumberFormat(coin[1], false)} собрано";


            // Обновляем аватар
            Form.Invoke((MethodInvoker) delegate
            {
                TabPage tabPage = HelpMethod.findControl.FindTabPage("tabPage", BotID, Form);

                tabPage.Text       = $"{nickname_string} [ {level_string} ]";
                tabPage.ImageIndex = Form.imageList1.Images.IndexOfKey($"avatar{avatar_string}");

                HelpMethod.findControl.FindLabel("label_nickname", BotID, Form).Tag = nickname_string;

                Setting.Write($"PETS{BotID}", "AVATAR", $"avatar{avatar_string}");
                Setting.Write($"PETS{BotID}", "LEVEL", $"{level_string}");
            });
        }
コード例 #6
0
ファイル: BotEngine.cs プロジェクト: dekosik/mpets.mobi.bot
        /// <summary>
        /// Запускает задачу, которая играет в мини-игру "Скачки".
        /// </summary>
        /// <param name="BotID">Индентификатор бота (вкладки).</param>
        /// <param name="HttpClient">Ссылка на экземпляр класса <see cref="HttpClient"/>.</param>
        /// <param name="Form">Ссылка на экземпляр класса <see cref="Form1"/>.</param>
        /// <returns></returns>
        public static async Task Races(int BotID, HttpClient HttpClient, Form1 Form)
        {
            // Переходим на страницу игры в скачки
            string result = await HelpMethod.GET("/races", HttpClient);

            // Фикс фейкового "старта игры"
            if (result.Contains("Обновить"))
            {
                result = await HelpMethod.GET("/races", HttpClient);
            }

            // Если есть активное задание "Стань призером скачек 2 раза"
            // Или если игра уже была начата или уже идёт
            if (result.Contains("Стань призером скачек 2 раза") || result.Contains("Обновить") || result.Contains("Бежать"))
            {
                // Проверяем можем ли мы встать в очередь
                if (result.Contains("Встать в очередь"))
                {
                    HelpMethod.StatusLog("[ Скачки ] В очереди...", BotID, Form, Properties.Resources.races);

                    // Встаём в очередь
                    result = await HelpMethod.GET("/races?in_queue=1", HttpClient);

                    // Ждем пока начнется игра
                    while (result.Contains("Обновить"))
                    {
                        result = await HelpMethod.GET("/races", HttpClient);
                    }
                }

                // Если нужно подождать начало
                if (result.Contains("Обновить"))
                {
                    // Ждем пока начнется игра
                    while (result.Contains("Обновить"))
                    {
                        result = await HelpMethod.GET("/races", HttpClient);
                    }
                }

                // Если игра уже началась
                if (result.Contains("Бежать"))
                {
                    HelpMethod.StatusLog("[ Скачки ] Играем...", BotID, Form, Properties.Resources.races);

                    // Запускаем цикл для игры ( Нажимаем кнопку бежать )
                    while (result.Contains("Бежать"))
                    {
                        result = await HelpMethod.GET("/races?go=1", HttpClient);

                        // Если кнопка толкнуть стала зеленой, жмем
                        if (result.Contains("73px; width: 70px;"))
                        {
                            result = await HelpMethod.GET("/races?attack=0", HttpClient);
                        }
                    }
                }

                // На случай если выиграли раньше всех
                if (result.Contains("Обновить"))
                {
                    HelpMethod.StatusLog("[ Скачки ] Ждём завершения...", BotID, Form, Properties.Resources.races);

                    // Запускаем цикл ожидания конца игры
                    while (result.Contains("Обновить"))
                    {
                        result = await HelpMethod.GET("/races", HttpClient);
                    }
                }

                // Нужные переменные для определения мест
                int seats_count = 1, seats = 1;

                // Определяем наше место
                foreach (Match item in new Regex(@"<a href=""/view_profile\?pet_id=[0-9]*.?"">(.*?)</a>").Matches(result))
                {
                    if (item.Groups[1].Value.Contains((string)HelpMethod.findControl.FindLabel("label_nickname", BotID, Form).Tag))
                    {
                        seats = seats_count;
                    }

                    seats_count++;
                }

                HelpMethod.Log($"[ Скачки ] Заняли {seats} место.", BotID, Form, seats <= 3 ? Color.Green : Color.Red);
            }
        }
コード例 #7
0
ファイル: BotEngine.cs プロジェクト: dekosik/mpets.mobi.bot
        /// <summary>
        /// Запускает задачу, которая играет в мини-игру "Снежки".
        /// </summary>
        /// <param name="BotID">Индентификатор бота (вкладки).</param>
        /// <param name="HttpClient">Ссылка на экземпляр класса <see cref="HttpClient"/>.</param>
        /// <param name="Form">Ссылка на экземпляр класса <see cref="Form1"/>.</param>
        /// <returns></returns>
        public static async Task Charm(int BotID, HttpClient HttpClient, Form1 Form)
        {
            // Переходим на страницу игры в снежки
            string result = await HelpMethod.GET("/charm", HttpClient);

            // Начниаем играть только если есть активное задание "Проведи 2 игры в снежки"
            // Или если игра уже была начата или уже идёт
            if (result.Contains("Проведи 2 игры в снежки") || result.Contains("Обновить") || result.Contains("Сменить"))
            {
                // Проверяем можем ли мы встать в очередь
                if (result.Contains("Встать в очередь"))
                {
                    HelpMethod.StatusLog("[ Снежки ] В очереди...", BotID, Form, Properties.Resources.charm);

                    // Встаём в очередь
                    result = await HelpMethod.GET("/charm?in_queue=1", HttpClient);

                    // Ждем пока начнется игра
                    while (result.Contains("Обновить"))
                    {
                        result = await HelpMethod.GET("/charm", HttpClient);
                    }
                }

                // Если нужно подождать начало
                if (result.Contains("Обновить"))
                {
                    HelpMethod.StatusLog("[ Снежки ] Ждём начало...", BotID, Form, Properties.Resources.charm);

                    // Ждем пока начнется игра
                    while (result.Contains("Обновить"))
                    {
                        result = await HelpMethod.GET("/charm", HttpClient);
                    }
                }

                // Если игра уже началась
                if (result.Contains("Сменить"))
                {
                    HelpMethod.StatusLog("[ Снежки ] Играем...", BotID, Form, Properties.Resources.charm);

                    // Запускаем цикл для игры (Бросаем снежки через смену питомца)
                    while (result.Contains("Сменить"))
                    {
                        result = await HelpMethod.GET("/charm?change=1", HttpClient);
                    }
                }

                // На случай если мы выбыли
                if (result.Contains("Обновить"))
                {
                    HelpMethod.StatusLog("[ Снежки ] Выбыли, ждём завершения...", BotID, Form, Properties.Resources.charm);

                    // Запускаем цикл ожидания конца игры
                    while (result.Contains("Обновить"))
                    {
                        result = await HelpMethod.GET("/charm", HttpClient);
                    }
                }

                // Проверяем выиграли или проиграли
                if (result.Contains("Вы победили"))
                {
                    HelpMethod.Log("[ Снежки ] Мы выиграли.", BotID, Form, Color.Green);
                }
                else
                {
                    HelpMethod.Log("[ Снежки ] Мы проиграли.", BotID, Form, Color.Red);
                }
            }
        }