EVE Online Anomaly Ratting Bot Release

I have not tested building A-Bot with Visual Studio Code or Atom.

For building from source code, use Visual Studio (Visual Studio is not Visual Studio Code) 2017.
For building from source code, the requirements stated in the Sanderling Readme also apply to A-Bot. You can find them at GitHub - Arcitectus/Sanderling: APIs and libraries to read information directly from the EVE Online game client. and GitHub - Arcitectus/Sanderling: APIs and libraries to read information directly from the EVE Online game client.

7 posts were split to a new topic: Fuzzy building A-Bot

Anyone willing to share a upgraded version ?

Hi @ivar85 ,

Here are my two modified files to make it orbit made with code from @Terpla and @Viir helped me build in this thread: Modifying A-Bot
The modified lines in combat.cs are from 34 to 50, and you especially need to edit what it looks for to orbit on. Remove the .txt part.
Menu.cs.txt (3.4 KB)
Combat.cs.txt (4.9 KB)

I’m wondering if anyone can help with adding two things:

  1. Player detection on an anomaly basically to see if it’s been claimed as of right now when it lands on an anomaly someone is working on, it will continue to fight the same site.
    After landing it first would need a check to see if any other players are on overview, if it detects another player it then skips everything else and warps straight off to the next site. Anyone have any idea how to implement this?

  2. Percentile activation of armor/shield repairs. Say to trigger on 80% armor deactivate and the module when its reached it’s threshold.

1 Like

Anyone willing to share how much you can get in isk per hour ?
And do you use it in high or null ?

Hi how I told here: A-Bot for Capitals and Motherships

Im trying to configure A-Bot to work with captials and mothership.

But I found an possible “API error”.

The “Probe Scanner Window” is not under " WindowProbeScanner but we find it under "WindowOther.

Into the AnomalyEnter.cs we found this:

var probeScannerWindow = memoryMeasurement?.WindowProbeScanner?.FirstOrDefault();

but this not work because the measurement of WindowProbeScanner is empty…

it’s possible fix that?


To make more understable the issue and my question I report this screen:

How you can see the Window of probe scanner is indexed under the structure “WindowOther” and not into the “WindowProbeScanner” this make the probeScannerWindow and the relative result null.

I think this is done by the new version of “Probe Scanner Window” of eve, but Idk how I can fix this.

So… @Viir can you help me or just fix the index so I can continue to work to make A-Bot compatible with Carriers and Motherships?


Problem Fixed, the issue was on my window configuration on the client, the probe scanner window have to be alone and not grouped.

But now I have another problem… now the code get correctly the list of anomaly, but he do not go to the anomaly, he stay in stuck with this operations:

3 leaves 2 s ago at 02:20:15

(BotTask->EnableInfoPanelCurrentSystem)
Effect(BotTask->BotTask)
(BotTask->UndockTask)

Congratulations on the work you’ve done …
could you help me use your version? I do not know how to compile the files nor how to turn into an executable .exe

This message looks like it is trying to enable the info panel for the current system. This info panel is needed for the bot to operate.
Maybe detection of that info panel depends on localization, so if this info panel is already visible in the client, next try to switch the eve online client to english language.

Hi @raphael.mca
Well I was in your shoes not long ago, luckily there are several helpful people here to assist.
@Viir helped me through the process and you can see how do get setup here: Building A-Bot

Read through my comments in this thread first to see that you need to get visual studio setup first.

@ivar85
You should be able to use them in both, but its not a complete botting solution at the moment.
It will go to any site even though there is someone there along with not orbiting out of the box (I got help setting that up as you can see in this thread though), won’t activate armor/shield repairs on it’s own and probably more things other paid for solution can provide.
But this framework has the potential to be much better if someone knows how to code in the missing functions.

1 Like

@Viir

Im trying to click on the fightersSquadron “LaunchAllButton”

In Combat.cs I added:

var fightersSquadron = memoryMeasurement?.ShipUi.SquadronsUI;

			var Launch_Figthers = fightersSquadron?.LaunchAllButton;

			yield return Launch_Figthers?.MouseClick(BotEngine.Motor.MouseButtonIdEnum.Left);

I tryied more time in different way to wrap the Motion to Bot.cs then delcare Motion into the BotTask.cs

But nothing I get always this error:

“Cannot implicitly convert type ‘Sanderling.Motor.MotionParam’ to ‘Sanderling.ABot.Bot.IBotTask’. An explicit conversion exists (are you missing a cast?)”

Can you show me the code to make mouseClick usable into the Combat.cs ?

Is it possible to get this bot to loot and salvage ?

