/// <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); } }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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}"); }); }
/// <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); } }
/// <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); } } }