# Forum > MMO > Blade and Soul Exploits|Hacks > [Release] Auto Summoner Script

## dusia128

Just created Small Autoit script to automate some of the summoner functions for BNS. 
Script uses images search functions and fires skills if image of skill found in predefined region
Script works fine but have some limitations:

#1 cat taunt will be interrupted if other skill found to use. ( may be later will figure out how to add loop interrupt for and wait for taunt )
#2 If skill a and b ready sometimes it will fire b even if you would want a ( did not figure out how to make priority list in Autoit)
#3 you will need to take your own screenshots of skill and set correct positions where to search for it that can be done in script and recompile exe with autoit)
#4 not all skills preprogramed only the ones I use 



*DOWNLOAD SCRIPT AND IMAGES HERE* 
Auto Summoner.rar

Virus total of compiled exe if someone needs it. But you can open script and compile it yourself
https://www.virustotal.com/en/file/8...is/1456315327/

*Adding original code of autoit script too. May be someone will have ideas how to improve it* 



```

 Func _imagesearch($findimage, $resultposition, ByRef $x, ByRef $y, $tolerance)
    Return _imagesearcharea($findimage, $resultposition, 0, 0, @DesktopWidth, @DesktopHeight, $x, $y, $tolerance)
EndFunc   ;==>_imagesearch
 Func _imagesearcharea($findimage, $resultposition, $x1, $y1, $right, $bottom, ByRef $x, ByRef $y, $tolerance)
    If $tolerance > 0 Then $findimage = "*" & $tolerance & " " & $findimage
    $result = DllCall("ImageSearchDLL.dll", "str", "ImageSearch", "int", $x1, "int", $y1, "int", $right, "int", $bottom, "str", $findimage)
    If $result[0] = "0" Then Return 0
    $array = StringSplit($result[0], "|")
    $x = Int(Number($array[2]))
    $y = Int(Number($array[3]))
    If $resultposition = 1 Then
        $x = $x + Int(Number($array[4]) / 2)
        $y = $y + Int(Number($array[5]) / 2)
    EndIf
    Return 1
EndFunc   ;==>_imagesearcharea
 Func _waitforimagesearch($findimage, $waitsecs, $resultposition, ByRef $x, ByRef $y, $tolerance)
    $waitsecs = $waitsecs * 1000
    $starttime = TimerInit()
    While TimerDiff($starttime) < $waitsecs
        Sleep(100)
        $result = _imagesearch($findimage, $resultposition, $x, $y, $tolerance)
        If $result > 0 Then
            Return 1
        EndIf
    WEnd
    Return 0
EndFunc   ;==>_waitforimagesearch
 Func _waitforimagessearch($findimage, $waitsecs, $resultposition, ByRef $x, ByRef $y, $tolerance)
    $waitsecs = $waitsecs * 1000
    $starttime = TimerInit()
    While TimerDiff($starttime) < $waitsecs
        For $i = 1 To $findimage[0]
            Sleep(100)
            $result = _imagesearch($findimage[$i], $resultposition, $x, $y, $tolerance)
            If $result > 0 Then
                Return $i
            EndIf
        Next
    WEnd
    Return 0
EndFunc   ;==>_waitforimagessearch
  #include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
    $Form1_1 = GUICreate("Auto Summoner", 265, 430)
$Checkbox1 = GUICtrlCreateCheckbox("[TAB] - Lunge T1", 20, 30, 140, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox2 = GUICtrlCreateCheckbox("[TAB] - Lunge T3", 20, 50, 140, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox3 = GUICtrlCreateCheckbox("[TAB] - Power Pounce", 20, 70, 140, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox4 = GUICtrlCreateCheckbox("[C] - Strike", 20, 120, 140, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox8 = GUICtrlCreateCheckbox("[V] - Surprise Gift", 20, 230, 140, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox6 = GUICtrlCreateCheckbox("[V] - Uppercut", 20, 190, 140, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox7 = GUICtrlCreateCheckbox("[V] - Play Time", 20, 210, 140, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox5 = GUICtrlCreateCheckbox("[C] - Hammer Spin", 20, 140, 140, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox10 = GUICtrlCreateCheckbox("[2] - Backstep", 20, 300, 140, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox9 = GUICtrlCreateCheckbox("[1] - Tag Team", 20, 280, 140, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox11 = GUICtrlCreateCheckbox("[F] - Retreat", 20, 320, 140, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox12 = GUICtrlCreateCheckbox("[RMB] -Entangle", 20, 370, 120, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Group1 = GUICtrlCreateGroup("TAB", 10, 10, 160, 90)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("C", 10, 100, 160, 70)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group3 = GUICtrlCreateGroup("V", 10, 170, 160, 90)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group4 = GUICtrlCreateGroup("Escapes", 10, 260, 160, 90)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group5 = GUICtrlCreateGroup("RMB", 10, 350, 160, 50)
GUICtrlCreateGroup("", -99, -99, 1, 1)
HotKeySet("{NUMPADADD}", "_SwitchOnOff")
;HotKeySet("q", "_tauntpause")
$Button1 = GUICtrlCreateCheckbox("Start/Stop", 180, 16, 75, 25, $BS_PUSHLIKE)
$StatusBar1 = _GUICtrlStatusBar_Create($Form1_1)
GUISetFont (9, 800)
Global $status = "off"
$statustxt = GUICtrlCreateLabel("Status: Off", 100, 410)
GUICtrlSetColor($statustxt, 0xFF0030)
Global $y1 = 0, $x1 = 0, $result=0
Global $tabkey = ("{TAB}")
Global $ckey = ("c")
Global $vkey = ("v")
Global $1key = ("1")
Global $2key = ("2")
Global $fkey = ("f")
Global $rmb = MouseClick("right")
Global $y = 0, $x = 0
GUISetState()
    While 1
sleep(10)
 $Msg = GUIGetMsg()
 Switch $Msg
     Case $GUI_EVENT_CLOSE
         ExitLoop
     Case $Button1
        Switch GUICtrlRead($button1)
            Case $GUI_CHECKED
                GUICtrlSetData($statustxt, "Status: On")
                GUICtrlSetColor($statustxt, 0x00703C)
                $status = "on"
            Case $GUI_UNCHECKED
                GUICtrlSetData($statustxt, "Status: Off")
                GUICtrlSetColor($statustxt, 0xFF0030)
                $status = "off"
        EndSwitch
 EndSwitch
If $status = "on" Then
 _fkey()
_1key()
_2key()
_rkey()
_ckey2()
 _tab2()
 _combo1() ;_tab1() _tab3()
Sleep(100)
 _combo2() ; _ckey1()_tab3()
Sleep(100)
 _combo3() ;_ckey1() _vkey1() _vkey2()
Sleep(10)
 _combo4() ;_vkey3() _vkey4() _tab3()
Sleep(10)
    EndIf
WEnd
 Func _switchonoff()
    If  GUICtrlRead($button1) = $GUI_UNCHECKED Then
        GUICtrlSetState($Button1, $GUI_CHECKED)
        GUICtrlSetData($statustxt, "Status: On")
        GUICtrlSetColor($statustxt, 0x00703C)
        $status = "on"
    ElseIf GUICtrlRead($button1) = $GUI_CHECKED Then
        GUICtrlSetState($Button1, $GUI_UNCHECKED)
        GUICtrlSetData($statustxt, "Status: Off")
        GUICtrlSetColor($statustxt, 0xFF0030)
        $status = "off"
    EndIf
EndFunc
  Func _combo1()
_tab1()
_tab3()
EndFunc
  Func _combo2()
_ckey1()
_tab3()
EndFunc
  Func _combo3()
_ckey1()
_vkey1()
_vkey2()
EndFunc
  Func _combo4()
_vkey3()
_vkey4()
_tab3()
EndFunc
  Func _tab1()
If GUICtrlRead($CheckBox1) = $GUI_CHECKED Then
$result = _imagesearcharea("tab1.png", 1, 1545, 1251, 1592, 1300, $x, $y, 70)
    if $result=1 Then
        ConsoleWrite("Found tab1" & @CRLF)
        Send($tabkey)
    EndIf
EndIf
EndFunc
 Func _tab2()
If GUICtrlRead($CheckBox2) = $GUI_CHECKED Then
$result = _imagesearcharea("tab2.png", 1, 1545, 1251, 1592, 1300, $x, $y, 70)
    if $result=1 Then
        ConsoleWrite("Found tab2" & @CRLF)
        Send($tabkey)
    EndIf
EndIf
EndFunc
 Func _tab3()
If GUICtrlRead($CheckBox3) = $GUI_CHECKED Then
$result = _imagesearcharea("tab3.png", 1, 1545, 1251, 1592, 1300, $x, $y, 70)
    if $result=1 Then
        ConsoleWrite("Found tab3" & @CRLF)
        Send($tabkey)
    EndIf
EndIf
EndFunc
 Func _ckey1()
If GUICtrlRead($CheckBox4) = $GUI_CHECKED Then
$result = _imagesearcharea("ckey1.png", 1, 1724, 1325, 1772, 1374, $x, $y, 70)
    if $result=1 Then
        ConsoleWrite("Found ckey1" & @CRLF)
        Send($ckey)
    EndIf
EndIf
EndFunc
 Func _ckey2()
If GUICtrlRead($CheckBox5) = $GUI_CHECKED Then
$result = _imagesearcharea("ckey2.png", 1, 1724, 1325, 1772, 1374, $x, $y, 70)
    if $result=1 Then
        ConsoleWrite("Found ckey2" & @CRLF)
        Send($ckey)
    EndIf
EndIf
EndFunc
 Func _vkey1()
If GUICtrlRead($CheckBox6) = $GUI_CHECKED Then
$result = _imagesearcharea("vkey1.png", 1, 1779, 1325, 1827, 1374, $x, $y, 70)
    if $result=1 Then
        ConsoleWrite("Found vkey1" & @CRLF)
        Send($vkey)
    EndIf
EndIf
EndFunc
 Func _vkey2()
If GUICtrlRead($CheckBox7) = $GUI_CHECKED Then
$result = _imagesearcharea("vkey2.png", 1, 1779, 1325, 1827, 1374, $x, $y, 70)
    if $result=1 Then
        ConsoleWrite("Found vkey2" & @CRLF)
        Send($vkey)
    EndIf
EndIf
EndFunc
 Func _vkey3()
If GUICtrlRead($CheckBox8) = $GUI_CHECKED Then
$result = _imagesearcharea("vkey3.png", 1, 1779, 1325, 1827, 1374, $x, $y, 70)
    if $result=1 Then
        ConsoleWrite("Found vkey3" & @CRLF)
        Send($vkey)
    EndIf
EndIf
EndFunc
 Func _vkey4()
If GUICtrlRead($CheckBox8) = $GUI_CHECKED Then
$result = _imagesearcharea("vkey4.png", 1, 1779, 1325, 1827, 1374, $x, $y, 70)
    if $result=1 Then
        ConsoleWrite("Found vkey4" & @CRLF)
        Send($vkey)
    EndIf
EndIf
EndFunc
 Func _1key()
If GUICtrlRead($CheckBox9) = $GUI_CHECKED Then
$result2 = _imagesearcharea("1key.png", 1, 1613, 1249, 1663, 1301, $x, $y, 70)
    if $result2=1 Then
        ConsoleWrite("Found 1key" & @CRLF)
        Send($1key)
    EndIf
EndIf
EndFunc
 Func _2key()
If GUICtrlRead($Checkbox10) = $GUI_CHECKED Then
$result1 = _imagesearcharea("2key.png", 1, 1669, 1250, 1716, 1299, $x, $y, 70)
    if $result1=1 Then
        ConsoleWrite("Found 2key" & @CRLF)
        Send($2key)
    EndIf
EndIf
EndFunc
 Func _fkey()
If GUICtrlRead($CheckBox11) = $GUI_CHECKED Then
$result = _imagesearcharea("fkey.png", 1, 1970, 735, 2115, 800, $x, $y, 70)
    if $result=1 Then
        ConsoleWrite("Found fkey" & @CRLF)
         Send($fkey)
    EndIf
EndIf
EndFunc
 Func _rkey()
If GUICtrlRead($CheckBox12) = $GUI_CHECKED Then
$result = _imagesearcharea("rkey.png", 1, 1900, 1246, 1956, 1304, $x, $y, 70)
     if $result=1 Then
         ConsoleWrite("Found RMB" & @CRLF)
         MouseClick("right")
     EndIf
EndIf
EndFunc 


```

