Что нового

[Автоматизация] Вложенный цикл, как прописать условие если не..

kvitnitskiy

Новичок
Сообщения
56
Репутация
0
Доброго времени суток.
помогите победить следующее.
есть скрипт, который ищет пиксел в указанном диапазоне, если не находит - то кликает на кнопку далее, пока не найдет, в случае если находит - перемещает на него курсор.

Код:
HotKeySet("{ESC}", "Terminate")
Func Terminate()
    Exit 0
 EndFunc

HotKeySet("{F1}", "_Pause") ;Пауза
HotKeySet("{F2}", "_NotPause") ;Продолжить
Global $Paused

Func _Pause() ;функция паузы (остановки скрипта)
    $Paused = True
    While $Paused
        Sleep(1000)
    WEnd
EndFunc ;конец функции
Func _NotPause() ;функция для продолжения работы скрипта
    $Paused = False
EndFunc ;конец функции

 for $i=1 to 100
$Color = 0x75CBFF ;  цвет
$Dip_Col =0 ;Допустимое несовпадение цвета от указанного  
While 1
    $Rezult = PixelSearch(590, 700, 990,720, $Color, $Dip_Col) ; ищет пиксель
      sleep(2000)
    If  @error   Then MouseClick("left", 1064, 693) ; Здесь добавить условие если не ошибка то выполнить условие  MouseMove ($p[0], $p[1],10) и далее..
	
	
WEnd
next
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Код:
$Rezult = PixelSearch(590, 700, 990,720, $Color, $Dip_Col) ; ищет пиксель     
switch @error
case 1
mousemove
case 0
mouseclick
endswitch
 

DeLeTeSHift

Знающий
Сообщения
46
Репутация
9
Код:
HotKeySet("{ESC}", "Terminate")

HotKeySet("{F1}", "Pause")
Global $Paused

While 1
$cor = PixelSearch(x1, y1, x2, y2, color) ;область поиска
   If @error Then
      MouseClick("", x, y) ;если не нашёл жмёт далее
   Else 
	  MouseMove($cor[0], $cor[1]) ;если нашёл наводит на пиксель
	  ExitLoop                    ;и выходит из цыкла
   EndIf
WEnd

Func Terminate()
    Exit 0
EndFunc
 
Func Pause()
   $Paused = Not $Paused
   While $Paused
	  Sleep(50)
	  ToolTip("Пауза")
   WEnd
ToolTip("")
EndFunc
 
Автор
K

kvitnitskiy

Новичок
Сообщения
56
Репутация
0
DeLeTeSHift, спасибо большое, то что надо .
полным скрипт выглядит так , и как часы работает
Код:
HotKeySet("{ESC}", "Terminate")

HotKeySet("{F1}", "Pause")
Global $Paused
Func Terminate()
    Exit 0
EndFunc

Func Pause()
   $Paused = Not $Paused
   While $Paused
      Sleep(50)
      ToolTip("Пауза")
   WEnd
ToolTip("")
EndFunc

for $count = 1 to 10

While 1
$cor = PixelSearch( 460, 200, 1150, 720, 0x75CBFF);область поиска
   If @error Then
      MouseClick("left", 1064, 693) ;если не нашёл жмёт далее
	  Sleep("1000")
   Else
      MouseMove($cor[0], $cor[1]) ;если нашёл наводит на пиксель
      ExitLoop                    ;и выходит из цыкла
   EndIf
WEnd
;Sleep(2000)
	$cor2 = PixelSearch( 471, 301, 1097, 618, 0x75CBFF)
	MouseMove($cor2[0], $cor2[1],1)
	MouseClick("left")
	Sleep (1000)
	MouseClick("left", 847, 532)
		Sleep (500)


next
 
Автор
K

kvitnitskiy

Новичок
Сообщения
56
Репутация
0
Как еще добавить условие, - если в цикле не найден нужный пиксел например после 10 нажатий( MouseClick("left", 1064, 693)), цикл прерывался.
вот в этом месте
Код:
While 1
$cor = PixelSearch( 460, 200, 1150, 720, 0x75CBFF);область поиска
   If @error Then
      MouseClick("left", 1064, 693) ;если не нашёл жмёт далее
      Sleep("1000")
   Else
      MouseMove($cor[0], $cor[1]) ;если нашёл наводит на пиксель
      ExitLoop                    ;и выходит из цыкла
   EndIf
WEnd
 

lewel

Новичок
Сообщения
12
Репутация
0
Код:
Local $c = 0
While 1
$cor = PixelSearch( 460, 200, 1150, 720, 0x75CBFF);область поиска
   If @error Then
      MouseClick("left", 1064, 693) ;если не нашёл жмёт далее
      Sleep("1000")
      $c = $c + 1
      If $c > 10 Then ExitLoop EndIf
   Else
      MouseMove($cor[0], $cor[1]) ;если нашёл наводит на пиксель
      ExitLoop                    ;и выходит из цыкла
   EndIf
WEnd
 
Верх