Scripting a bot for EOS Knights

christitus(42)
Published in
#eos
Words
613
Reading
3 min
Listen
Play
8y

eos-knights1.PNG

EOS Knights is the best blockchain game out there right now. I found it incredibly addictive and quite fun to play. That said there are some requirements to play, so lets go over them right now:

  • Need about 30-40 EOS to play
    • I recommend staking about 30 EOS on CPU (double the official recommendation)
  • EOS account - You can create one by paying about $5 if you don't have a friend create one for you. If you are having problems hit me up and I can help you.
    • Note: this is an official EOS account, not an ERC20 token account or having EOS on an exchange
  • Scatter for Chrome

Now with that said head over to https://game.eosknights.io/ and let's begin. There is plenty of other how-to-play the game out there but basically, you need play to a point you get your knights mostly uncommon-rare items and no longer need the common items which should be level 4+.

For my automation bot, I decided to go with Autoit for simplicity and adaptability. I'd recommend setting this up in a Virtual machine so you can just set it and forget it! This bot is based on the EOS knight being in a chrome maximized window on a resolution of (1600x900). So set your monitor to these dimensions and run the script and let it do the rest.

eos-knights2.PNG

What the bot will do:

  • revive you when you are low on HP
  • sell any common mats you acquire from reviving
  • reset game/refresh browser window with a 5-minute wait if you run out of inventory, cpu maxed, fail bot check, have scatter go boom.

So with that you can see the calls I made for the pixels on the screen and you can modify these for other resolutions if you like. Also, your version of chrome may make a difference V68 and V69(just launched this week) have a different pixel count which may through this bot off. Let me know if you need some help, but include chrome version and resolution you are on. Please note: Autoit emulates actual movement so you can't use the PC while this is running and why I recommend using a VM.

Without further ado here is the code for the au3 script:

#include <AutoItConstants.au3>
Opt("WinTitleMatchMode",2)
Global $notloading = 0
While 1=1
;$health = PixelGetColor( 2181 , 328 ) ;LONG
;$health = PixelGetColor( 2198 , 328 ) ;SHORT
;$randomhealth = Random(2181,2200) ; Rare Farm
$randomhealth = Random(1056,1062) ; Unique Farm
$health = PixelGetColor( $randomhealth , 308 ) ;RANDOM
$menuselect = PixelGetColor(981,442)
If $notloading = 1 Then
    resetgame()
ElseIf $menuselect <> DEC("58CEFF") Then
    MouseClick("left",986,421,1)
ElseIf $health <> DEC("1CFF7D") Then
    revive()
    inventorymenu()
    inventoryselect(1117,423,1119,465)
    inventoryselect(1033,423,1035,465)
    inventoryselect(1200,423,1202,465)
    inventoryselect(1284,423,1286,465)
    inventoryconvert()
EndIf
Sleep(60000)
WEnd

Func resetgame()
    WinActivate("EOS Knights - Google Chrome","")
    WinWaitActive("EOS Knights - Google Chrome","",10)
    Sleep(500)
    Send("{F5}")
    Sleep(300000)
    MouseClick("left",1078,523,1)
    Sleep(7000)
    $notloading = 0
EndFunc

Func inventorymenu()
   MouseClick("left",1158,369,1)
EndFunc

Func inventoryselect($x1,$y1,$x2,$y2)
    $inventory = PixelSearch($x1,$y1,$x2,$y2,0xC9C9C9,15)
    If Not @error Then
        MouseClick("left",$x1,$y1,1)
    EndIf
EndFunc

Func inventoryconvert()
    MouseClick("left",1053,773,1)
    Sleep(500)
    MouseClick("left",1077,556,1)
    Sleep(500)
    cpucheck()
    $scatwnd = WinWait("Scatter","", 10)
    $iState = WinGetState($scatwnd)
    If BitAND($iState, $WIN_STATE_EXISTS) Then
        WinActivate("Scatter","")
        WinWaitActive("Scatter","",10)
        Sleep(500)
        MouseClick("left",1045,688,1)
        Sleep(6000)
        WinActivate("EOS Knights - Google Chrome","")
        WinWaitActive("EOS Knights - Google Chrome","",10)
        MouseClick("left",986,819,1)
    Else
        $notloading = 1
    EndIf
EndFunc

Func revive()
    WinActivate("EOS Knights - Google Chrome","")
    WinWaitActive("EOS Knights - Google Chrome","",10)
    Sleep(500)
    MouseClick("left",1210,465,1)
    Sleep(500)
   $healthcheck = PixelGetColor( 1063 , 525 )
   $cpucheck = PixelGetColor( 1099 , 393 )
   If $healthcheck = DEC("FFFFFF") AND $cpucheck <> DEC("FF0000") Then
        MouseClick("left",1073,573,1)
    EndIf
    cpucheck()
    $scatwnd = WinWait("Scatter","", 10)
    $iState = WinGetState($scatwnd)
    If BitAND($iState, $WIN_STATE_EXISTS) Then
        WinActivate("Scatter","")
        WinWaitActive("Scatter","",10)
        Sleep(500)
        MouseClick("left",1040,688,1)
        Sleep(6000)
        WinActivate("EOS Knights - Google Chrome","")
        WinWaitActive("EOS Knights - Google Chrome","",10)
        MouseClick("left",1115,677,1)
    Else
        $notloading = 1
    EndIf
 EndFunc

Func cpucheck()
   $cpucheck = PixelGetColor( 1099 , 393 )
    If $cpucheck = DEC("FF0000") Then
        Sleep(300000)
        MouseClick("left",1026,669,1)
     EndIf
EndFunc

Enjoy!

Scripting a bot for EOS Knights | Ecency