I guess, you should create new task for this. Something like this (not tested):

    public class LaunchFigthers: IBotTask
	{
		public Bot bot;

		public IEnumerable<IBotTask> Component => null;

		public IEnumerable<MotionParam> Effects
		{
			get
			{
                var launchFigthers = bot?.MemoryMeasurement?.ShipUi.SquadronsUI?.LaunchAllButton;
				if (launchFigthers==null)
					yield break;

				yield return launchFigthers?.MouseClick(BotEngine.Motor.MouseButtonIdEnum.Left);
			}
		}
		
	}
1 Like

Already done, after some coffe and cigarettes ahahah :smiley:

I was studying the priority order of targhets.

I saw A-Bot go to order by ewar and then by distance, I want to do the same but between the ewar and the distance I want specificy the ship type order, like:

  1. Frigates
  2. Cruiser
  3. BS
  4. Others

this is the function to sort the primary:

var listOverviewEntryToAttack =
				memoryMeasurement?.WindowOverview?.FirstOrDefault()?.ListView?.Entry?.Where(entry => entry?.MainIcon?.Color?.IsRed() ?? false)
				?.OrderBy(entry => bot.AttackPriorityIndex(entry))
				?.ThenBy(entry => entry?.DistanceMax ?? int.MaxValue)
				?.ToArray();

but I not find how modify it.

The order I want apply is:

First: Ships With Ewar
Second: By ShipType → (from the smallest to the biggest)
Third: By Distance

Can you help me? @Viir @Terpla :smiley:

I have only one idea: read hinttext from overview and sort by it:

As far as I know, hinttext is not yet available, but Viir is working on it.

@Terpla @Viir

I studied more the “priority” stuff, and I finded another logical way to do it right now, but I need help.

This is the way:

A-Bot retrieve the “Type” column and this is indicixed into array per each entry, the Type of NPC are always the same per class, this mean it’s possible create an array per each type like:

“Blood Raiders Frigate”
“Blood Raiders Destroyers” etc

and after order it like with the distance.

I can export easy and fast the full npc ship’s type per each race, but I need a little bit of help on build the function.

1 Like

Abbadon and I use the different icons as well to differentiate between NPC types, so the hintText would be great, since that allows bots to prioritize targets by type regardless of the rat names.

On this note: is there a reason why the icon is not present in the Overview? I couldn’t find it, and it contains a lot of information (type, whether it’s locked, whether it’s yellow/red-boxed you, etc.). If anyone knows where to find this info, it would be a great benefit.

About priority targhet, I found a logical solution, me and another dev are already on working on it, stay tuned lol

1 Like

I wrote a function for sorting and a small example for a console application.

using System;
using System.Collections.Generic;
using System.Linq;

namespace SortedList
{
    class Program
    {
        public class OverviewEntry
        {
            public int RowNumber { get; set; }
            public string TypeColumn { get; set; }
            public int SortedPriorityForTest { get; set; }
        }

        static string[] configListOfTargets = {
             "F","C","BC","BS"
        };

        static void Main(string[] args)
        {
            var overview = new OverviewEntry[7]
            {
                new OverviewEntry { RowNumber = 8, TypeColumn = "BS", SortedPriorityForTest = 3},
                new OverviewEntry { RowNumber = 6, TypeColumn = "F" , SortedPriorityForTest = 0},
                new OverviewEntry { RowNumber = 5, TypeColumn = "BS", SortedPriorityForTest = 3 },
                new OverviewEntry { RowNumber = 9, TypeColumn = "C", SortedPriorityForTest = 1 },
                new OverviewEntry { RowNumber = 3, TypeColumn = "BC", SortedPriorityForTest = 2 },
                new OverviewEntry { RowNumber = 2, TypeColumn = "F", SortedPriorityForTest = 0 },
                new OverviewEntry { RowNumber = 1, TypeColumn = "C", SortedPriorityForTest = 1 }
                };

            var result = SortByOrder(configListOfTargets, overview, x => x.TypeColumn);

            foreach (var s in result)
            {
                Console.WriteLine(s.SortedPriorityForTest+". row: "+ s.RowNumber + " -  " + s.TypeColumn);
            }

            Console.ReadLine();
        }

        private static IEnumerable<TO> SortByOrder<T, TO>(T[] order, IEnumerable<TO> objects, Func<TO, T> getter)
        {
            var ordering = order.Select((x, i) => new { Class = x, Order = i }).ToDictionary(_ => _.Class, _ => _.Order);

            return objects.OrderBy(x => ordering[getter(x)]);
        }
    }
}

configListOfTargets - array of strings with rats name. You can add new parameter for bot.config like SetAnomalyEnabledNamePattern. In this example it’s mean ship type “F”- frigate, “C” - cruiser etc.