Code Monkey home page Code Monkey logo

bots's Introduction

What is more interesting than playing video games? - Programming bots to play video games!

Guides

Example Bots

Wondering what outcome you can expect from following the guides? Below is a list of example bots. You can test them for free:

Related Guides

Experimental Tools and Guides

bots's People

Contributors

arma2braw avatar cameronurnes avatar fastre avatar focabr avatar jimburtoft avatar viir avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bots's Issues

Mining Bot Suggestions

Mining bot works great but I have three suggestions...

  1. One asteroid per mining module (perhaps with app settings to allow for when there are more modules available than lockable targets due to skill limitations).

  2. Use of mining drones, specifically on a target not currently being used by an active module (or in place of having no mining modules at all).

  3. When an asteroid is depleted, deactivate the module that was originally locked on to it, so it doesn't go through another cycle before becoming inactive (a frequent occurrence). Especially important for strip miners with a long cycle duration.

So for example, with two mining modules and x mining drones, I would be mining from three asteroids concurrently. Alternatively, with only x drones and 0 modules, I would be mining from only one asteroid.

Bot Freezes when MouseOver locks the Overview with Depleted Asteroid

image

I would like to suggest the mouse moves to a "home spot" away from the Overview window after the bot detects that there is no longer a target. This will move the mouse off the Overview and avoid it trying to retarget an asteroid that no longer exists (and is no longer targetable)

As a side note, after an asteroid no longer exists, all miners should be powered down. This will avoid the wasted time and cycle. This moving of the mouse can also serve as the Overview reset/unlocking needed in the paragraph before this one.

To summarize:

  • If no Target detected,
    -- Mouseover and tap all the mining lasers to disable any active ones and to get ready any inactive ones.
    ---- This action will keep Overview from locking and allow depleted asteroid to be removed from Overview.
    -- Then continue (as usual) and Approach/Target the next asteroid.
    -- Lasers that were tapped should auto-activate on the new target.
    --- Existing bot-checks will see this and bypass activation.
    --- Existing bot-checks will also see any off lasers and turn them on.

(Two birds with one stone)

Where to set config settings?

The docs say:

"When using more than one setting, start a new line for each setting in the text input field."

What 'text input field' and where do I find it? I run the .BAT file and it displays no input field.

Thanks.

Cannot find Asteroid, keep warping

Hi everyone,

have try the bot yesterday, it seems being looping in warping saying that he cannot find asteroid on the belt,

I have my overview set to Mining so asteroid belt are being display with the closest range as per the note

I have try to manually start the mining process in one of those belt, resume the bot and it was running properly (meaning the bot was able to detect the mining progress and drop off to station )

Does a specific fitting is required maybe? Im having Miner I laser at the present

Show 0 mining modules and stuck at opening inventory

Hey!
Loved the 0 warp bot but Im trying to use the mining bot and it gets stuck at toggleing/expanding the inventory on my ship.
And also, it shows 0 mining modules although I have it.

How could I solve this?

Detect Mining range from Tooltip and stop ship at maximum range-1km

I'd recommend that the ship stays at mining range so it doesn't get hung up on asteroids if it needs to escape. Is it possible to expose the fields as a configuration item for user-input in the script, or otherwise have the range detected from the mining module tooltip and have the ship approach until it is inside the mining range, then stop and activate mining modules?

Thanks!

something to add

I recommend adding a Jettison option.

maybe for active botting ore for 1 hour then it dumps it u come on the alt and grab the dropped ore. you would need to highlight all ore in inventory or you can with the shitf+click macro on all ore in inventory then right click any ore and !jettison option. would be really nice and increase yield. and since the cans are 1 hour active can just come back every 50 min to check game if im not that busy that day . also add something to stop modules when ore is depleted or when it is looking for new ore. or even make sure all modules are stopped before they start again. helps speed up mining

