/// <summary> /// Сохраняет и обновляет общий опыт за сессию. /// </summary> /// <param name="Type">Тип операции.</param> /// <param name="Result">Исходный HTML-код.</param> /// <param name="BotID">Индентификатор бота (вкладки).</param> /// <param name="Form">Ссылка на экземпляр класса <see cref="Form1"/>.</param> private static void SaveExpirience(string Type, string Result, int BotID, Form1 Form) { // Параметры для парсинга string param = ""; // Получаем ссылку на нижний статус лог ToolStrip toolstript_session = HelpMethod.findControl.FindToolStrip("toolstrip_bottom_log", BotID, Form); // Переменная для хранения общего опыта int exp = (int)toolstript_session.Items[4].Tag; // Ставим параметры для парсинга по типу switch (Type) { case "Travel": param = @"expirience.png\"" />(.*?)<br />"; break; case "Glade": param = @"expirience.png\"" />(.*?)</span>"; break; case "Tasks": param = @"expirience.png\"" />(.*?)</span>"; break; case "Food": param = @"expirience.png\"" class=\""ml2\"">(.*?)</div>"; break; case "Play": param = @"expirience.png\"" class=\""ml2\"">(.*?)</div>"; break; case "Showing": param = @"expirience.png\"" />(.*?)</td>"; break; } // Парсим опыт string expirience = new Regex(param).Match(Result).Groups[1].Value.Replace("+", ""); // Если тип Travel, выполняем ещё один парсинг if (Type == "Travel") { if (expirience.Contains("heart")) { expirience = new Regex(@"(.*?),").Match(expirience).Groups[1].Value; } } // Прибавляем опыт if (expirience.Length > 0) { exp += Convert.ToInt32(expirience); } // Сохраняем общее число и выводим его toolstript_session.Items[4].Tag = exp; toolstript_session.Items[4].Text = $"{HelpMethod.StringNumberFormat(exp.ToString())} собрано"; toolstript_session.Items[4].ToolTipText = $"{HelpMethod.StringNumberFormat(exp.ToString(), false)} собрано"; }
/// <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}"); }); }