/// <summary> /// Log out from current account /// </summary> private void Logout() { _updater.Stop(); StopIdle(); IsAuthorized = false; // Clear the account settings Storage.SessionId = string.Empty; Storage.SteamLoginSecure = string.Empty; Storage.SteamParental = string.Empty; UserName = ProfileUrl = Level = AvatarUrl = BackgroundUrl = null; FavoriteBadge = null; Storage.IdleMode = 0; Storage.BadgeFilter = Storage.ShowcaseFilter = string.Empty; AllBadges.Clear(); IdleQueueBadges.Clear(); Storage.Save(); foreach (var showcase in AllShowcases) { showcase.IsCompleted = false; showcase.CanCraft = false; showcase.IsOwned = false; } Logger.Info("See you later"); }
public void StopIdle() { try { lblGameName.Visible = false; picApp.Image = null; picApp.Visible = false; GamesState.Visible = false; btnPause.Visible = false; btnSkip.Visible = false; lblCurrentStatus.Text = localization.strings.not_ingame; lblHoursPlayed.Visible = false; picIdleStatus.Image = null; // Hide the status bar ssFooter.Visible = false; // Resize the form var graphics = CreateGraphics(); var scale = graphics.DpiY * 1.9583; Height = Convert.ToInt32(scale); // Kill the idling process foreach (var badge in AllBadges.Where(b => b.InIdle)) { badge.StopIdle(); } } catch (Exception ex) { Logger.Exception(ex, "frmMain -> StopIdle"); } }
public void RemoveBadge(BadgeModel badge) { badge.RemainingCard = 0; AllBadges.Remove(badge); IdleQueueBadges.Remove(badge); badge.PropertyChanged -= BadgeIdleStatusChanged; }
public void SortBadges(string method) { lblDrops.Text = "Sorting results based on your settings, please wait..."; switch (method) { case "mostcards": AllBadges = AllBadges.OrderByDescending(b => b.RemainingCard).ToList(); break; case "leastcards": AllBadges = AllBadges.OrderBy(b => b.RemainingCard).ToList(); break; case "mostvalue": var query = string.Format("http://api.enhancedsteam.com/market_data/average_card_prices/im.php?appids={0}", string.Join(",", AllBadges.Select(b => b.AppId))); var json = new WebClient().DownloadString(query); var convertedJson = JsonConvert.DeserializeObject <EnhancedsteamHelper>(json); foreach (var price in convertedJson.Avg_Values) { var badge = AllBadges.SingleOrDefault(b => b.AppId == price.AppId); if (badge != null) { badge.AveragePrice = price.Avg_Price; } } AllBadges = AllBadges.OrderByDescending(b => b.AveragePrice).ToList(); break; default: return; } }
private void AutoNext() { if (IsAutoNextComplete == false && IsAutoNextOn == true) { if (!IsSteamReady) { return; } else if (lblCurrentStatus.Text == "多线程") { IsAutoNextComplete = true; return; } else if (lblCurrentStatus.Text == localization.strings.idling_complete) { IsAutoNextComplete = true; StopIdle(); return; } else { StopIdle(); AllBadges.RemoveAll(b => Equals(b, CurrentBadge)); Thread.Sleep(AutoNextTime); StartIdle(); AutoNext(); } } }
/// <summary> /// Processes all badges on page /// </summary> /// <param name="document">HTML document (1 page) from x</param> private void ProcessBadgesOnPage(HtmlDocument document) { foreach (var badge in document.DocumentNode.SelectNodes("//div[@class=\"badge_row is_link\"]")) { var appIdNode = badge.SelectSingleNode(".//a[@class=\"badge_row_overlay\"]").Attributes["href"].Value; var appid = Regex.Match(appIdNode, @"gamecards/(\d+)/").Groups[1].Value; if (string.IsNullOrWhiteSpace(appid) || Settings.Default.blacklist.Contains(appid) || appid == "368020" || appid == "335590" || appIdNode.Contains("border=1")) { continue; } var hoursNode = badge.SelectSingleNode(".//div[@class=\"badge_title_stats_playtime\"]"); var hours = hoursNode == null ? string.Empty : Regex.Match(hoursNode.InnerText, @"[0-9\.,]+").Value; var nameNode = badge.SelectSingleNode(".//div[@class=\"badge_title\"]"); var name = WebUtility.HtmlDecode(nameNode.FirstChild.InnerText).Trim(); var cardNode = badge.SelectSingleNode(".//span[@class=\"progress_info_bold\"]"); var cards = cardNode == null ? string.Empty : Regex.Match(cardNode.InnerText, @"[0-9]+").Value; var badgeInMemory = AllBadges.FirstOrDefault(b => b.StringId == appid); if (badgeInMemory != null) { badgeInMemory.UpdateStats(cards, hours); } else { AllBadges.Add(new Badge(appid, name, cards, hours)); } } }
public void StopIdle() { try { lblGameName.Visible = false; picApp.Image = null; picApp.Visible = false; lblCurrentStatus.Text = "Not in game"; picIdleStatus.Image = null; // Stop the card drop check timer tmrCardDropCheck.Enabled = false; // Hide the status bar ssFooter.Visible = false; // Resize the form var graphics = CreateGraphics(); var scale = graphics.DpiY * 1.9583; Height = Convert.ToInt32(scale); // Kill the idling process foreach (var badge in AllBadges.Where(b => b.InIdle)) { badge.StopIdle(); } } catch (Exception ex) { Logger.Exception(ex, "frmMain -> StopIdle"); } }
private void lnkResetCookies_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { // Clear the settings Settings.Default.sessionid = string.Empty; Settings.Default.steamLogin = string.Empty; Settings.Default.myProfileURL = string.Empty; Settings.Default.steamparental = string.Empty; Settings.Default.Save(); // Stop the steam-idle process StopIdle(); // Clear the badges list AllBadges.Clear(); // Resize the form var graphics = CreateGraphics(); var scale = graphics.DpiY * 1.625; Height = Convert.ToInt32(scale); // Set timer intervals tmrCheckSteam.Interval = 500; tmrCheckCookieData.Interval = 500; // Hide lblDrops and lblIdle lblDrops.Visible = false; lblIdle.Visible = false; // Set IsCookieReady to false IsCookieReady = false; // Re-enable tmrReadyToGo tmrReadyToGo.Enabled = true; }
private void btnSkip_Click(object sender, EventArgs e) { if (!IsSteamReady) { return; } StopIdle(); AllBadges.RemoveAll(b => Equals(b, CurrentBadge)); StartIdle(); }
private void RunNextIdle() { if (!IsSteamReady) { return; } StopIdle(); AllBadges.RemoveAll(b => Equals(b, CurrentBadge)); StartIdle(); }
/// <summary> /// Performs reset to initial state /// </summary> private void ResetClientStatus() { // Clear the settings Settings.Default.sessionid = string.Empty; Settings.Default.steamLogin = string.Empty; Settings.Default.myProfileURL = string.Empty; Settings.Default.steamparental = string.Empty; Settings.Default.mainWindowLeft = 0; Settings.Default.mainWindowTop = 0; Settings.Default.useMainWindowPos = false; Settings.Default.Save(); // Stop the steam-idle process StopIdle(); // Clear the badges list AllBadges.Clear(); // Resize the form var graphics = CreateGraphics(); var scale = graphics.DpiY * 1.625; Height = Convert.ToInt32(scale); // Set timer intervals tmrCheckSteam.Interval = 500; tmrCheckCookieData.Interval = 500; // Hide signed user name if (Settings.Default.showUsername) { lblSignedOnAs.Text = String.Empty; lblSignedOnAs.Visible = false; } // Hide spinners picReadingPage.Visible = false; // Hide lblDrops and lblIdle lblDrops.Visible = false; lblIdle.Visible = false; // Set IsCookieReady to false IsCookieReady = false; // Re-enable tmrReadyToGo tmrReadyToGo.Enabled = true; }
public void SortBadges(string method) { lblDrops.Text = localization.strings.sorting_results; switch (method) { case "mostcards": AllBadges = AllBadges.OrderByDescending(b => b.RemainingCard).ToList(); break; case "leastcards": AllBadges = AllBadges.OrderBy(b => b.RemainingCard).ToList(); break; default: return; } }
/// <summary> /// Processes all badges on page /// </summary> /// <param name="document">HTML document (1 page) from x</param> private void ProcessBadgesOnPage(HtmlDocument document) // AKA6 { foreach (var badge in document.DocumentNode.SelectNodes("//div[@class=\"badge_row is_link\"]")) { var appIdNode = badge.SelectSingleNode(".//a[@class=\"badge_row_overlay\"]").Attributes["href"].Value; var appid = Regex.Match(appIdNode, @"gamecards/(\d+)/").Groups[1].Value; if (string.IsNullOrWhiteSpace(appid) || Settings.Default.blacklist.Contains(appid) || appid == "368020" || appid == "335590" || appIdNode.Contains("border=1")) { continue; } var hoursNode = badge.SelectSingleNode(".//div[@class=\"badge_title_stats_playtime\"]"); var hours = hoursNode == null ? string.Empty : Regex.Match(hoursNode.InnerText, @"[0-9\.,]+").Value; var nameNode = badge.SelectSingleNode(".//div[@class=\"badge_title\"]"); var name = WebUtility.HtmlDecode(nameNode.FirstChild.InnerText).Trim(); var cardNode = badge.SelectSingleNode(".//span[@class=\"progress_info_bold\"]"); var cards = cardNode == null ? string.Empty : Regex.Match(cardNode.InnerText, @"[0-9]+").Value; var badgeInMemory = AllBadges.FirstOrDefault(b => b.StringId == appid); if (badgeInMemory != null) { badgeInMemory.UpdateStats(cards, hours); } else { // un 0 antes = desactivado var ets2 = "227300"; var ats = "270880"; // en blacklist var gtav = "271590"; // si no tiene cromos no pasa por la lista var rocket = "0252950"; // Agregamos if para regular que juegos ingresan a la lista // WhiteList if (String.Equals(appid, gtav) || String.Equals(appid, ets2) || String.Equals(appid, ats) || String.Equals(appid, rocket)) { AllBadges.Add(new Badge(appid, name, cards, hours)); } } } }
private void btnSkip_Click(object sender, EventArgs e) { if (!IsSteamReady) { return; } StopIdle(); AllBadges.RemoveAll(b => Equals(b, CurrentBadge)); UpdateStateInfo(); if (CanIdleBadges.Any()) { StartIdle(CanIdleBadges.First()); UpdateStateInfo(); } else { IdleComplete(); } }
public void StopIdle() { try { LblGameName.Visible = false; PbxApp.Image = null; PbxApp.Visible = false; LvwGamesState.Visible = false; BtnPause.Visible = false; BtnSkip.Visible = false; LblCurrentStatus.Text = localization.strings.not_ingame; LblHoursPlayed.Visible = false; PbxIdleStatus.Image = null; // Stop the card drop check timer TmrCardDropCheck.Enabled = false; // Stop the statistics timer TmrStatistics.Stop(); TmrStatistics.Enabled = false; // Hide the status bar SstFooter.Visible = false; // Resize the form var graphics = CreateGraphics(); var scale = graphics.DpiY * 1.9583; Height = Convert.ToInt32(scale); // Kill the idling process foreach (var badge in AllBadges.Where(b => b.InIdle)) { badge.StopIdle(); } } catch (Exception ex) { Logger.Exception(ex, "frmMain -> StopIdle"); } }
private void settingsToolStripMenuItem_Click(object sender, EventArgs e) { // Show the form String previous = Settings.Default.sort; Boolean previous_behavior = Settings.Default.OnlyOneGameIdle; Form frm = new frmSettings(); frm.ShowDialog(); if (previous != Settings.Default.sort || previous_behavior != Settings.Default.OnlyOneGameIdle) { StopIdle(); AllBadges.Clear(); tmrReadyToGo.Enabled = true; } if (Settings.Default.showUsername && IsCookieReady) { lblSignedOnAs.Text = SteamProfile.GetSignedAs(); lblSignedOnAs.Visible = Settings.Default.showUsername; } }
private void settingsToolStripMenuItem_Click(object sender, EventArgs e) { // Show the form var previous = Settings.Default.sort; var frm = new frmSettings(); frm.ShowDialog(); if (previous != Settings.Default.sort) { StopIdle(); AllBadges.Clear(); tmrReadyToGo.Enabled = true; } if (Settings.Default.showUsername) { lblSignedOnAs.Text = "Signed in as " + GetUserName(); } lblSignedOnAs.Visible = Settings.Default.showUsername; }
public async Task CheckCardDrops(Badge badge) { if (!await badge.CanCardDrops()) { NextIdle(); lblCurrentRemaining.Text = badge.RemainingCard + " " + localization.strings.card_drops_remaining; pbIdle.Value = pbIdle.Maximum - badge.RemainingCard; lblHoursPlayed.Text = badge.HoursPlayed + " " + localization.strings.hrs_on_record; UpdateStateInfo(); } else { // zhenying make it skip to next item StopIdle(); AllBadges.RemoveAll(b => Equals(b, CurrentBadge)); AllBadges.Add(CurrentBadge); StartIdle(); // Resets the clock based on the number of remaining drops //TimeLeft = badge.RemainingCard == 1 ? 300 : 900; //TimeLeft = badge.RemainingCard == 1 ? 10 : 30; } }
private async void btnSkip_Click(object sender, EventArgs e) { if (!IsSteamReady) { return; } lblCurrentStatus.Visible = false; StopIdle(); AllBadges.RemoveAll(b => Equals(b, CurrentBadge)); if (!CanIdleBadges.Any()) { // If there are no more games to idle, reload the badges picReadingPage.Visible = true; lblIdle.Visible = false; lblDrops.Visible = true; lblDrops.Text = localization.strings.reading_badge_page + ", " + localization.strings.please_wait; await LoadBadgesAsync(); } StartIdle(); }
private void _FillAveragePrice() { if (!AllBadges.Any() || AllBadges.First().AveragePrice != 0) { return; } var query = string.Format("http://api.enhancedsteam.com/market_data/average_card_prices/im.php?appids={0}", string.Join(",", AllBadges.Select(b => b.AppId))); var json = new WebClient() { Encoding = Encoding.UTF8 }.DownloadString(query); var convertedJson = JsonConvert.DeserializeObject <EnhancedsteamHelper>(json); foreach (var price in convertedJson.Avg_Values) { var badge = AllBadges.SingleOrDefault(b => b.AppId == price.AppId); if (badge != null) { badge.AveragePrice = price.Avg_Price; } } }
private void ReloadList() { StopIdle(); AllBadges.Clear(); tmrReadyToGo.Enabled = true; }
private async void tmrCardDropCheck_Tick(object sender, EventArgs e) { if (TimeLeft <= 0) { tmrCardDropCheck.Enabled = false; // solo mode if (CurrentBadge != null) { CurrentBadge.Idle(); if (PreviousBadge != null) { await PreviousBadge.CanCardDrops(); if (PreviousCardsRemaining != PreviousBadge.RemainingCard) { //前のゲームのカードがドロップしたようなので、ファストモード成功。 //あと10秒くらいまって次のカードへ。 TimeLeft = 10; //前のゲームにカードが残っているようなら、ファストモードにしておく。 if (PreviousBadge.RemainingCard > 0) { PreviousBadge.FastMode = true; if (Settings.Default.checkNoDrop) { //次も同じゲームをIdleする AllBadges.RemoveAll(b => Equals(b, PreviousBadge)); AllBadges.Insert(0, PreviousBadge); } else { //追加Idle if (PreviousBadge.HoursPlayed <= 10) { while (PreviousBadge.HoursPlayed > PreviousBadge.MinPlayTime) { PreviousBadge.MinPlayTime += 0.5; } } else { //Idle時間が10時間を越えていたならFastModeをやめる。 PreviousBadge.FastMode = false; } } } } else { //ファストモード失敗。 //最低プレイ時間を30min間延ばす //ただしプレイ時間が10時間以上のものは通常モードにする。 //(無限にIdleするのを防ぐため。) if (PreviousBadge.HoursPlayed <= 10) { while (PreviousBadge.HoursPlayed > PreviousBadge.MinPlayTime) { PreviousBadge.MinPlayTime += 0.5; } //あと20秒くらいまって次のカードへ。 TimeLeft = 10; } else { PreviousBadge.FastMode = false; //次のゲームへ。 NextIdle(); } } //前のゲームの処理は終わり PreviousBadge = null; } else { if (Settings.Default.fastModeEnable && CurrentBadge.FastMode) { //現在のゲームとカードドロップ数を記録しておく PreviousCardsRemaining = CurrentBadge.RemainingCard; PreviousBadge = CurrentBadge; //現在のゲームを最後尾へ AllBadges.RemoveAll(b => Equals(b, CurrentBadge)); AllBadges.Add(CurrentBadge); //次のゲームへ NextIdle(); } else { //通常モード await CheckCardDrops(CurrentBadge); } } } var isMultipleIdle = CanIdleBadges.Any(b => !Equals(b, CurrentBadge) && b.InIdle); if (isMultipleIdle) { await LoadBadgesAsync(); UpdateIdleProcesses(); isMultipleIdle = CanIdleBadges.Any(b => b.HoursPlayed < b.MinPlayTime && b.InIdle); if (isMultipleIdle) { TimeLeft = 360; } } // Check if user is authenticated and if any badge left to idle // There should be check for IsCookieReady, but property is set in timer tick, so it could take some time to be set. tmrCardDropCheck.Enabled = !string.IsNullOrWhiteSpace(Settings.Default.sessionid) && IsSteamReady && CanIdleBadges.Any() && TimeLeft != 0; } else { TimeLeft = TimeLeft - 1; lblTimer.Text = TimeSpan.FromSeconds(TimeLeft).ToString(@"mm\:ss"); if (Settings.Default.fastModeEnable && CurrentBadge != null) { lblTimer.Text += CurrentBadge.FastMode ? "(F)" : "(N)"; } } }
public void AddBadge(BadgeModel badge) { AllBadges.Add(badge); badge.PropertyChanged += BadgeIdleStatusChanged; }
public async Task LoadBadgesAsync() { var profileLink = Settings.Default.myProfileURL + "/badges"; var document = new HtmlDocument(); var pages = new List <string>() { "?p=1" }; try { for (var i = 0; i < pages.Count; i++) { var response = await CookieClient.GetHttpAsync(profileLink + pages[i]); document.LoadHtml(response); var pageNodes = document.DocumentNode.SelectNodes("//a[@class=\"pagelink\"]"); if (pageNodes != null) { pages.AddRange(pageNodes.Select(p => p.Attributes["href"].Value).Distinct()); pages = pages.Distinct().ToList(); } foreach (var badge in document.DocumentNode.SelectNodes("//div[@class=\"badge_row is_link\"]")) { var appIdNode = badge.SelectSingleNode(".//a[@class=\"badge_row_overlay\"]").Attributes["href"].Value; var appid = Regex.Match(appIdNode, @"gamecards/(\d+)/").Groups[1].Value; if (string.IsNullOrWhiteSpace(appid) || Settings.Default.blacklist.Contains(appid) || appid == "368020" || appid == "335590") { continue; } var hoursNode = badge.SelectSingleNode(".//div[@class=\"badge_title_stats_playtime\"]"); var hours = hoursNode == null ? string.Empty : Regex.Match(hoursNode.InnerText, @"[0-9\.,]+").Value; var nameNode = badge.SelectSingleNode(".//div[@class=\"badge_title\"]"); var name = WebUtility.HtmlDecode(nameNode.FirstChild.InnerText).Trim(); var cardNode = badge.SelectSingleNode(".//span[@class=\"progress_info_bold\"]"); var cards = cardNode == null ? string.Empty : Regex.Match(cardNode.InnerText, @"[0-9]+").Value; var badgeInMemory = AllBadges.FirstOrDefault(b => b.StringId == appid); if (badgeInMemory != null) { badgeInMemory.UpdateStats(cards, hours); } else { AllBadges.Add(new Badge(appid, name, cards, hours)); } } } } catch (Exception ex) { Logger.Exception(ex, "Badge -> LoadBadgesAsync, for profile = " + Settings.Default.myProfileURL); // badge page didn't load picReadingPage.Image = null; lblDrops.Text = "Badge page didn't load, will retry in 10 seconds"; ReloadCount = 10; tmrBadgeReload.Enabled = true; return; } SortBadges(Settings.Default.sort); picReadingPage.Visible = false; UpdateStateInfo(); if (CardsRemaining == 0) { IdleComplete(); } }
/// <summary> /// Updates number of active idle processes /// </summary> private void CheckIdleStatus() { ActiveProcessCount = AllBadges.Concat(Games).Count(b => b.CardIdleActive); }