Thx for clarification and this site. Now .config file works fine.
- 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.
I reset overview before test it.
Thx for clarification and this site. Now .config file works fine.
- 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.
So I came to the conclusion that the error lies here.
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:
TitleElementText
smarter in some way (considering width?, compare text length with other labels?)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?
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
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.
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"
]
}
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 ?
You could expand to three effect tasks:
I would try the following implementation:
var lockTargetKeyCode = VirtualKeyCode.LCONTROL;
yield return new BotTask
{
Effects = new[]
{
MotionParamExtension.KeyDown(lockTargetKeyCode),
overviewEntryLockTarget.MouseClick(MouseButtonIdEnum.Right),
MotionParamExtension.KeyUp(lockTargetKeyCode)
}
};