2016-07-20 2 views
-1

Я пытаюсь создать бот для флеш-игры, чтобы проверить и применить мои текущие навыки. Сама игра имеет х уровней, и мне нужно всего лишь 3 из них. 3 уровня выбраны случайными в игровой «библиотеке уровней».Autoit - Move Если найдены определенные пиксели

В настоящее время я пытаюсь выполнить его на определенном уровне, но я не знаю, как заставить игрока двигаться 1 вниз, если все конкретные пиксели найдены.

Вот код:

;Exit HotKey 
HotKeySet("{F1}", "myExit") 

WinActivate("GAME– Google Chrome") 

Sleep(1000) 

;Variables 
$dirtColor = 0x5E480F 
$clearDirtColor= 0x2D2206 
$stoneBlockColor=0x7F654C ;Remember viration 
$rolingStoneColor= 0x575656 ;Remember viration 
$backgroundColor = 0x97761E 

;Levels 
Func checkLevel3() ;Scan which level it is 
    if IsArray($player) = True Then 
     ;Move cursor to player 
     MouseMove($player[0],$player[1]) 
     Sleep(Random(250,500)) 

     ;Search 1 
     $Search1 = PixelSearch($player[0],$player[1]+50,$player[0],$player[1]+50, $clearDirtColor, 2) 
     MouseMove($Search1[0],$Search1[1]) 
     Sleep(Random(250,600)) 

     ;Search 2 
     $Search2 = PixelSearch($player[0]+60,$player[1]+50,$player[0]+60,$player[1]+50, $rolingStoneColor, 30) 
     MouseMove($Search2[0],$Search2[1]) 
     Sleep(Random(300,700)) 

     ;Search 3 
     $Search3 = PixelSearch($player[0]+60,$player[1],$player[0]+60,$player[1], $clearDirtColor, 3) 
     MouseMove($Search3[0],$Search3[1]) 
     Sleep(Random(300,700)) 

     ;Search 4 
     $Search4 = PixelSearch($player[0]-30,$player[1],$player[0]-30,$player[1], $backgroundColor, 3) 
     MouseMove($Search4[0],$Search4[1]) 
     ;Sleep(Random(300,700)) 

     ;Checks if all color matches 
     if $Search1 = true And $Search2 = true And $Search3 = true And $Search4= true Then 
     ;Clearing level3 
     Send("{DOWN}") 
     EndIf 
    EndIf 
EndFunc 

;Check player position 
$player= PixelSearch(190,182,1813,984,0x11c1A1) 
checkLevel3() ; Runs function for level 3 

Func myExit() 
    Exit 
EndFunc 

Спасибо, что нашли время для чтения этого.

ответ

0

Вероятно, проблема в этой строке:

если $ Search1 = истина и $ Search2 = истина и $ Search3 = истина и $ Search4 = True Then

Функция PixelSearch возвращает массив, $ Search1 = true не будет работать должным образом. Вы можете отслеживать @error, чтобы проверить, найдены ли пиксели.

;Search 1 
     $Search1 = PixelSearch($player[0],$player[1]+50,$player[0],$player[1]+50, $clearDirtColor, 2) 
     $error1 = @error 
     MouseMove($Search1[0],$Search1[1]) 
     Sleep(Random(250,600)) 

     ;Search 2 
     $Search2 = PixelSearch($player[0]+60,$player[1]+50,$player[0]+60,$player[1]+50, $rolingStoneColor, 30) 
     $error2 = @error 
     MouseMove($Search2[0],$Search2[1]) 
     Sleep(Random(300,700)) 

     ;Search 3 
     $Search3 = PixelSearch($player[0]+60,$player[1],$player[0]+60,$player[1], $clearDirtColor, 3) 
     $error3 = @error 
     MouseMove($Search3[0],$Search3[1]) 
     Sleep(Random(300,700)) 

     ;Search 4 
     $Search4 = PixelSearch($player[0]-30,$player[1],$player[0]-30,$player[1], $backgroundColor, 3) 
     $error4 = @error 
     MouseMove($Search4[0],$Search4[1]) 
     ;Sleep(Random(300,700)) 

     ;Checks if all color matches 
     If $error1 = 0 And $error2 = 0 And $error3 = 0 And $error4= 0 Then 
     ;Clearing level3 
     Send("{DOWN}") 
     EndIf 
Смежные вопросы