----------


## porkie

Do you mind me asking why autoit? doesn't all that pixel stuff take over your screen, I think ahk is a better thing to use specially if its just using skills when they are ready.

----------


## dusia128

> Do you mind me asking why autoit? doesn't all that pixel stuff take over your screen, I think ahk is a better thing to use specially if its just using skills when they are ready.


Simply I had some previous "experience" with autoit and it worked better than ahk. Plus you are not scanning whole screen you just scan specific regions size of the skill icon for that icon to show up. 

What scripts like that lacking is proper ability to execute combos.
lets say you have combo A +B but on screen you have A B C icons showing. sometimes you will get skills fired in order like C+A+B
I need to find proper way to manage priorities  :Smile:  but I did not put much time to it. In general auto it ques all the loop. Not sure it it is possible to have some sorts of priority

----------


## porkie

I'm sure thats possible in ahk, I'm just using a loop script with ahk but its only a simple one because my script knowledge sucks  :Smile:  but google helped me get what I wanted. But I may look into further to make it better but for now im doing ok in pvp with it. I even get air combo sometimes with summoner which Ive never done before.

----------


## dusia128

> I'm sure thats possible in ahk, I'm just using a loop script with ahk but its only a simple one because my script knowledge sucks  but google helped me get what I wanted. But I may look into further to make it better but for now im doing ok in pvp with it. I even get air combo sometimes with summoner which Ive never done before.


