public object Clone() { var clone = new BotClass { AntiIdle = AntiIdle.Copy(), ChartStats = ChartStats.Copy(), CreateWindowsUser = CreateWindowsUser.Copy(), D3PrefsLocation = D3PrefsLocation.Copy(), Demonbuddy = Demonbuddy.Copy(), Description = Description.Copy(), Diablo = Diablo.Copy(), DiabloCloneLocation = DiabloCloneLocation.Copy(), Name = Name.Copy(), ProfileSchedule = new ProfileScheduleClass(), UseDiabloClone = UseDiabloClone.Copy(), UseWindowsUser = UseWindowsUser.Copy(), Week = Week.Copy(), WindowsUserName = WindowsUserName.Copy(), WindowsUserPassword = WindowsUserPassword.Copy() }; foreach (var profile in ProfileSchedule.Profiles) { clone.ProfileSchedule.Profiles.Add(profile); } return(clone); }
public BotClass() { Name = string.Empty; Description = String.Empty; AntiIdle = new AntiIdleClass(); ChartStats = new ChartStats(); }
public void StatsUpdaterWorker() { // Wait here till mainform is up while (Program.Mainform == null) { Thread.Sleep(100); } var usages = new CpuRamUsage(); long totalRam = PerformanceInfo.GetTotalMemory(); prepareMainGraphCpu(); prepareMainGraphMemory(); prepareMainGraphConnections(); prepareMainGraphGold(); while (true) { // Update Cpu/Ram Usage usages.Update(); double diabloCpuUsage = 0; long diabloRamUsage = 0; int diabloCount = 0; double demonbuddyCpuUsage = 0; long demonbuddyRamUsage = 0; int demonbuddyCount = 0; double goldPerHour = 0; double totalGold = 0; lock (BotSettings.Instance) { foreach (BotClass bot in BotSettings.Instance.Bots.ToList()) { ChartStats chartStats = bot.ChartStats; // Update bot uptime bot.RunningTime = bot.IsRunning ? DateTime.UtcNow.Subtract(bot.StartTime).ToString(@"hh\hmm\mss\s") : ""; // Update bot specific Chart stats CreateChartStats(bot, Program.Mainform.GoldStats, ChartValueType.Double); if (bot.IsRunning) { #region Calculate System Usage if (bot.Diablo.IsRunning) { // Calculate total Cpu/Ram usage for Diablo try { CpuRamUsage.Usage usage = usages.GetUsageById(bot.Diablo.Proc.Id); diabloCpuUsage += usage.Cpu; diabloRamUsage += usage.Memory; diabloCount++; } catch { } } if (bot.Demonbuddy.IsRunning) { // Calculate total Cpu/Ram usage for Demonbuddy try { CpuRamUsage.Usage usage = usages.GetUsageById(bot.Demonbuddy.Proc.Id); demonbuddyCpuUsage += usage.Cpu; demonbuddyRamUsage += usage.Memory; demonbuddyCount++; } catch { } } #endregion #region Gold Stats chartStats.GoldStats.Update(bot); // Update Current bot // Calculate total gold for all bots goldPerHour += chartStats.GoldStats.GoldPerHour; totalGold += chartStats.GoldStats.LastCoinage; Series serie = Program.Mainform.GoldStats.Series.FirstOrDefault(x => x.Name == bot.Name); if (serie != null) { updateMainformGraph(Program.Mainform.GoldStats, serie.Name, Math.Round(chartStats.GoldStats.GoldPerHour), (int)Settings.Default.StatsGphHistory, autoscale: true); } #endregion } } } try { // add to Cpu graph Chart graph = Program.Mainform.CpuUsage; double allusage = diabloCpuUsage + demonbuddyCpuUsage; updateMainformGraph(graph, "All Usage", allusage, legend: string.Format("All usage: {0,11}%", allusage.ToString("000.0")), limit: (int)Settings.Default.StatsCPUHistory); updateMainformGraph(graph, "Diablo", diabloCpuUsage, legend: string.Format("Diablo: {0,16}%", diabloCpuUsage.ToString("000.0")), limit: (int)Settings.Default.StatsCPUHistory); updateMainformGraph(graph, "Demonbuddy", demonbuddyCpuUsage, legend: string.Format("Demonbuddy: {0,4}%", demonbuddyCpuUsage.ToString("000.0")), limit: (int)Settings.Default.StatsCPUHistory); updateMainformGraph(graph, "Total System", Math.Round(usages.TotalCpuUsage, 2), legend: string.Format("Total System: {0,2}%", usages.TotalCpuUsage.ToString("000.0")), limit: (int)Settings.Default.StatsCPUHistory); // add to Memory graph graph = Program.Mainform.MemoryUsage; allusage = (double)(diabloRamUsage + demonbuddyRamUsage) / totalRam * 100; double diablousage = (double)diabloRamUsage / totalRam * 100; double demonbuddyusage = (double)demonbuddyRamUsage / totalRam * 100; updateMainformGraph(graph, "All Usage", allusage, legend: string.Format("All usage: {0,11}%", ((double)(diabloRamUsage + demonbuddyRamUsage) / totalRam * 100).ToString("000.0")), limit: (int)Settings.Default.StatsMemoryHistory); updateMainformGraph(graph, "Diablo", diablousage, legend: string.Format("Diablo: {0,16}%", diablousage.ToString("000.0")), limit: (int)Settings.Default.StatsMemoryHistory); updateMainformGraph(graph, "Demonbuddy", demonbuddyusage, legend: string.Format("Demonbuddy: {0,4}%", demonbuddyusage.ToString("000.0")), limit: (int)Settings.Default.StatsMemoryHistory); double mem = (double)PerformanceInfo.GetPhysicalUsedMemory() / totalRam * 100; updateMainformGraph(graph, "Total System", mem, legend: string.Format("Total System: {0,2}%", mem.ToString("000.0")), limit: (int)Settings.Default.StatsMemoryHistory); // add to Connection graph updateMainformGraph(Program.Mainform.CommConnections, "Connections", Communicator.StatConnections, legend: string.Format("Connections {0}", Communicator.StatConnections), autoscale: true, limit: (int)Settings.Default.StatsConnectionsHistory); updateMainformGraph(Program.Mainform.CommConnections, "Failed", Communicator.StatFailed, legend: string.Format("Failed {0}", Communicator.StatFailed), autoscale: true, limit: (int)Settings.Default.StatsConnectionsHistory); Communicator.StatConnections = 0; Communicator.StatFailed = 0; // add to Gold Graph updateMainformGraph(Program.Mainform.GoldStats, "Gph", Math.Round(goldPerHour), legend: string.Format("Gph {0}", Math.Round(goldPerHour)), autoscale: true, limit: (int)Settings.Default.StatsGphHistory); updateMainformLabel(Program.Mainform.CashPerHour, string.Format("{0:C2}", (goldPerHour / 1000000 * (double)Settings.Default.StatsGoldPrice))); updateMainformLabel(Program.Mainform.CurrentCash, string.Format("{0:C2}", (totalGold / 1000000 * (double)Settings.Default.StatsGoldPrice))); updateMainformLabel(Program.Mainform.TotalGold, string.Format("{0:N0}", totalGold)); } catch (Exception ex) { DebugHelper.Exception(ex); } Thread.Sleep((int)Settings.Default.StatsUpdateRate); } }