1

Тема: AHK: PixelSearch. Прекращение поиска

Есть вот такой поисковик пикселей, но есть небольшая сложность. Не могу придумать как остановить поиск после 3-х неудачных обнаружения пикселя. Т.е. Скрипт мониторит область и видит пиксель, после исчезновения пикселя нажимает кнопку, пиксель появляется снова. Периодически после нажатия кнопки пиксель не восстанавливается, и скрипт опять нажимает кнопку, без вмешательства пользователя пиксель не появится. Вот тут и надо остановить выполнение скрипта, после 3-х неудачный попыток обнаружения пикселя.

F1::
CoordMode, Pixel
SetTimer, Pix, 100
a := !a
	if !a
	{
		SetTimer, Pix, Off
		Return
	}
Return
Pix:
PixelSearch,,, 100, 100, 110, 110, 0xB62410, 70, RGB
If !ErrorLevel
	Return
Else
	{
		Send {sc30}
		Sleep 1000
	}
Return

2 (изменено: Oomniq, 2016-11-27 11:23:02)

Re: AHK: PixelSearch. Прекращение поиска

Может быть так?


i:=0 ;в безопасном месте скрипта обнулить переменную, если предусматривается многократный перезапуск программы
F1::
CoordMode, Pixel
SetTimer, Pix, 100
a := !a
	if !a
	{
		SetTimer, Pix, Off
		Return
	}
Return
Pix:
PixelSearch,,, 100, 100, 110, 110, 0xB62410, 70, RGB
If !ErrorLevel
	Return
Else
	{
		i++ ;счётчик неудачных попыток
		Send {sc30}
		Sleep 1000
	}
if i=3
exitapp
Return

Если не нужно, чтобы скрипт на третий раз нажимал кнопку, достаточно

if i=3
exitapp

поставить перед Send.

3

Re: AHK: PixelSearch. Прекращение поиска

Oomniq
Не совсем, вот так у меня лучше работает. Спасибо за идею.

F1::
CoordMode, Pixel
SetTimer, Pix, 100
a := !a
	if !a
	{
		SetTimer, Pix, Off
		Return
	}
Return
Pix:
PixelSearch,,, 100, 100, 110, 110, 0xB62410, 70, RGB
If !ErrorLevel
	i:=0
Else
	{
		i++ ;счётчик неудачных попыток
		Send {sc30}
		Sleep 1000
	}
if i=3
exitapp
Return