then there is another bot idea, you can make another bot to add onto this that goes onto your alt character and it will autobot pick up ore and carry all jettison ore. but will need to be in same fleet so u can warp to 0 on fleetmember. you can min max bots to the point of a real person.

insane work on this bot by the way.

Cannot dock when running away

Bot is not able to run away. Bot gets stuck in a loop by selecting the menu and then selects a random structure type(ex Citadel) and then starts back over. It does this until stopped.

When mining till full, it selects the correct structure via the overview window and docks. If it can't find the structure it then does it via the menu but loops.

How can I fix this?

Question: Mining Bot

Hi,

you can set a default station where you want to unload your Ore. Is it possible to also set a Destination where you want to mine from?

Edit: Also what about a priority list for Ores to Mine?

Bot.elm file missing

I too am having this issue as another person. He seemed to have worked it out but didn't explain how.

failed with exception: System.Exception: Failed compiling the bot program code: Failed to find the file with the entry point. Seems like the 'Bot.elm' file is missing in this program code file tree.

Avoid confusing the last status message from the bot

In the console window, I see the following text:

Last bot event was 9 seconds ago at 18-29-28.835.
Status message from bot:
Some status text from the bot

When I saw this, I first thought this message came out of the processing of the last event (for which the time is displayed). But with the current implementation, this message could be from an older processing of an event.

Maybe the interface would work better require the bot always to supply a status string:

type ProcessSerializedEventResponse
    = DecodeEventError String
    | DecodeEventSuccess ProcessEventResponse


type alias ProcessEventResponse =
    { statusAsString : String
    , botRequests : List BotRequest
    }

Problem adding settings, works fine if I dont

I added the setting of not hiding when Neutral. But it wont work, this comes up:
(ive tried other settings like unloading on a specific station, doesnt work either)

Unrecognized option '--bot-settings=hide-when-neutral-in-local = no'

Refining bot development examples and guides - improving EVE Online jet can collection example

Today I discovered a way to improve on yesterdays implementation for Foivos Saropoulos jet can collection in EVE Online (See the commit at b5f2fb0)

The benefit of this improvement is making it easier to implement similar functionality in the future; it would not necessarily bring any improvement for this particular app. That is why I do not add it there immediately; it is not on the shortest path to a working app for Foivos.

A problem with changes in the linked commit is the introduction of remembering the action we performed. In this specific case, a sequence to initiate warping to a fleet member (App-specific language). Yesterday's implementation bases this memory on a leaf of the decision tree selecting this action. This kind of dependency makes development more complex, also affecting the ability to employ machine learning to automate programming by training data.

To get rid of this dependency again, we can instead draw on what we can observe passively. The analogy here is watching someone play: Given a video recording of the gameplay, can we decide if the warp-to-fleet member is complete? Drawing on what I know about the game, it seems possible: Is the context menu close enough to the right character in the chat window? Is it expanded up to the stage where we can initiate the warp with the next click? If these conditions are met, we can check if the ship started a warp within two seconds of the context menu disappearing.
We do not have to stop here. If, for some reason, the set of conditions to meet is not strict enough yet, we could also draw on remembering the location of the last mouse click to boost confidence. We can check if that location is within the right context menu entry. This dependency on past inputs is less problematic than the dependency taken in yesterday's change, as it is not specific to the origin of the action in the policy.

Not depending on the learning/collecting policy is the goal, since it allows for reuse of already available data sets. A concrete example is a case where we attempt to implement that jet can collection feature and test it: We don't want to depend on starting a game client to perform a live test, as this would slow down the development process. With the policy-independent variant, we can test the new implementation using a recording from another session. That other session does not even have to be related to the use of any bot; it could be as well a record of a human playing.

Drones and Warp back

The Bot dont get it managed to put drones back in caro - i have to klick it myself - it trys to klick on the wrong side.
Same thing with warping back to station command - it kicks right on the station but dont get it managed to klick "Dock".

session-2021-05-20T22-38-30-1266f9.zip

