1

Тема: AHK:Проблема с частой ротацией картинок в координатах ImageSearch

Здравствуйте.

Возникла проблема с ImageSearch, изучил кучу материала, но ответа не нашел, прошу помочь разобраться.
Имеются две панели с кнопками (скиллами), на каждой из которых - свои иконки. Переключение панелей визуально анимировано как перелистывание, т.е. замена одной на другую.
Привязка клавиш к кнопкам на панелях идентичная. Если панель не переключать, скрипт выполняется корректно. Но, если происходит частое переключение панелей при очень частом нажатии vk45, скрипт перестает работать. Причем, перезапуск скрипта не решает проблему, скрипт продолжает корректно работать только если если отпустить вообще все клавиши и произвести смену панели. 


#SingleInstance Force
#NoEnv
SetWorkingDir, С:\test\
CoordMode, Pixel
Menu, Tray, Icon, C:\test\ico\test.ico, 1

#IfWinActive TEST

~*vk45::
loop
{
if not GetKeyState("vk45", "P")
	break
ImageSearch, Px, Py, 1046, 1005, 1076, 1034, *75 image_1.bmp
ImageSearch, Px, Py, 838, 1005, 867, 1034, *75 image_2.bmp
	if (ErrorLevel = 1)
{
ImageSearch, Px, Py, 838, 1005, 867, 1034, *75 image_3.bmp
	if (ErrorLevel = 1)
	Return
		else
	Send {F8}
continue
}
}

2 (изменено: Woxx, 2018-01-07 20:42:48)

Re: AHK:Проблема с частой ротацией картинок в координатах ImageSearch

Переделал под PixelSearch, вроде проблема с полным зависанием работы скрипта решилась, но при запуске нескольких аналогичных проверок, скрипт просто захлебывается, начинает тормозить. Полагаю, предыдущий цикл не успевает завершиться и останавливается время работы последнего.
Подскажите можно избежать спама, необходимо 1 нажатие = запуск 1 проверки.


#IfWinActive ahk_class TEST
#SingleInstance ignore
#MaxHotkeysPerInterval 9000
Menu, Tray, Icon, D:\test\ico\1.ico, 1

~*vk45::
While GetKeyState("vk45", "P")
{
PixelSearch, Px, Py, 802, 1018, 802, 1018, 0xFFFFFF, Fast ; Проверка номера панели
	if (ErrorLevel = 1)
{
PixelSearch, Px, Py, 955, 1030, 955, 1030, 0xFFFFFF, Fast ; Пиксель, подтверждающий что скилл_1 на откате
PixelSearch, Px, Py, 1059, 1029, 1059, 1029, 0xFFFFFF, Fast ; Пиксель, подтверждающий что скилл_1 на откате
	if (ErrorLevel = 0)
{
PixelSearch, Px, Py, 851, 1030, 851, 1030, 0xFFFFFF, Fast ; Отсутствие пикселя, подтверждающего откат скилла_3
	if (ErrorLevel = 1)
	Send {F8}
Return
}
}
}

3

Re: AHK:Проблема с частой ротацией картинок в координатах ImageSearch

Woxx, sleep 100(или меньше) вставьте в цикл или таймер используйте- должен перестать тормозить.