Questions about A-Bot from TheChosenOne

You are a champ! The programm does not thow any problems anymore when debugging but he does not finish the “last measurement” which is needed to start the bot. If there is something i can do to help you to solve this problem let me know!

If i get it right i can make a whole new region to click with something like

MouseClickWithRegionSubstituted(UIElement,
		RectInt.FromMinPointAndMaxPoint(
			new Vektor2DInt (111,222), new Vektor2DInt(333, 444)),
		BotEngine.Motor.MouseButtonIdEnum.Left);

Yes?
By the way, speed indication is not working. Could it be memory reading problem?
memoryMeasurement?.ShipUi?.SpeedMilli - always null even if
memoryMeasurement?.ShipUi?.SpeedLabel have text “3600 m/s” or any other numbers.
I can parse it by myself but i though if there is such parameter in memorymeasurement it should provide something :slight_smile:

Yes.

In this case, the solution is to switch your reading to use the parsed version of the memory measurement.

For the speed indication, this is MemoryMeasurementParsed?.Value?.ShipUi?.SpeedMilli.

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.