MiningBot just clicks on inventory

Hello. I'm trying to launch a bot. I set all the settings correctly, watched the launch video, but the bot endlessly clicks on "Mining hold" in the inventory. I will be glad if you help

{
"botlabClientVersion": "2022-10-07",
"botId": "999f03ff3e728e68fca5c065d924bb3f93bc425fcdebe042c5f5128787d1ebff",
"initialBotSettingsHash": "e3b0c4",
"sessionCustomName": "2022-10-16T23-44-31",
"onlineSessionId": null,
"lastBotStep": {
"sessionAgeMilliseconds": 119278,
"statusTextFromBot": "Session performance: times unloaded: 0, volume unloaded / m\u00B3: 0\n---\n

Current reading: mining hold filled Unknown%. Shield HP at 100%. Found 0 mining modules. I do not see the drones window.

\n\u002B I see ship UI and overview, undocking complete.

\n\u002B\u002B mining hold is not selected. Select the mining hold.

\n\u002B\u002B\u002B Click the tree entry representing the mining hold.

\n----\nEVE Online framework status:\n
Last reading from game client: 000035-116264: 0 rects containing 0 pixels\n
Last result from volatile process is: Success: {\u0022CompletedEffectSequenceOnWindow\u0022:{}}\n
Current activity: Operate bot."
},
"finishReason": null
}

Compile the code

Hey, Great work
can I compile it instead of using the .exe file?

I see no route in the info panel

Hi Viir,
i've tried to follow carefully your guide on how to use the bot to travel from point A to B, but for some Reason i don't see any mouvement even if route is set.
To set a route in game, i'm right clicking on the overview then left clicking on Set Destination.
(Language is English)

This is was i have in the cmd

Bot F5B0B70ED5... in session '2019-11-20T06-05-48-AD3845B5F53D' is running. Press CTRL + ALT keys to pause the bot.
Last bot event was 0 seconds ago at 06-23-35.398. There are 0 tasks in progress ().
Status message from bot:

Last script run result is: Success: {"getMemoryMeasurementResult":{"completed":{"mainWindowId":"919606","reducedWithNamedNodesJson":"null"}}}
Current activity: Operate bot:
I see no route in the info panel. I will start when a route is set.

Can you please tell me how to do ?
Regards,
Pierre

Licence type?

I'm curious what the licence is for this code? I would like to use the Elm BMP decoder in a commercial project but I'm not sure of how you are licensing it. I understand if you would rather keep it non-commercial.

I cannot see a licence file or reference in the project but maybe I've missed it?

Guide - How to efficiently navigate and explore program code

Finding in the conversation at #34 (comment):
User 'scrolled down' to search for relevant portions in the program code.

This approach for navigating does not scale well to larger programs. Following semantic references reduces the time to discovery:
image

Write a guide on how to use code navigation. Use the linked conversation as a checklist if concrete examples are covered.

Dependencies

The VSCode variant of the IDE setup already has navigation via references already implemented for both directions. Explore adding this functionality to the new default IDE too. The constraints in the PL (no polymorphism, shadowing, overloading) might make this simple.

Related roadmap item

Long-term, dynamic view and navigation on an application scenario seem better suited than a static view of the program code. One advantage will be removing branches that are dead in that scope which in turn reduces distractions.

issue with returning to station

Hello,

First thank you so much for your work!
I had a couple issue but finally i managed to make the bot mine, and do all stuff, join asteroid without problem.
My only issue is that he never return to station, i tried to run one time the bot from the station , without any config, it didnt worked, then i started by adding in the setting my station name, but it's dont work too

Thank for your work man, keep it up , add a paypal for donation !

Repeated Approach Command

Had a thought, a way to prevent the repeated "approach" command entry would be to have it once, then evaluate the window for a target that is within distance of a Miner I (I think that is the shortest distance). If there isn't one, then enter command again, if there is, then lock on and enable lasers.

