/// <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="HttpClient">Ссылка на экземпляр класса <see cref="HttpClient"/>.</param> /// <param name="Form">Ссылка на экземпляр класса <see cref="Form1"/>.</param> /// <returns></returns> public static async Task Tasks(int BotID, HttpClient HttpClient, Form1 Form) { // Отправляем запрос на страницу заданий string result = await HelpMethod.GET("/task", HttpClient); // Парсим список id MatchCollection reg = new Regex(@"rd\?id=(.*?)\"" class=").Matches(result); // Если найдено больше 0 if (reg.Count > 0) { // Запускаем цикл foreach (Match match in reg) { // Получаем id string id = match.Groups[1].Value; // Если id больше 0 if (id.Length > 0) { // Забираем задания result = await HelpMethod.GET("/task_reward?id=" + id, HttpClient); // Сохраняем опыт SaveExpirience("Tasks", result, BotID, Form); } } // Логируем действие HelpMethod.Log($"Забрали ( {reg.Count} ) ежедневных заданий.", 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 Glade(int BotID, HttpClient HttpClient, Form1 Form) { // Отправляем запрос на страницу поляны string result = await HelpMethod.GET("/glade", HttpClient); // Если можно копать if (result.Contains("Копать")) { // Логируем действие HelpMethod.Log("Вскапываем поляну...", BotID, Form); // Запускаем цикл do { // Капаем поляну result = await HelpMethod.GET("/glade_dig", HttpClient); // Сохраняем опыт SaveExpirience("Glade", result, BotID, Form); }while (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> /// <returns></returns> public static async Task Travel(int BotID, HttpClient HttpClient, Form1 Form) { // Делаем запрос на страницу прогулки string result = await HelpMethod.GET("/travel", HttpClient); // Если там есть "Гулять дальше" if (result.Contains("Гулять дальше")) { // Записываем опыт SaveExpirience("Travel", result, BotID, Form); // Завершаем прогулку result = await HelpMethod.GET("/travel?clear=1", HttpClient); } // Если питомец ещё не гуляет if (!result.Contains("Ваш питомец гуляет")) { // Парсим все ID со ссылок MatchCollection travel = new Regex(@"go_travel(.*?)\"" class=").Matches(result); // Если id больше нуля if (travel.Count > 0) { // Определяем переменные int temp_id = 0, curr_id = 0; // Проходимся по каждому ID foreach (Match match in travel) { // Получаем ID int news_id = Convert.ToInt32(match.Groups[1].Value.Replace("?id=", "")); // Если текущий ID больше временного if (news_id > temp_id) { // Записываем в текущий curr_id = news_id; } // Записываем во временную переменную текущий ID temp_id = news_id; } // Отправляем на прогулку (Самая длительная) result = await HelpMethod.GET("/go_travel?id=" + curr_id, HttpClient); // Проверяем успешно ли отправили if (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> /// <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> /// <returns></returns> public static async Task Chest(int BotID, HttpClient HttpClient, Form1 Form) { // Отправляем запрос на страницу шкафа string result = await HelpMethod.GET("/chest", HttpClient); // Парсим ссылку предмета string url = new Regex(@"<a href=\""(.*?)\"" class=\""bbtn mt5 vb\""").Match(result).Groups[1].Value; // Парсим имя предмета string name = new Regex(@"<div class=\""mt3\"">(.*?)</div>").Match(result).Groups[1].Value; // Если ссылка предмета не ровна нулю и ссылка не ровна открытию сундука if (url.Length > 0 && !url.Contains("open_item")) { // Запускам цикл while (url.Length > 0 && !url.Contains("open_item")) { // Надеваем предмет if (url.Contains("wear_item")) { HelpMethod.Log($"Надел {name}.", BotID, Form, Color.Green, false); } // Продаем предмет if (url.Contains("sell_item")) { HelpMethod.Log($"Продал {name}.", BotID, Form, Color.Red, false); } // Отправляем запрос result = await HelpMethod.GET(url, HttpClient); // Парсим ссылку предмета url = new Regex(@"<a href=\""(.*?)\"" class=\""bbtn mt5 vb\""").Match(result).Groups[1].Value; // Парсим имя предмета name = new Regex(@"<div class=\""mt3\"">(.*?)</div>").Match(result).Groups[1].Value; } } // Получаем ссылку на чекбокс "Открывать сундук" CheckBox checkBox = HelpMethod.findControl.FindCheckBox("checkbox_opencase", BotID, Form); // Если опция включена и ссылка - это сундук if (checkBox.Checked & url.Contains("open_item")) { // Если на аккаунте нет VIP if (!(bool)HelpMethod.findControl.FindLabel("label_isVip", BotID, Form).Tag) { // Если есть стальной ключ if (result.Contains("Стальной ключ")) { // Открываем сундук await HelpMethod.GET(url, 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 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); } } }