Sugestion : do not use it in PVP as this script will cancel your Crouch and that is very key element of summoners pvp unless you are in low ranks.

----------


## m63og

hi

i dont know how to use autoit can you help me or teamviwer and help me ?

----------


## Parog

> hi
> 
> i dont know how to use autoit can you help me or teamviwer and help me ?


There's a download link on the first post with a RAR file. Open it, extract the application inside. Run it. Done.

----------


## kyoko

sorry if im being dumb here but how do you get it to work? what key do you press/hold for it to do the combo?
thanks.

----------


## Vinshom

It detects the image, if an image pops it clicks a button for you. but Autohotkey is easier to set up

----------


## dusia128

> There's a download link on the first post with a RAR file. Open it, extract the application inside. Run it. Done.


Actualy that will work only if person using my resolution  :Smile:  3440x1440 as to optimize script I marked coordinates of the ares of skills.

To be hones I posted this script more like educational material and looking for feedback how to overcome limitations of the script. 

Limitation script have is
1. no taunt support ( no idea how proper way to interrupt loop and go back to it not suggesting to use it i pvp pve fine if you are not tanking  :Smile: )
2. no proper priority of execution of skills ( so you might have one or two misfires not suggesting to use it i pvp )


Looking to do same in autohot keys as it looks like you can prioritize there and build some sort of priority list  :Smile: 
never used AHK so no idea when I will release it ( work in progress) 
By the way if they going to enable game guard autoit and ahk scripts will stop working  :Smile: 

