After scouring the forums, it seems most advice is to start with an already developed Sanderling bot, and customize it bit by bit there.
However, I am more in this for the education experience, outside of just botting in my game of choice.
I’d like to bot in EVE!
First however, I want to emphasis that I am not looking for someone to write the code! I am, however, looking for general tips of how I can go about it. Specifically, the italicized lines below, as these are commands that would need to be frequently run, not just performed in a linear sequence, and I’m not sure how to go about that.
Hoping someone can lend some advice, on some operators/functions/ect I should consider!
The general algorithm I’m looking to start with would be pretty simple:
// Undock, activate all modules that can sustain in warp
(bot)
Scan system for combat sites - Scan Local for Non-friendlies
If non-friendly present, warp to safe BM, (wait X amount of time, then scan again) else continue
Select closest Foresaken Rally Point
Warp to Foresaken Rally Point @ 0km
Add signature to ignore list, in case blue is already on site, in prep for next site warp
If blue is present on overview, choose new site. Else, continue
Activate afterburner, armor rep
Launch Drones (5)
Select largest rat ship in overview, orbit @15km - If wreck is present on overview and currently orbiting ship, orbit wreck instead. - If no hostile rats in overview, then recall drones. Deactivate afterburner
restart loop
If you made it this far, cheers! Thanks for reading.
here I have something to say : any program run linear. but from time to time you say him: ok , now I wanna you check this again. he will check and get back at line. Anyway, there are stuffs you cannot solve them so easy.
having the guide from above, and taking into account you wanna do ratting, i suggest you use
this one
and you have a guide comprehensible ( i hope) made for my scripts:
so what you change on script?
Foresaken Rally Point from forsaken hub (line 44)
from “Within 30 km” to “Within 0 m” at line 34
Select largest rat ship in overview, orbit @15km largest or not, you orbit arround rats. but, if you want to have rats ordered by class, then you have to contact @pikacuq, he will offer you his solution and work
back on script
is already do that and the rest of your conditions.
more than that, it can use salvage drones or mtu.
and all the rest of changes you have my wiki guide
Confirm, that is a good way to go about it.
There is also another way to make development easier: You can not only reuse complete bots but also parts from other existing bots to improve your own.
In case you have not seen it yet, there is this new tool to quickly teast code snippets, specifically for EVE Online: A Simpler Way to Make EVE Online Bots
A general tip is: Before writing code, development starts with getting the information about what the bot should do.
Sure, functions for the bot parts you listed is below:
This can be done using the menu opened using the surroundings button, like here:
Selecting an object can be done by clicking on its row in the Overview window:
var overviewRow = Sanderling?.MemoryMeasurementParsed?.Value?.WindowOverview?.FirstOrDefault()?.ListView?.Entry?.FirstOrDefault();
Sanderling.MouseClickLeft(overviewRow);
You can do this by clicking on these modules in the ship UI:
These parts need someone with more EVE Online specific experience. Let me know in case we should expand on these.
Forsaken Rally point is an anomaly, is not visible on overview. You use Windowprobe, ( use the entire function takeanomaly so you can delete all other anomalies and to warp at any distance offered by menu)
marvel script ( is for ratting) have an interesting void to warp using shortcuts and overview and like an backup if the station is not on overview he warpslow:
scan local is about local chat, if there are chars flagged different:
bool IsNeutralOrEnemy(IChatParticipantEntry participantEntry) =>
!(participantEntry?.FlagIcon?.Any(flagIcon =>
new[] { "good standing", "excellent standing", "Pilot is in your (fleet|corporation|alliance)", "Pilot is an ally in one or more of your wars", }
.Any(goodStandingText =>
flagIcon?.HintText?.RegexMatchSuccessIgnoreCase(goodStandingText) ?? false)) ?? false);