Eve Combat Anomaly Bot will not warp to Anomaly, Quits early

Using Botlab Version v2022-02-14.
Script downloaded from: https://reactor.botlab.org/catalog/e025c79ef959d848559d2d7c15e527ea39c720ab6b06763ef1ccf4c08c39f902
Script Inputs:
anomaly-name = Guristas Rally Point
anomaly-name = Guristas Sanctum
anomaly-name = Guristas Haven
hide-when-neutral-in-local = yes
rat-to-avoid = Infested Carrier
module-to-activate-always = Omnidirectional Tracking Link II
module-to-activate-always = Medium Armor Repairer II
module-to-activate-always = Thermal Armor Hardener II

What works Properly: 1. Bot does undock 2. bot DOES successfully pull drones and dock to station when hostile comes in system.
Problems: 1. Bot will not warp to anomaly when anomaly is visible in probe scanner window. 2. If warp the ship to an anomaly, bot will begin to fight. But on a random basis the bot will at some point pull drones and then sit in the anomaly while being fired upon by rats in the anomaly. If I manually target rats and set the drones on them, then give control back to the bot, the bot will again pull drones and then sit there being aggressed
cao2

log.zip

warp_to_0: checking modules all the time

Hi,

the warp_to_0 script is checking the modules with every jump. Is it possible to disable this function (with some settings parameter), or to save the result from the first check, or at least speed it up so it doesn't block the mouse forever when checking?

Tanks

Suggestion

Hey,
Firstly I want to say awesome job! Very quick and easy to setup for someone like me who is a total noob to this stuff.

Just a suggestion though, is it possible to only have the mining bot click once to approach the nearest asteroid? I feel like there is a chance that as it continually repeats clicking the 'approach' button this might signal that a bot is being used and get you banned?
Given I know nothing about programming etc. I am likely missing something so sorry if it seems like a stupid request. Just an idea =)

edit: what about getting it to drop drones once at the site then picking them back up before walking away? That way when mining in hi-sec you won't have to run from rats? =)

Thanks for your hard work.

please make it for linux

Me and many people do not use Windows...We pay this game under Linux...We would like to have this for Linux. Thanks.

Slow warp to 0

Hi Michael,

Ive tried your warp to 0 bot but am finding that autopilot is faster (up to 1 minute depending) do you think this is issues on my end?

Im new to all of this and your bot is the first that I have tried.

Thanks in advance

Eve Intel Bot doesn't operate with online session.

The eve intel bot works fine as a 15 minute not-online script. But when I configure it for online and 480 minute use, I get this error:

Composition 1c7faeae880dea0d0126501edab346b90ffe9c7d9b2aea8158a883670cbdee60 does not have structure of a bot program: Failed to parse main module: This composition does not contain a bot main module at any of the expected paths (Bot.elm)

the script is:

run-b24d7d6506-online-session-length-limit-480

Question

I have compiled the BotEngineApp.elm with elm.exe, but I can't run it, do I need the botengine.exe to run this?

Asteroids in X thousand km distance

Hello,

I found the undocumented feature :-) that if an asteroid is e.g. 3000 km far away the bot will still try to fly there instead of warping to the asteroid.

My suggestion would be to add an additional "IF distance >= 150km THEN warp ELSE approach" statement to the code.

THX for your efforts and sharing this awesome piece of code with the community, you rock!

stuck on an action

stuck on "Current activity: Waiting for completion of task 'setup-2': Setup: Search the address of the UI root in process 43684" will not change.

Bot should attempt next target on list when first target does not work. [proposed label] application-eve-online

I found that the bot already does this in the following example:

image

The bot selected the second item in the overview list when it noticed that the first one was not valid.

Can we do the same for this one?

image

Several ways to approach this exception:

  • Notice the difference in color; thereby decide to target the next valid item on the overview list list.
  • Notice that clicking on this item takes more than 3 seconds to bring up the next step (the menu to lock target); thereby decide to target the next valid item on the overview list.

