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:
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?
Percentile activation of armor/shield repairs. Say to trigger on 80% armor deactivate and the module when its reached it’s threshold.
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.
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 ?
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);
}
}
}
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:
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:
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.
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.
So you’re assigning type by entering them in bot.config. Cool. You might want to add Destroyer because they are less likely to scram and may be worth differentiating.
As a further idea… is the icon the same for all classes of ships ?
if so then we already have a classification in the overview…
this is purely conjecture I have no inside knowledge whether this holds true apart from my limited tests
Texture0Id?.Id I have been grouping on this and so far I get the same ID’s for battleships,cruisers,and frigates
I am assuming that Texture0ld?.Id is only unique with regards to icons
I have explored in overview and the Stargate Texture0ld?.Ids are equivalent
so It looks like we can classify ships by this… Now to code a classification routine using this info;