Arcitectus / Sanderling

APIs and libraries to read information directly from the EVE Online game client.
https://forum.botlab.org
Apache License 2.0
258 stars 117 forks source link

is there any document for noob dev? #66

Closed ZBigFish closed 4 years ago

ZBigFish commented 4 years ago

hey im a noob programmer,and I am trying to understand the project . but im confused that I can't find the program entry to understanding how to implement the function LOL yes im so noob :) Then I found the program use lib called BotEngine and Botsharp,but i cant find any instructions.it seems to be used for InitializeComponent. Now I'm stuck in the how to by button events to gradually understand how to implement the operation of the autobot because i cant click the button in designer. I am profoundly grateful if you can answer my questions :)

Viir commented 4 years ago

We have several example bots which do button clicks, so we could copy the approach from there. A more popular example bot is this one:

https://github.com/Viir/bots/blob/master/guide/eve-online/how-to-automate-traveling-in-eve-online-using-a-warp-to-0-autopilot.md

Reading trough this bots code, it does the button click part here: https://github.com/Viir/bots/blob/7ea2cfeeb030a88d45d052cb088fafdda2ef2b1c/implement/applications/eve-online/eve-online-warp-to-0-autopilot/src/Bot.elm#L149-L151

Does this approach work for you?

ZBigFish commented 4 years ago

Well, thank you very much for the answer. These two days I find a bot project based on sanderling at github ,not complete, the author seems to just write a simple console memory read test,I find the function to read memory. then I find how to read memory through the Sample.Read project,still have problem but i think ill handle it.

then ill start to learn about bot,Wish me luck :)

BTW,Please forgive my poor English

Attach the project that i find: https://github.com/InternationalOrganization4CornMongering/sanderling-v8 And the screenshot of succeeded memory read: 2 1

Viir commented 4 years ago

And the screenshot of succeeded memory read:

Thank you, nice find!

I think documentation is sparse at the moment. Looks like there will be more coming in the next months. In the meantime, I answer questions as they come up. Answering questions has higher priority than writing documents.

ZBigFish commented 4 years ago

Thank you for your follow up on this issue In the understanding of MemoryReading in these days,i got some problem: i find 3 classes to store the UI tree :MemoryMeasurementParse MemoryMeasurement and MemoryMeasurementAcc which from Parse MemoryStruct and Acc(seems just ship HP there) the MMP class has more memory data than MM class (just shorthand:) for example:MMP has ManeuverType but MM doesnt. Now, I only found the way to use of MM,its hard to find other way to use MMP。

I write my own first autopilot bot will be completed, Of course, as I said I am still use MM to read memory :)Concrete is made of ship speed text. but I don't think this is an efficient and clear way.

THKS and Excuse

Viir commented 4 years ago

In the understanding of MemoryReading in these days,i got some problem: i find 3 classes to store the UI tree :MemoryMeasurementParse MemoryMeasurement and MemoryMeasurementAcc which from Parse MemoryStruct and Acc(seems just ship HP there) the MMP class has more memory data than MM class (just shorthand:) for example:MMP has ManeuverType but MM doesnt.

We have this guide explaining the differences between MemoryMeasurement, MemoryMeasurementParsed and MemoryMeasurementAccu: https://forum.botengine.org/t/sanderling-framework-differences-between-memorymeasurement-memorymeasurementparsed-and-memorymeasurementaccu/1256

Now, I only found the way to use of MM,its hard to find other way to use MMP。

That is fine, using the simple MemoryMeasurement is enough in this case. The others are only interesting for more advanced bots.

We also find this in the linked guide:

Of those three, you only need MemoryMeasurement to read information from the EVE Online client. The other ones (Parsed and Accu) are derived from MemoryMeasurement, without any additional information from the EVE Online client. The properties MemoryMeasurementParsed and MemoryMeasurementAccu are an accumulation of popular frequently used derivations of information available in MemoryMeasurement.

So what are the differences between Parsed and Accu?

MemoryMeasurementParsed

MemoryMeasurementParsed is completely derived from the last MemoryMeasurement and this derivation process is referred to as 'parsing', hence the appendix in the symbol. Typical work done in parsing is translating text to a number. An example of this is are distances shown in the overview window. A text like "11 km" is translated to 11000 meters, while a text of "11 m" is translated to 11 meters. The translation enables you to use these values in arithmetic operations such as checking if a distance is smaller then a given threshold.

MemoryMeasurementAccu

The MemoryMeasurementAccu is an accumulation of data from all MemoryMeasurement, not only the last one but also past ones. A good example of remembering information from the past is the tooltips shown when you hover your mouse cursor over a ship module. When the bot wants to know the maximal working distance of a module, it can look up this information in the tooltip. Since the tooltip is not always visible, we want to remember a tooltip which was displayed sometime in the past.

Viir commented 4 years ago

While implementing the support for 64-bit clients, I used the opportunity also to simplify this part of the framework: We now don't anymore have these three separate stages of memory reading processing. Instead, you can access everything through the ParsedUserInterface.