From 5720c773b4d13be2139056897040e366d4057108 Mon Sep 17 00:00:00 2001 From: Madpeterz <57852827+Madpeterz@users.noreply.github.com> Date: Wed, 24 Mar 2021 02:21:48 +0000 Subject: [PATCH] Update BetterAtHome.cs teachs the bot to avoid a sim thats restarting --- BetterSecondbot/BetterAtHome/BetterAtHome.cs | 72 +++++++++++++++++--- 1 file changed, 63 insertions(+), 9 deletions(-) diff --git a/BetterSecondbot/BetterAtHome/BetterAtHome.cs b/BetterSecondbot/BetterAtHome/BetterAtHome.cs index 12f3119..3de1e1d 100644 --- a/BetterSecondbot/BetterAtHome/BetterAtHome.cs +++ b/BetterSecondbot/BetterAtHome/BetterAtHome.cs @@ -191,6 +191,7 @@ namespace BetterSecondbot.BetterAtHome protected void StatusPing(object o, StatusMessageEvent e) { + CleanAvoidSimList(); if (hasBasicBot() == false) { return; // no bot (cant do anything) @@ -221,12 +222,50 @@ namespace BetterSecondbot.BetterAtHome protected void AlertMessage(object o, AlertMessageEventArgs e) { - if(e.Message.Contains("Restart") == true) + if(e.Message.Contains("restart") == true) { - gotoNextHomeRegion(true); + AvoidSim(); } } + protected void CleanAvoidSimList() + { + List clear = new List(); + foreach(string A in AvoidSimList.Keys) + { + long dif = helpers.UnixTimeNow() - AvoidSimList[A]; + if(dif > 240) + { + clear.Add(A); + } + } + foreach(string A in clear) + { + AvoidSimList.Remove(A); + } + } + + protected bool SimInAvoid() + { + return AvoidSimList.ContainsKey(simname); + } + + protected bool IsInAvoidList(string slurl) + { + string[] bits = helpers.ParseSLurl(slurl); + return AvoidSimList.ContainsKey(bits[0]); + } + + Dictionary AvoidSimList = new Dictionary(); + protected void AvoidSim() + { + if(AvoidSimList.ContainsKey(simname) == false) + { + AvoidSimList.Add(simname, 1); + } + AvoidSimList[simname] = helpers.UnixTimeNow(); + } + protected void LoggedOutActions() { SetBetterAtHomeAction("Logged Out Actions"); @@ -320,16 +359,22 @@ namespace BetterSecondbot.BetterAtHome return; } void_counter = 0; + if (SimInAvoid() == true) + { + SetBetterAtHomeAction("Attempting to avoid this sim"); + gotoNextHomeRegion(true); + return; + } + if (controler.Bot.TeleportStatus() == true) + { + SetBetterAtHomeAction("Teleported"); + return; + } if (homeRegions.Count == 0) { SetBetterAtHomeAction("No home regions"); return; } - if(controler.Bot.TeleportStatus() == true) - { - SetBetterAtHomeAction("Teleported"); - return; - } if (IsAtHome() == true) { SetBetterAtHomeAction("AtHome"); @@ -353,12 +398,21 @@ namespace BetterSecondbot.BetterAtHome SetBetterAtHomeAction("Attempted all home regions restarting list"); homeregionIndexer = -1; LastTeleportEvent = helpers.UnixTimeNow(); - if(force == true) + if (force == true) { gotoNextHomeRegion(false); } return; } + if(IsInAvoidList(configfile.Basic_HomeRegions[homeregionIndexer]) == true) + { + if (force == true) + { + gotoNextHomeRegion(false); + } + return; + } + SetBetterAtHomeAction("Teleporting to home region: " + homeRegions[homeregionIndexer] + ""); LastTeleportEvent = helpers.UnixTimeNow(); controler.Bot.TeleportWithSLurl(configfile.Basic_HomeRegions[homeregionIndexer]); @@ -366,7 +420,7 @@ namespace BetterSecondbot.BetterAtHome protected bool IsAtHome() { - if((simname == "") || (FiredAfterLogin == false)) + if ((simname == "") || (FiredAfterLogin == false)) { if (controler.Bot.GetClient.Network.CurrentSim == null) {