1

Тема: AHK: Ожидать появление пикселя нужного цвета

Здравствуйте, у меня есть такой вопрос. Есть команда pixelsearch, у неё есть 2 условия, что будет происходить в случае, когда нужный цвет не найден(if error level) или же, если нужен цвет найден(else). Так вот, возможно ли дополнить в условие команду, чтобы скрипт ждал пока пиксель нужного цвета появится в определённом месте, определённое кол-во времени, а когда пиксель появился, скрипт выполняет команду(else)? Если да, то подскажите, как оформить этот блок и куда ставить это условие. Читал что то похожее на эту тему с использованием loop, но мне кажется, что это не то, что я ищу. Заранее спасибо.

2 (изменено: Taveron, 2021-11-23 08:51:50)

Re: AHK: Ожидать появление пикселя нужного цвета

PixelSearch делает одну проверку и идёт дальше. Чтобы проверка была постоянной, команду нужно поместить в цикл, например Loop. Если поиск должен проводиться определённое кол-во времени, то можно ограничить кол-во итераций цикла или использовать A_TickCount для большей точности.

3

Re: AHK: Ожидать появление пикселя нужного цвета

Спасибо, попробую эти способы.Taveron

4

Re: AHK: Ожидать появление пикселя нужного цвета

Taveron, Еще один вопрос есть, вот есть командa Pixelsearch, с двумя условиями, if ErrorLevel(нужный цвет не найден) и else(нужный цвет найден). Допустим, что в условии else есть какое-либо действие, можно ли поставить в условие ErrorLevel(если нужный цвет не найден), повторить команду PixelSearch, чтобы пока нет нужного цвета, скрипт выполнял условие ErrorLevel, т.е. повторялась команда PixelSearch? Loop для команды выше ставить же нельзя?..

5

Re: AHK: Ожидать появление пикселя нужного цвета

С трудом понимаю ход ваших мыслей.
Примерно так мог бы выглядеть зацикленный поиск пикселя:


Loop
{
	PixelSearch, Var_X, Var_Y, X1, Y1, X2, Y2, 0x46E27F,, Fast RGB
	if ErrorLevel = 0	; Если требуемый цвет найден, то:
	{
		Какой-то код
		...
		...
	}
}

6 (изменено: Andrey, 2021-11-23 20:07:45)

Re: AHK: Ожидать появление пикселя нужного цвета

PixelSearch, Var_X, Var_Y, X1, Y1, X2, Y2, 0x46E27F,, Fast RGB
	if ErrorLevel
. . .   ; команда, при которой команда PixelSearch будет повторять свое действие, если цвет не найден, до тех пор, пока нужный цвет не будет найден.
	else 
---   ; какое либо действие, которое будет происходить, когда нужный цвет найден.

Я имею ввиду, чтобы вставить команду по типу return, restart, try again и т.п.(просто взял для примера, даже если таких команд нет, чтобы был понятен смысл) на место точек, чтобы эта команда заставляла выполняться команду PixelSearch еще раз, пока в пикселе не появится нужный цвет. Возможно ли это, или же только с loop и SetTimer?
P.s. старался объяснить максимально понятно, что я хочу...
Taveron

7

Re: AHK: Ожидать появление пикселя нужного цвета

Loop цикл можно вставить после неудачного поиска либо таймер. Пробуйте, иначе так и будете спрашивать и ничему не научитесь.

Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

8

Re: AHK: Ожидать появление пикселя нужного цвета

Andrey, чем вас смущает Loop?
В варианте, который я написал выше, поиск будет выполняться пока не будет найден заданный пиксель. Если нужно выйти из цикла после нахождения пикселя, то используйте команду Break.

9

Re: AHK: Ожидать появление пикселя нужного цвета

Хорошо, спасибо за помощь, буду тестировать и пробовать.