Тема: AHK: Возврат к метке в коде
~3::
IfWinActive, Name
{
if (lock_3 = 0 && shiftkey = 0 && winkey = 1)
{
lock_3 = 1
PixelSearch,,, 400 , 1070 , 400 , 1070 , 0x1CC3F3, 2, fast
if ErrorLevel = 1
RE_TRY:
{ ; 1 ОТКРЫТИЕ
PixelSearch,,, 122 , 122 , 122 , 122 , 0x8D8414, 9, fast
if (ErrorLevel = 1 || sell != 1)
{ ; OPEN
if (mustang = 5 && sell = 5)
{
SendInput 12
}
Gosub RE_TRY
} ; CLOSE
if (ErrorLevel = 0 && sell = 1)
{ ; 2 ОТКРЫТИЕ
;Loop 1
;{ ; 3 ОТКРЫТИЕ
;; MODE 1
if (mustang = 5 && mode = 1) ;[mode = 1]
{
Send 7
sleep, 20
Send 7
sleep, 20
Send 7
sleep, 20
Send 7
if (GetKeyState("XButton1","P")=0)
sleep, 1320
if (GetKeyState("XButton1","P")=0)
Send 7
sleep, 150
Send {vk0x4B}
}
;; MODE 0
if (mustang = 5 && mode = 0) ;[mode = 0]
{
Send 7
sleep, 20
Send 7
sleep, 20
Send 7
sleep, 20
Send 7
sleep, 20
Send 7
sleep, 150
Send {vk0x4B}
}
;} ; 3 ЗАКРЫТИЕ
} ; 2 ЗАКРЫТИЕ
} ; 1 ЗАКРЫТИЕ
}
}
Return
Данный вариант крашит скрипт и компьютер зависает пока полностью не отрубит скрипт.
Я пытаюсь сделать, чтобы после выполнения условий под (ErrorLevel = 1 || sell != 1) скрипт выполнял условия под (ErrorLevel = 0 && sell = 1), либо как в этом примере видно - после выполнения (ErrorLevel = 1 || sell != 1) переходил к метке и уже выполнял (ErrorLevel = 0 && sell = 1).
*Когда скрипт выполняет действия из if (ErrorLevel = 1 || sell != 1) , то ErrorLevel становится равен 0, это по программе так (от пикселя, он меняется после ввода цифр), но, чтобы выполнить действия из ErrorLevel = 0 нужно еще раз нажать кнопку старта (3) так как автоматом скрипт не переходит после действий ErrorLevel = 1 на ErrorLevel = 0.
Нужно, чтобы за одно нажатие 3 код полностью работал, а не за 2 нажатия.
В коде еще встречается if (GetKeyState("XButton1","P")=0). Пытаюсь сделать что-то типа break, чтобы условия дальше не выполнялись если нажал XButton1, но тоже пока безуспешно.
P.S.: Если честно, то всю голову сломал, не понимаю в чем проблема.