Select Active Ship Not Ore Hold

I want to make an addition to this code
Just toggleBtn ->
endDecisionPath
(actWithoutFurtherReadings
( "Click the toggle button to expand."
, toggleBtn |> clickOnUIElement MouseButtonLeft
)
I want it to check if there was an ore hold or not. if can not see the ore hold then switch to a regular active ship inventory.
I use Megthron and it goes into a wild chase without a cargo hold.
I'm using 2020-08-24-botengine-console and {- EVE Online mining bot version 2020-08-27.
Yes, you are outdated guys.

Prioritize Ore Type?

I don't know much about building these, wondering if there would be a way to have the bot reference a file where it searches the belt list for a specific ore. For instance, if I want to mine Veldspar because it is most profitable in my system, I could preference that over other ores. If present in the belt the bot takes my mining ship to, then it will approach it and mine. If not, then it does to the second type I list, or whatever is nearest if nothing else listed.

Suggestion: Gherkin Scripting

It would be awesome if these bots (especially the Eve ones) could be scripted with a gherkin-like language. Just provide a file path as an argument and the bot makes decisions based off the supplied gherkin statements.

Ban rate on Tribal Wars 2 farming bot?

Do you know how often people get banned using the Bot?

secondly can I have this running on my PC but still use a tablet to interact with the recruitment queue and such?

Cheers
lamma

15 min max

i want the offline time to be longer, please

bot not runing

every time i run it it just says

idk how to fix this
"----
EVE Online framework status:
Last reading from game client: None so far
Last result from volatile process is: Nothing
Current activity: Stop session (Create volatile process failed with exception: System.Exception: Failed to setup the volatile process: System.Exception
---> Microsoft.CodeAnalysis.Scripting.CompilationErrorException: (47,29): error CS1069: The type name 'SHA256Managed' could not be found in the namespace 'System.Security.Cryptography'. This type has been forwarded to assembly 'System.Security.Cryptography, Version=0.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' Consider adding a reference to that assembly.
at Microsoft.CodeAnalysis.Scripting.ScriptBuilder.ThrowIfAnyCompilationErrors(DiagnosticBag diagnostics, DiagnosticFormatter formatter)
at Microsoft.CodeAnalysis.Scripting.ScriptBuilder.CreateExecutor[T](ScriptCompiler compiler, Compilation compilation, Boolean emitDebugInformation, CancellationToken cancellationToken)
at Microsoft.CodeAnalysis.Scripting.Script1.GetExecutor(CancellationToken cancellationToken) at Microsoft.CodeAnalysis.Scripting.Script1.RunAsync(Object globals, Func2 catchException, CancellationToken cancellationToken) at Microsoft.CodeAnalysis.Scripting.Script1.RunAsync(Object globals, CancellationToken cancellationToken)
at Microsoft.CodeAnalysis.CSharp.Scripting.CSharpScript.RunAsync[T](String code, ScriptOptions options, Object globals, Type globalsType, CancellationToken cancellationToken)
at Microsoft.CodeAnalysis.CSharp.Scripting.CSharpScript.RunAsync(String code, ScriptOptions options, Object globals, Type globalsType, CancellationToken cancellationToken)
at BotLabClient.VolatileProcess.RunScript(String script)
--- End of inner exception stack trace ---
at BotLabClient.VolatileProcess..ctor(Func`2 getFileFromHashSHA256, String csharpScriptCode, Object scriptGlobals)
at BotLab.Client.PlaySession.PerformAgentTask(StartTask startTask))"

Is this really worth? or maybe rmt?

Is this really worth? 5 euro for 150hours that is nearly 6 dollar, that means if you can sell is about 30 dollars per 5000M isk, you need to get 1000M in 150 hours, that means it's impossible, I don't know how can make 6M isk by mining. If you really need isk why not go to somewhere like play auction and spend 30 dollars?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.