I recently started to work on an anomaly ratting bot. This bot uses weapon modules and drones to kill rats in anomalies. It automatically warps to the combat sites displayed in the probe scanner. It also monitors local to save your ship when a neutral or hostile appears.
As usual, this bot automatically detects your fitting and needs zero setup to get started.
It is now in a state where it can be used and I will continue to add features and improve performance.
Ill give it a try in a little bit here. I noticed you say it scans the fit and judges accordingly. I use a 100MN AB VNI fit. WIll it orbit something upon warp in to negate damage?
Can we have the documentation about local settings? for example to default I have my local with the option “show compact member list” and the standings brackets on (So in local I see only the name of char and the icon standing neutral/orange/red/corp member/alliance member/fleet member) with this options the A-Bot is able to indentify the neutrals/enemy?
Can we have the documentation about local settings? for example to default I have my local with the option “show compact member list” and the standings brackets on (So in local I see only the name of char and the icon standing neutral/orange/red/corp member/alliance member/fleet member) with this options the A-Bot is able to indentify the neutrals/enemy?
I must not be as good as I thought I was with C# because by reading the code I have a hard time figuring the way it works. When I understand it, I will try to make it work with carriers too. As well as emergency jumping if hostile lands on grid.I will probably have some questions but more about your C# code than the API. Basically warp at 30. Align safe at 80% speed. Deploy fighters, kill frigs first. Pulse fighter mwd on first attack and when recalling. Pulse the special attack on the battleships. Possibility of dropping mtus / bookmarking them.I’ll see how much time I can put into this and how hard it is. I know the API has everything needed.
overall, the bot works in steps: Each step the bot receives a measurement and emits a list of movements to execute.
To determine the action to be taken in a step, the code expands the task tree. A task can expand to a list of subtasks or can expand to a motion(action) to be executed. Expansion of a task to subtasks can depend on the sensor data or the bots memory. A simple example for this is the EnableInfoPanelCurrentSystem task: If the info panel is already expanded in the memory measurement, the task does nothing, otherwise it returns a motion to mouseclick on the expander button.
At the moment, only the first (depth first order) motion found in this tree is returned as the action to be taken for the current step.
How should emergency jumping work? Is this meant to use a Micro Jump Drive to increase the distance between the own ship and the new hostile?
Emergency jumping as in jumping to a cyno beacon in range. Would only be used if hostile comes on grid before you enter warp. Could be configured to use it or not since not all systems have cynobeacons in range.
I have a question concerning a part of the code in Bot.cs :
From what I can understand, you’re creating a list of task (listTaskPath), but then you only add one element to it. Why make a list ? And later in there, you read that list using a foreach, even though it can only have 1 element in it.
From what I can understand, you’re creating a list of task (listTaskPath), but then you only add one element to it. Why make a list ? And later in there, you read that list using a foreach, even though it can only have 1 element in it.
Unless I am missing something ?
Thanks for reviewing this part.
The list/single element mismatch is because the code which processes the list of output tasks has been added before the code which builds the list. The code which decides if another task from the tree can be added to the list is not implemented yet.
A list is used because there can be multiple elements in one step, for example actions for activating multiple ship modules in one botstep.
Only taking the fist matching task was used as the simplest way of making sure that there will be no undesirable effects by a combination of taks in one botstep.
If you let me make a suggestion, I don’t think making multiple actions in one botstep is a good idea. It would make it faster and more efficient but less safe.
One action per botstep also means one local check per action. If you decide to activate 8 modules before checking local again, that is a pretty big loss in reaction time.
I really think safety must be number one priority, over clearing speed and what not.
Now I could be wrong but if I understand what I read so far correctly, the bot is checking for safety before action action he does, and that is what it should keep doing. Please correct me if I’m wrong.
If you let me make a suggestion, I don’t think making multiple actions in one botstep is a good idea. It would make it faster and more efficient but less safe.
One action per botstep also means one local check per action. If you decide to activate 8 modules before checking local again, that is a pretty big loss in reaction time.
I really think safety must be number one priority, over clearing speed and what not.
Now I could be wrong but if I understand what I read so far correctly, the bot is checking for safety before action action he does, and that is what it should keep doing. Please correct me if I’m wrong.
Yes, the bot checks for safety every step. From what I learned from developing and supporting a mission running bot, at least some users want to have the bot activate multiple modules per step. My suggestion is to make it an option to be controlled by the configuration file. This way the user can make the choice without compiling.
Another option for configuration file: select names of anomalies.
For Drone Lands I need “Drone Horde” and “Drone Patrol”
Now I’ve changed
static public bool AnomalySuitableGeneral(Interface.MemoryStruct.IListEntry scanResult) =>
  scanResult?.CellValueFromColumnHeader(“Group”)?.RegexMatchSuccessIgnoreCase(“combat”) ?? false;
to:
static public bool AnomalySuitableGeneral(Interface.MemoryStruct.IListEntry scanResult) =>
  scanResult?.CellValueFromColumnHeader(“Name”)?.RegexMatchSuccessIgnoreCase(“horde”) ?? false;
Hello, im trying to test the bot, but when i start it , it is just clicking on the sun icon in the top left corner and nothing else … What i am doing wrong ?
@thesaltonsea: this button should enable the current system info panel. The bot clicks there when it does not see this info panel. This task has priority over entering anomalies because the info panel is used to navigate to bookmarks.
Can you see the Current System Info Panels Object in the APIÂ Explorer of the Sanderling executable?
Maybe localization affects the visibility, therefore I suggest you try to set the UI language to english.