autoit_pokeautopilot/pokebot.au3
2013-06-16 19:11:32 +02:00

194 lines
4.4 KiB
AutoIt

#Include <WinAPI.au3>
#include <Array.au3>
#include <Math.au3>
#include "src/const.au3"
#include "src/fastfind/FastFind.au3"
#include "src/util.au3"
#include "src/move.au3"
#include "src/move_go.au3"
#include "src/map.au3"
#include "src/trigger.au3"
#include "src/screen.au3"
#include "src/move_combat.au3"
#include "src/logic_catch.au3"
#include "src/logic_combat.au3"
#include "src/logic_dialog.au3"
#include "src/loader.au3"
#include "src/A_Star.au3"
;current pos: x,y,direction,map
Global $POS[4] = [0,0,$DIRECTION_SOUTH,"fuchsia.city.map"]
;current map loaded: size,zero(center),maparray,a*map
Global $MAP[4] = [13,4,0,0]
Dim $map_arr[$MAP[0]][$MAP[0]]
$MAP[2] = $map_arr
Global $STATE = "Startup"
Dim $POKEMON_CATCH ; loaded from file
Dim $FIELDS ; loaded from file
Dim $TRIGGERS ; loaded from file
DIM $TRIGGER_INDICATORS ; loaded from file
Global $PROCESS_HANDLE = findProcess($PROCESS_NAME)
__main__()
Func __main__()
load_catch($PATH_CFGS & "catch.cfg")
load_field($PATH_CFGS & "field.cfg")
load_triggerindicators($PATH_CFGS & "triggerindicators.cfg")
map_load()
;_ArrayDisplay($map_arr)
do_log("wait till start")
WinActivate($PROCESS_NAME)
sleep(2500)
do_log("PokeBot: start")
screen_gettile_full()
while 1
;do_safariwalk()
;do_walkleft()
;do_randomtargetwalk()
;sleep(10)
do_randomtargetwalk()
sleep(10)
do_randomtargetwalk()
sleep(10)
do_randomdoorwalk()
sleep(10)
do_edgewalk()
sleep(10)
;do_randomwalk()
;sleep(10)
WEnd
EndFunc
func do_edgewalk()
$STATE = "Edge Walker"
;go_target(2,2)
;go_target(2,$MAP[0]-3)
;go_target($MAP[0]-3,2)
;go_target($MAP[0]-3,$MAP[0]-3)
;go_target($MAP[1],2)
;go_target(2,$MAP[1])
;go_target($MAP[0]-3,$MAP[1])
;go_target($MAP[1],$MAP[0]-3)
$map_arr = $MAP[2]
$i = Random(0,$MAP[0]-1,1)
if is_walkable($map_arr[$i][0],$i,0) then
go_target(-$MAP[1],$i-$MAP[1])
ElseIf is_walkable($map_arr[$i][$MAP[0]-1],$i,$MAP[0]-1) then
go_target($MAP[1],$i-$MAP[1])
ElseIf is_walkable($map_arr[0][$i],0,$i) then
go_target($i-$MAP[1],-$MAP[1])
ElseIf is_walkable($map_arr[$MAP[0]-1][$i],$MAP[0]-1,$i) then
go_target($i-$MAP[1],$MAP[1])
EndIf
EndFunc
func do_finddoor($n)
$n_c = 0
for $i = 0 to Ubound($TRIGGERS)-1
if $TRIGGERS[$i][2] == $TRIGGER_TYPE_DOOR then
if $n_c == $n then
dim $door[2]=[$TRIGGERS[$i][0],$TRIGGERS[$i][1]]
return $door
EndIf
$n_c += 1
EndIf
Next
return false
EndFunc
func do_randomdoorwalk()
$STATE = "Random Door"
$door_n = Random(0,$MAX_DOORS,1)
do_log("Random Door Move: start: "&String($door_n))
$door = do_finddoor($door_n)
if $door == false then
do_log("Random Door Move: failed no door found: "&String($door_n))
;sleep(2000)
return false
endif
do_log("Random Map Door Move: rand ("&String($door[0])&"|"&String($door[1])&"):"&String($door_n))
if not go_target($door[0],$door[1]) then
;_ArrayDisplay($door)
do_log("Random Door Move: failed ("&String($door[0])&"|"&String($door[1])&"):"&String($door_n))
;sleep(2000)
return false
endif
return true
EndFunc
func do_randomtargetwalk()
$STATE = "Random Target"
do_log("Random Target Move: start")
;$tx = $map_zero[1]+$POS[0]
;$ty = $map_zero[0]+$POS[1]-1
;$tx = Random($map_zero[1]+$POS[0]-2,$map_zero[1]+$POS[0]+2,1);
;$ty = Random($map_zero[0]+$POS[1]-2,$map_zero[0]+$POS[1]+2,1)
$tx = Random(-$MAP[1], $MAP[1],1)
$ty = Random(-$MAP[1], $MAP[1],1)
do_log("Random Target Move: rand ("&String($tx)&"|"&String($ty)&")")
if not go_target($tx,$ty) then
do_log("Random Target Move: failed ("&String($tx)&"|"&String($ty)&")")
;sleep(2000)
return false
endif
;$door_fails = 0 ;stay we have discovered stuff?
return true
EndFunc
Func do_randomwalk()
$STATE = "Random Walker"
$r = Random(0,3,1)
$r2 = Random(2,10,1)
switch $r
case 0
for $i = 0 to $r2
if not go_up("Random Walker: Up") then ExitLoop
Next
case 1
for $i = 0 to $r2
if not go_left("Random Walker: Left") then ExitLoop
Next
case 2
for $i = 0 to $r2
if not go_down("Random Walker: Down") then ExitLoop
Next
case 3
for $i = 0 to $r2
if not go_right("Random Walker: Right") then ExitLoop
Next
Case Else
exit
EndSwitch
EndFunc
Func do_walkleft()
go_left("left")
EndFunc
Func do_safariwalk()
go_left("Safari Walker: Left")
go_left()
go_left()
go_left()
go_left()
go_right("Safari Walker: Right")
go_right()
go_right()
go_right()
go_right()
EndFunc