The best way would be to do memory reading rotation bot as I have no idea how to do it and don't have time to learn it  :Frown:  using what I can  :Smile: 

WARNING !!!! using this script in pvp as summoner you will get killed as you never will be able to time Crouch and stuns etc correct times  :Smile:

----------


## talihh

please assassin macro script auto lb + rb

----------


## dusia128

> please assassin macro script auto lb + rb


Forget all the scripts as GameGuard is running now  :Frown:  All AHK and AutoIt script will not work.

----------


## porkie

> Forget all the scripts as GameGuard is running now  All AHK and AutoIt script will not work.


Gamegaurd has been running for a few weeks now, It has been easy to disable it and run scripts. Rumors are going around today though that the heartbeat function is coming to GG so Im not sure after today what disabling GG will do.

----------


## Reusablename

rip scripts

----------


## Raistin

> Forget all the scripts as GameGuard is running now  All AHK and AutoIt script will not work.



My AHK scripts work just fine...

----------


## MegaCharizardd

donttwork!!!!!!!!!!!!

----------


## dusia128

> donttwork!!!!!!!!!!!!


You need to edit it to you resolution and take your screenshots of skills. 
This is just an example what can be done  :Smile:

----------


## necrobalv

could you please add auto super sunflower when it is avalible ?

----------


## anip12345

mind u share ur scripts with me  :Big Grin:

----------


## evelynsmith

Yeah!! AHK is actually better thing to use.

----------

