1 (изменено: Woxx, 2017-12-01 13:49:47)

Тема: ErrorLevel=1 пропускает ошибку ImageSearch

Здравствуйте!
Задача скрипта, при нажатии кнопки "E", найти соответствующую картинку на экране, если картинка отсутствует, нажимать кнопку "5".
Ссылка на изображение, на котором происходит поиск
Ссылка на искомую картинку, сохранена paint'ом в 24-бит bmp:

Проблема заключается в том, что после появления картинки, скрипт продолжает работать, т.е. при нажатие на "E", прожимается "5", хотя "ErrorLevel = 1", этого позволять не должен. картинка не прозрачная, никакими другими элементами не перекрывается. К слову идентичный скрипт, но через "ErrorLevel = 0" прекрасно работает с основной панелью скиллов (внизу, по середине экрана), т.е. без "прострелов".

Сам скрипт:


#SingleInstance Force
#NoEnv
SendMode Input
CoordMode Pixel

~*vk45::
#MaxHotkeysPerInterval 9000
loop
{
if not GetKeyState("vk45", "P")
	break
{
ImageSearch, FoundX, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, D:\T\bb.bmp
	if ErrorLevel = 1
		{
		Send {vk35}
		Return
		}
}
continue
}

Возможно это связано с тем, что поиск иконки ведется по всей поверхности, т.е. 1920х1080 и в виду некого тайминга, ImageSearch не успевает найти нужную область на экране, осле чего принимает решение что ошибки нет. Поэтому решил привязаться к конкретным координатам:

ImageSearch, Px, Py, 1860, 1020, 1920, 1080, D:\T\bb.bmp

К сожалению такой вариант не решил проблему.
Подскажите в каком направлении искать решение?

2 (изменено: stealzy, 2017-12-01 21:28:25)

Re: ErrorLevel=1 пропускает ошибку ImageSearch

Сложно сказать, но попробуйте так:

#SingleInstance Force
#NoEnv
#MaxHotkeysPerInterval 9000
SendMode Input
CoordMode Pixel

#IfWinActive Elder Scrolls Online
~*E::
	; While GetKeyState("vk45", "P") {
		ImageSearch, FoundX, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, D:\TESO\bb.bmp
		if Not (ErrorLevel = 0) ; если не найдена или ошибка поиска
			Send 5
	; }
Return
#If