EVE Online Anomaly Ratting Bot Release

  1. Are there universal rules for this config file? Perhaps you could provide an example for illustration.

I will try different variations in the evening and report the results.

No need to try different variations. One universal rule is that the configuration has to be a valid JSON string. So I googled for “json validator” and found the one at http://jsonlint.com/ which gives a nicer explanation of what would be expected at the stated location in the string:

Error: Parse error on line 2:
...ookmark": "HOME"		"ModuleActivePermane...
---------------------^
Expecting 'EOF', '}', ':', ',', ']', got 'STRING'

Adding a comma at the location was enough to make it pass as JSON.

  1. I think add parsing code will not be difficult, because all the modules are in the word “Afterburner” title

Thank you for the research. I think at the moment there is no code to identify a title. Using the upmost label in the tooltip as the title might not work because the one containing the keyboard shortcut could be closer to the top. Not sure yet how I will choose the set of labels to test.

Thx for clarification and this site. Now .config file works fine.

  1. I found new bug. Bot retreat when see pilot from my alliance. Blue icon in this image.

I reset overview before test it.

Thx for clarification and this site. Now .config file works fine.

  1. I found new bug. Bot retreat when see pilot from my alliance. Blue icon in this image.

I reset overview before test it.

Thanks for the report. The bot uses the hint text on the Icon to decide whether the chat participant should be classified as neutral or enemy. The hint text is the text which appears when you hover your mouse over. So to adjust the bot we need to know the hint text for this case.

The classification for an individual entry in the list of chat participants is encoded at https://github.com/botengine-de/A-Bot/blob/e5ebb1d1b27e4104a224f72e06026009e2fe7064/src/Sanderling.ABot/Parse/ParseExtension.cs#L35-L38

I implemented the parsing improvements: https://github.com/Arcitectus/Sanderling/commit/2f9ca56b158f491d2c4621f14aff9ed8c92f4381

I implemented the parsing improvements: https://github.com/Arcitectus/Sanderling/commit/2f9ca56b158f491d2c4621f14aff9ed8c92f4381

As i understand bot will be activate only modules with classification, such as “Hardeners” or “Afterburners”.

Is it possible to add this feachure for “Tracking computes” and “Omnidirectional tracking link”?

@Terpla you can add modules to keep activated using the ModuleActivePermanentSetTitlePattern property in the configuration. It takes a JSON array of strings. Each string is used as a regular epression pattern to test the modules title with. If any of the pattern matches, the module is activated.

Try this as configuration:

{ "ModuleActivePermanentSetTitlePattern": ["Tracking"]}

