Что нового

Как выйти из цикла хоткеем?

JIN

Новичок
Сообщения
3
Репутация
0
Есть такая часть кода:
Код:
Func All_Warp()
While 1
SearchGate()
Sleep(300)
Warp()
Sleep(1000)
Proprig()
Sleep(1000)
WEnd
EndFunc

и при запуске крутится оно по кругу бесконечно. Хочется как-то его уметь останавливать вручную.
Вызывать по хоткею научился
Код:
HotKeySet("!1", "All_Warp");вызов функции по нажатию альт+1

While 1
    Sleep(100)
WEnd

А вот завершать - искал, искал... нифига не нешел, уже голова пухнет =(
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 596
Репутация
938
Код:
HotKeySet("!1", "wqwq")
Global $qwqw = 1

qwqw()

Func qwqw()
    While $qwqw = 1 
        ToolTip(0)
    WEnd
    MsgBox(0,0,0)
EndFunc

Func wqwq()
    $qwqw = 0
EndFunc
 
Автор
JIN

JIN

Новичок
Сообщения
3
Репутация
0
Блин, видимо придётся еще раз спрашивать =(
Приведённый пример отдельно работает, а вот у меня в скрипте не хочет почему-то. Может покажете, где ошибка кроется? Какие-то жесткие ляпы прошу сильно не ругать, второй день всего "autoit" осваиваю и многое еще не понятно.

Где тут ошибка и почему не работает выход по Alt+1 ? Ну и... как правильно надо написать-то.

Код:
HotKeySet("!1", "Exit_All_Warp")
Global $Exit_parm = 1

WinActivate("EVE")

Func SearchGate()
$a = PixelSearch(1290, 100, 1290, 900, 0xabaa08, 20) ; ищем гейт по десту
If Not @error Then
    MouseClick("left", $a[0], $a[1], 1, 5) ; выбираем нужный гейт
Sleep(500)
    MouseClick("left", $a[0], $a[1], 1, 5) ; повторный клик для проявления овера
EndIf
EndFunc

Func Warp()
$b = PixelSearch( 1465, 85, 1475, 115, 0x8c8d8d, 20) ; смотрим, доступен ли режим варпа
If Not @error Then
MouseMove($b[0], $b[1], 5)
;    MouseClick("left", $b[0], $b[1], 1, 5) ; варпаем
EndIf
EndFunc

Func Proprig()
$c = PixelSearch( 1485, 85, 1500, 115, 0x8c8d8d, 10) ; смотрим, доступен ли режим пропрыга
If Not @error Then
MouseMove($c[0], $c[1], 5)
;    MouseClick("left", $c[0], $c[1], 1, 5) ; прыгаем
EndIf
EndFunc

Func All_Warp_parm() ; циклично выполняем проверки и действия
While 1
SearchGate()
Sleep(300)
Warp()
Sleep(1000)
Proprig()
Sleep(1000)
WEnd
EndFunc

Func All_Warp() ; проверяем, нажато ли сочетание клавиш Alt+1
    While $Exit_parm = 1
        All_Warp_parm()
    WEnd
    MsgBox(0,0,"цикл завершен")
EndFunc

Func Exit_All_Warp() ; отключаем цикл по нажатию Alt+1
    $Exit_parm = 0
EndFunc

All_Warp() ; выполняем весь скрипт
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 596
Репутация
938
твой цикл не имеет условия выхода
 

Khaibit

Знающий
Сообщения
79
Репутация
18
Код:
HotKeySet("!1", "Exit_All_Warp")
Global $Exit_parm = 1

WinActivate("EVE")

Func SearchGate()
$a = PixelSearch(1290, 100, 1290, 900, 0xabaa08, 20) ; ищем гейт по десту
If Not @error Then
    MouseClick("left", $a[0], $a[1], 1, 5) ; выбираем нужный гейт
Sleep(500)
    MouseClick("left", $a[0], $a[1], 1, 5) ; повторный клик для проявления овера
EndIf
EndFunc

Func Warp()
$b = PixelSearch( 1465, 85, 1475, 115, 0x8c8d8d, 20) ; смотрим, доступен ли режим варпа
If Not @error Then
MouseMove($b[0], $b[1], 5)
;    MouseClick("left", $b[0], $b[1], 1, 5) ; варпаем
EndIf
EndFunc

Func Proprig()
$c = PixelSearch( 1485, 85, 1500, 115, 0x8c8d8d, 10) ; смотрим, доступен ли режим пропрыга
If Not @error Then
MouseMove($c[0], $c[1], 5)
;    MouseClick("left", $c[0], $c[1], 1, 5) ; прыгаем
EndIf
EndFunc

Func All_Warp_parm() ; циклично выполняем проверки и действия
While $Exit_parm = 1
SearchGate()
Sleep(300)
Warp()
Sleep(1000)
Proprig()
Sleep(1000)
WEnd
EndFunc

Func Exit_All_Warp() ; отключаем цикл по нажатию Alt+1
    $Exit_parm = 0
EndFunc

All_Warp_parm() ; выполняем весь скрипт
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 596
Репутация
938
Можно было дать человеку и подумать, это же задача для первоклассника
 
Автор
JIN

JIN

Новичок
Сообщения
3
Репутация
0
О, спасибо большое =)

ЗЫ
Я увидел, как оно работает, подумал и понял чуть больше, чем знал раньше, так что нормально всё =)
 
Верх