Questions about A-Bot from TheChosenOne

If you are running this with the Visual Studio debugger attached, you could show the content of the Visual Studio output window here.
Maybe the debug output contains a hint about what causes the problem on your system.

This is what i get in the debugger.
It basically says PDB-Data not found or could not be opened.
Anyhow i dont think thats the problem. Ive send u a textfile with the complete output to your email. Ive looked though it but to me it doesnt seem to show any errors.

@Anonymous0012
The thread at No Green Checkmark - #3 by TheChosenOne seems to be better targeted for the problem you describe. I suggest you share your environment there to compare it to the working setup.

Hello, Viir, I tried to install VS Code and compile your posted solution, but that didn’t work…

can you upload the exe file ?:slight_smile:

Ty in advance

The exe file:

1 Like

@Viir Hey mate, i need a small help again

How to force measurement invalidation in the body of any Task in Sanderling.ABot?
I was looking at Sanderling.InvalidateMeasurement() like here but seems like its not working that way anymore.
Any tips?
Thanks.

I am doing some investigation regarding your question:
I look at the A-Bot code to follow the propagation of the memory measurement backwards to see where the decision is made to take a new one. The assignment of the memory measurement the bot is using should happen at A-Bot/src/Sanderling.ABot.Exe/App.Sanderling.Interface.cs at 1e4a2ac0a9f9a2b1ec32d6b8b1f527a6bec42b3c · botengine-de/A-Bot · GitHub

The most promising approach I see is to use MeasurementTakeNewRequest instead of MeasurementTake to ensure I get a new memory measurement.

@Viir Hey mate, is it possible to add to MemoryReading ability to parse icon from overview? Like NPC frigate/cruiser / wreck / container and etc? Now i see only SpriteID and indicators like targeted by me.
Also it will be awesome if its possible to parse OnTarget assigned effects like StasisWeb, Neutralizer, Salvager, Tractor and etc Now its possible only get IconTextureId from Target[0].Assigned[0].IconTexture.Id
So my question is how real is it?

I found that its possible to get HintText from raw, but its always null in target child (WindowOverview[0].ListView.Entry[0].Sprite.HintText) and shown only as memoryMeasurement?.Tooltip don’t know if it will help you to implement this.

I don’t know. I guess It is very likely possible to find more information about that icon too. I am taking a look in an overview entry and see it contains a sprite. Maybe that represents that icon. I would start by taking a closer look at the Sprite in the overview entry. Maybe it contains properties in memory which allow distinguishing between the ship types.

I don’t understand this question. How can I measure how real it is?

For the case of effects assigned to targets, I would start with looking at a memory measurement from a timespan with such effects to identify UI elements which are closest in the tree structure. Then you can look at the python objects properties to see what is under that branch of the tree.

I mean when you activate something on target its displayed as icon like salvager or disruptor and its possible to identify it by Id. If you activate 4 salvagers on target all Target.Assigned.IconTexture.Id will have same value but the problem is when you restart EVE that id will change and will not be same as in previous run. And the question if its possible to get from memorymeasurement also.

In the current implementation of the memory measurement this effect is not read. Reading this would need a change in the implementation.

How hard is it to add? And how possible you will have time to make it in future?

So far, I don’t know. But if we have a process sample for that, I can take a quick look.

At the moment, I do not have a plan for this which extends that far out into the future.

I can make a sample with salvagers assigned on target really quick.

@Viir I found that ShipUi.Module[*].ModuleButtonIconTexture.Id is same as Target.Assigned.IconTexture.Id so its possible to identify which module is activated on target but in super uncomfortable way.
At bot start he is looking at all modules and saving Tooltip text to identify which modules are weapons, which shieldboosters and etc so it possible to do the same with ModuleButtonIconTexture.Id. Saving IDs with Tooltip text will help to associate which id belongs to weapon, which to warp disruptor and etc. Since you cant assign on target any other modules than you have displayed that should work.

Don’t know if it will help just thinking out loud.

1 Like

Nice! :+1:
Expanding the Accumulation code to store the ModuleButtonIconTexture.Id in the same scope as the Tooltip seems simple. So far, the bots I remember do depend on looking at the module tooltips anyway, so it seems that the logic for bringing up the tooltip is already covered.

I do not understand why you write super uncomfortable way. Seems like you know something I do not know.

Unfortunately it’s contrariwise. I’m still not as good at C# as i want so i just don’t know how to expand accumulation code to store Ids along with tooltip text. Im working on this but now i just compare id on target with all modules i have to identify which effect assigned as temporary solution.

I take a look at how this can be done. Since the ID is already included in the memory measurement, it seems this task is small enough to fit soon.

I am looking into the API Explorer. It looks like this is already implemented.

To use this, get the module from the collection in MemoryMeasurementAccu?.Value?.ShipUiModule

From the module there, follow the path RepresentedInstant?.ModuleButtonIconTexture?.Id to get the ID which appears to be the same as the ModuleButtonIconTexture?.Id from the module object under MemoryMeasurement?.Value?.ShipUi?.Module.

At the same time, the module object from MemoryMeasurementAccu?.Value?.ShipUiModule also has a reference to the tooltip using the path TooltipLast?.Value.

So now you can access both texture ID and tooltip in a comfortable way.