For more than 1 month i struggle with the bot, and i still have to learn many things, but i like to share with you my … experience. All of them are variants of what you find on this forum and i tested and re-tested ( lose ships, i died etc).
First of all you have to remember this is a bot, he read ( some) of data’s memory from game interface and you will use this to give some commands. So, if somebody , cloaked look at you he ( CCP) can ban you. Also CCP can look at some data ( i just imagine what: login/logout, activities, money balance etc and also one of them can look at you and measure your mouvements - i know that from other games); So keep in mind that, and avoid botting too much, make too many isk/day .
Also customise your bot: one day make an system with one char, another day , another system, another ship, , one day forbiden hub, another day haven, etc. Even in the same system, change your retreat bookmark from time to time. Personally I botting only with one char at time. sometime i let the drones aggresives, other time on passive, etc, and I keep an eye on him ( is on another computer, near me)
Second, try to use sanderling. he is updated, reworked, and also more reliable. is easier to change inside a script than recompile abot.
I always start to script in sanderling and after that i test in abot, because sanderling is more comprehensible for me ( I’m not an programmer/coder);
So… keep in mind , my code is not clean, ergonomic etc; but he is doing his job:
- anomaly enter: you don’t need another skip anomaly class, is enough to add this to your anomalyenter.cs:
static public bool IgnoreAnomaly(Interface.MemoryStruct.IListEntry scanResult) => scanResult?.CellValueFromColumnHeader("Name")?.RegexMatchSuccessIgnoreCase("asteroid|drone|forlorn|rally|sanctum|blood hub|serpentis hub|hidden|haven") ?? false;
static public bool ActuallyAnomaly(Interface.MemoryStruct.IListEntry scanResult) =>
scanResult?.CellValueFromColumnHeader("Distance")?.RegexMatchSuccessIgnoreCase("km") ?? false;
Sorry, i tried to change (“asteroid|drone|forlorn|rally|sanctum|blood hub|serpentis hub|hidden|haven”) with an string to use bot;conf, but It didn’t work; maybe a pro could help??
And once you get out from warp, this will work like a charm ( in 3 sec you are in another warp, with an vni):
if (null != scanActuallyAnomaly)
yield return scanActuallyAnomaly.ClickMenuEntryByRegexPattern(bot, "Ignore Result");
or before any warp using bool ignoreAnomaly
if (null != UndesiredAnomaly)
yield return UndesiredAnomaly.ClickMenuEntryByRegexPattern(bot, "Ignore Result");
So , In the end, you can let him ingore ALL undesired anomaly to have a clean window and later ignore only one with “km” and the new ones…also , ensure your probewindow is open will help you later when you have to ignore occupied anomaly, because you have to refresh the window :
if (probeScannerWindow == null)
yield return new BotTask //open windowprobes
{
Effects = new[] { MotionParamExtension.KeyboardPressCombined(new[]
{
VirtualKeyCode.LMENU, VirtualKeyCode.VK_P
}) }
};
- Next, i created a new task, who close the windows, dialogues etc ( remember to put this new task in bot.cs)
I will offfer you only telecomwindow, to close the window from forsaken hubs. you can develop and apply to any other window,( thx Viir, for helping me)
var WindowTelecom = memoryMeasurement?.WindowTelecom?.FirstOrDefault(w => (w?.Caption.RegexMatchSuccessIgnoreCase("Information") ?? false));
var CloseButton = WindowTelecom?.ButtonText?.FirstOrDefault(text => text.Text.RegexMatchSuccessIgnoreCase("Close"));
if (CloseButton != null)
yield return new BotTask { Effects = new[] { CloseButton.MouseClick(BotEngine.Motor.MouseButtonIdEnum.Left) } };
// and, here you can refresh the probes window, because you can stick that at warp state( yes the
if (ShipManeuverStatus == ShipManeuverTypeEnum.Warp)
yield return new BotTask
{
Effects = new[] { MotionParamExtension.KeyboardPressCombined(new[] {
VirtualKeyCode.LMENU, VirtualKeyCode.VK_P
}) }
};