private void _timer_Elapsed(object sender, ElapsedEventArgs e) { if (!Config.Enabled || DDBridge == null) { return; } if (Torch.CurrentSession == null) { DDBridge.SendStatus(Config.StatusPre); } else { if (timerStart.Ticks == 0) { timerStart = e.SignalTime; } string status = Config.Status; DateTime upTime = new DateTime(e.SignalTime.Subtract(timerStart).Ticks); Regex regex = new Regex(@"{uptime@(.*?)}"); if (regex.IsMatch(status)) { var match = regex.Match(status); string format = match.Groups[0].ToString().Replace("{uptime@", "").Replace("}", ""); status = Regex.Replace(status, "{uptime@(.*?)}", upTime.ToString(format)); } DDBridge.SendStatus(status .Replace("{p}", MySession.Static.Players.GetOnlinePlayers().Where(p => p.IsRealPlayer).Count().ToString()) .Replace("{mp}", MySession.Static.MaxPlayers.ToString()) .Replace("{mc}", MySession.Static.Mods.Count.ToString()) .Replace("{ss}", torchServer.SimulationRatio.ToString("0.00"))); if (Config.SimPing) { if (torchServer.SimulationRatio < float.Parse(Config.SimThresh)) { //condition if (i == DiscordBridge.MinIncrement && DiscordBridge.Locked != 1 && MySession.Static.Players.GetOnlinePlayerCount() > 0) { Task.Run(() => DDBridge.SendSimMessage(Config.SimMessage)); i = 0; DiscordBridge.Locked = 1; DiscordBridge.FirstWarning = 1; DiscordBridge.CooldownNeutral = 0; Log.Warn("Simulation warning sent!"); } if (DiscordBridge.FirstWarning == 1 && DiscordBridge.CooldownNeutral.ToString("00") == "60" && MySession.Static.Players.GetOnlinePlayerCount() > 0) { Task.Run(() => DDBridge.SendSimMessage(Config.SimMessage)); Log.Warn("Simulation warning sent!"); DiscordBridge.CooldownNeutral = 0; i = 0; } DiscordBridge.CooldownNeutral += (60 / DiscordBridge.Factor); i++; } else { //reset counter whenever Sim speed warning threshold is not met meaning that sim speed has to stay below //the set threshold for a consecutive minuete to trigger warning i = 0; DiscordBridge.CooldownNeutral = 0; } } } }
private void Timer_Elapsed(object sender, ElapsedEventArgs e) { if (!Config.Enabled || DDBridge == null) { return; } if (!DDBridge.Ready) { if (TickRetry >= 3 && DiscordBridge.Discord.CurrentUser == null) { DiscordBridge.Discord.ConnectAsync(); TickRetry = 0; } else { if (TickRetry > 10) { DiscordBridge.Discord.DisconnectAsync(); DiscordBridge.Discord.Dispose(); DDBridge = new DiscordBridge(this); TickRetry = 0; } } TickRetry++; } else if (DiscordBridge.Discord.CurrentUser == null || DiscordBridge.Discord.CurrentUser.Id == 0L || DiscordBridge.Discord.Presences == null || DiscordBridge.Discord.Presences.Count == 0) { DDBridge.Ready = false; DiscordBridge.Discord.DisconnectAsync(); DiscordBridge.Discord.Dispose(); DDBridge = new DiscordBridge(this); TickRetry = 0; } if (Torch.CurrentSession == null || torchServer.SimulationRatio <= 0f) { DDBridge.SendStatus(Config.StatusPre, UserStatus.DoNotDisturb); } else { if (timerStart.Ticks == 0) { timerStart = e.SignalTime; } string status = Config.Status; DateTime upTime = new DateTime(e.SignalTime.Subtract(timerStart).Ticks); Regex regex = new Regex(@"{uptime@(.*?)}"); if (regex.IsMatch(status)) { var match = regex.Match(status); string format = match.Groups[0].ToString().Replace("{uptime@", "").Replace("}", ""); status = Regex.Replace(status, "{uptime@(.*?)}", upTime.ToString(format)); } var playersCount = MySession.Static.Players.GetOnlinePlayers().Where(p => p.IsRealPlayer).Count(); var maxPlayers = MySession.Static.MaxPlayers; var simSpeed = torchServer.SimulationRatio.ToString("0.00"); DDBridge.SendStatus(status .Replace("{p}", playersCount.ToString()) .Replace("{mp}", maxPlayers.ToString()) .Replace("{mc}", MySession.Static.Mods.Count.ToString()) .Replace("{ss}", simSpeed), playersCount > 0? UserStatus.Online : UserStatus.Idle); if (Config.SimPing) { if (torchServer.SimulationRatio < Config.SimThresh) { //condition if (i == DiscordBridge.MinIncrement && DiscordBridge.Locked != 1 && playersCount > 0) { Task.Run(() => DDBridge.SendSimMessage(Config.SimMessage)); i = 0; DiscordBridge.Locked = 1; DiscordBridge.FirstWarning = 1; DiscordBridge.CooldownNeutral = 0; Log.Warn("Simulation warning sent!"); } if (DiscordBridge.FirstWarning == 1 && DiscordBridge.CooldownNeutral.ToString("00") == "60" && playersCount > 0) { Task.Run(() => DDBridge.SendSimMessage(Config.SimMessage)); Log.Warn("Simulation warning sent!"); DiscordBridge.CooldownNeutral = 0; i = 0; } DiscordBridge.CooldownNeutral += (60 / DiscordBridge.Factor); i++; } else { //reset counter whenever Sim speed warning threshold is not met meaning that sim speed has to stay below //the set threshold for a consecutive minuete to trigger warning i = 0; DiscordBridge.CooldownNeutral = 0; } } } }