Its not working. =(
My С# skills are not enough to understand this: https://github.com/botengine-de/A-Bot/blob/master/src/Sanderling.ABot/Bot/BotExtension.cs#L49-L56
but as i understand it is two conditions: IsHardener OR “Title of module contains this string”.
When your variant was not worked i try next config:

{
"RetreatBookmark" : "Home",
"ModuleActivePermanentSetTitlePattern": ["Networked Sensor Array",
"Capital Armor Repairer I"]
}

Its not working too, but all this modules fited and bot see it.


and:
When I replaced the "IsHardener " to “IsArmorRepairer” then bot activate “Capital Armor Repairer I”.

So I came to the conclusion that the error lies here.

1 Like

Yes, you are right, your configuration seems OK from what I can see.

Yes, that was the intention how it should work.

The second screenshot you posted gives a hint of what could be the problem:
In there, I see that there are three labels in the LabelText property. The TitleElementText method should pick the one which represents the title, but seeing this, I am not sure if it works correctly in your case. As you can see at https://github.com/botengine-de/A-Bot/blob/e5ebb1d1b27e4104a224f72e06026009e2fe7064/src/Sanderling.ABot/Bot/BotExtension.cs#L47, it picks one of the labels which have their center not lower than any other label in this collection.
Maybe in your case there is a label which is not below the title label. If that is the bug, two possible resolutions come to mind:

  • We could make the TitleElementText smarter in some way (considering width?, compare text length with other labels?)
  • We could stop depending on the title and instead introduce another config setting ModuleActivePermanentSetLabelPattern to be compared with all labels in the module tooltip.

I guess with “here” you mean the whole method and everything that is called from there? In this case I understand.

Yes, whole method.

If TitleElementText should get module label, its seems not working. Instead it gets hot key:

PS: i dont undestand why picture so bad resolution

ok PNG much better

I now changed the TitleElementText method to only consider those labels which intersect with the horizontal center of the tooltip. You can see the implementation at https://github.com/botengine-de/A-Bot/commit/a10d626c21a102431b874f2e86fa74e3a661172f

Does this work for you?

1 Like

Yes, now it work fine. Thx for quick fix.

I want to clarify the logic and the difference between Component and Motion
As i understand Motion is something simple and final action. This should not take long time because the locale is not checked.
Component is more complicated and often it contains subtasks.
Soo if my Component logic needs something simple as mousclick or expand menu I should return new subtask with this simple Motion.
This is the right solution, or I missed something?

PS: can you cancel reply limits, because i cant post anymore and must wait 3 hours :cry:

The “Motion” parts describe what effects should be applied to the eve online client. Seeing this, I am inclined to use the label “Effect” instead of “Motion” for these symbols in the future.

I don’t know what you are comparing to here.

No idea what locale checking means and how it would effect duration. Do you mean client localization settings?

Reading this, I am not sure what Component you are writing about. I open up the source code and search for “Component”. So, a task has components. This relation is used to decompose the root task (“make ISK” or something like that) into simpler tasks. This decomposition forms a tree, and its leaf nodes are stuff that is simple enough to be sent to the eve online client as an effect/motion or to the user (diagnostic messages).
This task tree is built up for each bot step as the decomposition of a given task can depend on the input from the sensor.

Yes, I think it can work this way. I do not see a problem with this approach.
In addition to that, every task that needs more effects for completion than can be modeled on a single instance of MotionParam should be decomposed into multiple tasks.

The article “the” reads like there is only this one, but I don’t see why there shouldn’t be others.

I assigned you the next trust level, thus you should now be able to write more posts without this limit.

I’m obviously doing something wrong, i keep getting the following error :

3 s ago at 6:48:43 PM
---- Exception ----
System.ArgumentNullException: Value cannot be null.
Parameter name: pattern
   at System.Text.RegularExpressions.Regex..ctor(String pattern, RegexOptions options, TimeSpan matchTimeout, Boolean useCache)
   at System.Text.RegularExpressions.Regex.Match(String input, String pattern, RegexOptions options)
   at BotEngine.Common.RegexExtension.RegexMatchSuccess(String input, String regexPattern, RegexOptions regexOptions)
   at BotEngine.Common.RegexExtension.RegexMatchSuccessIgnoreCase(String input, String regexPattern, RegexOptions regexOptions)
   at Sanderling.ABot.Bot.Task.MenuPathTask.<>c__DisplayClass7_2.<get_Motion>b__1(IMenuEntry c) in C:\Users\John\Source\Repos\A-Bot\src\Sanderling.ABot\Bot\Task\Menu.cs:line 81
   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
   at Sanderling.ABot.Bot.Task.MenuPathTask.<>c__DisplayClass7_1.<get_Motion>b__0(String priorityEntryRegexPattern) in C:\Users\John\Source\Repos\A-Bot\src\Sanderling.ABot\Bot\Task\Menu.cs:line 80
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
   at Sanderling.ABot.Bot.Task.MenuPathTask.get_Motion() in C:\Users\John\Source\Repos\A-Bot\src\Sanderling.ABot\Bot\Task\Menu.cs:line 77
   at Sanderling.ABot.Bot.BotExtension.ShouldBeIncludedInStepOutput(IBotTask task) in C:\Users\John\Source\Repos\A-Bot\src\Sanderling.ABot\Bot\BotExtension.cs:line 35
   at Sanderling.ABot.Bot.Bot.<>c.<StepOutputListTaskPath>b__25_1(IBotTask[] taskPath) in C:\Users\John\Source\Repos\A-Bot\src\Sanderling.ABot\Bot\Bot.cs:line 54
   at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
   at Sanderling.ABot.EnumerableExtension.<EnumerateSubsequencesStartingWithFirstElement>d__0`1.MoveNext() in C:\Users\John\Source\Repos\A-Bot\src\Sanderling.ABot\EnumerableExtension.cs:line 12
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
   at System.Linq.OrderedEnumerable`1.<GetEnumerator>d__1.MoveNext()
   at System.Linq.Enumerable.LastOrDefault[TSource](IEnumerable`1 source)
   at Sanderling.ABot.Bot.BotExtension.TakeSubsequenceWhileUnwantedInferenceRuledOut(IEnumerable`1 listTaskPath) in C:\Users\John\Source\Repos\A-Bot\src\Sanderling.ABot\Bot\BotExtension.cs:line 41
   at Sanderling.ABot.Bot.Bot.StepOutputListTaskPath() in C:\Users\John\Source\Repos\A-Bot\src\Sanderling.ABot\Bot\Bot.cs:line 52
   at Sanderling.ABot.Bot.Bot.Step(BotStepInput input) in C:\Users\John\Source\Repos\A-Bot\src\Sanderling.ABot\Bot\Bot.cs:line 97

I didn’t think I had to create a config, is that nolonger true ?

Edit :

It is nolonger true that you can run without a config file.
If anyone else comes accross this, you will need to create the file “bot.config” containing atleast

{
    "RetreatBookmark" : "SAFE"
}

Where “SAFE” is the name of a bookmark in your current system that you can dock at. The code currently appears to look specifically for the ability to dock, which means warping to a POS won’t work out of the box.

1 Like

You have tested this version?
When I used the bot was warp to POS too.

To be honest, I only checked in the source that was currently on github, and only quickly at that.

Thanks for the info mittens, I will see if I can repro this issue here.

I want to add a afterburner and shield booster to my config to permanently run…

my current config looks like this … how do i add shield booster and sensor booster to always activated modules ?

{
“RetreatBookmark” : “XI - XX XXXXXXXX”,

“ModuleActivePermanentSetTitlePattern” : “Sensor Booster II, Shield Booster II”
}
this is what i would like to add but it fails. My hardners always are activated by the bot. I noticed earlier today it didnt even try to boost my shield it just wanted to warp to my ss BM

Today is my first time trying A.Bot… I like it. But its tough not knowing how to make the config file.

Read this topic again:

and try this:

{
"RetreatBookmark" : "XI - XX XXXXXXXX",
"ModuleActivePermanentSetTitlePattern": [
   "Sensor Booster II",
   "Shield Booster II"
   ]
}
1 Like

TY very much… That works Perfectly… I was looking at the target commands in the source code i plan to try and change it to Ctrl + right click to be much more efficent and more human like. Any pointers ?