1 (изменено: Ed11, 2011-12-29 00:05:07)

Тема: AHK: как сделать выполнение кода постоянным в течение работы скрипта?

Как сделать выполнение этого кода постоянным на протяжении всего времени работы скрипта?
Сейчас код выполняется 1 раз, и после этого скрипт прекращает свою работу.

Loop
    {
    CoordMode, Mouse, Screen
    PixelSearch, OutX, OutY, 333, 281, 337, 289, 0x1E96FF 
    if ErrorLevel=0
    goto A
    }    
    
    A:
    SetTimer, AT, -4000

    AT:
    {
    PixelSearch, OutX1, OutY1, 268, 281, 271, 284, 0x1E96FF
        if ErrorLevel=0
        {
        MouseClick, LEFT, 572, 303, 1
        MsgBox, , T, ON !, 0.5
        }
    }

Будет ли работать такой код одновременно для 4 участков экрана, заданных в качестве областей поиска для функции PixelSearch ? Если да, то как это задать в коде?

2 (изменено: creature.ws, 2011-12-29 01:48:16)

Re: AHK: как сделать выполнение кода постоянным в течение работы скрипта?

На форуме появилась мода использовать goto внутри цикла ^^ Loop, Continue, Break.
Persistent
Одновременность относительна,  явно одновременно - при запуске 4-х модифицированных экземпляров скрипта.
Область поиска задаётся координатами области поиска PixelSearch

3 (изменено: Ed11, 2011-12-29 08:00:54)

Re: AHK: как сделать выполнение кода постоянным в течение работы скрипта?

Так лучше будет?

#Persistent

Loop
{
    CoordMode, Mouse, Screen
    PixelSearch, OutX, OutY, 333, 281, 337, 289, 0x1E96FF 
        if ErrorLevel=0
        SetTimer, AT, -4000

    AT:
    {
        PixelSearch, OutX1, OutY1, 268, 281, 271, 284, 0x1E96FF
           if ErrorLevel=0
           {
              MouseClick, LEFT, 572, 303, 1
              MsgBox, , T, ON !, 0.5
           }
    }    

}

4

Re: AHK: как сделать выполнение кода постоянным в течение работы скрипта?


#Persistent

Loop 
{                                                             ; начало цикла
    CoordMode, Mouse, Screen                                     ; первое действие цикла
    PixelSearch, OutX, OutY, 333, 281, 337, 289, 0x1E96FF        ; второе действие цикла
    if ErrorLevel=0                                              ; анализ содержимого переменной
       SetTimer, AT, -4000                                          ; условное действие

    AT:                                                          ; имя метки находящейся в теле цикла
    {                                                            ; первая ненужная скобочка
        PixelSearch, OutX1, OutY1, 268, 281, 271, 284, 0x1E96FF  ; третье действие цикла
           if ErrorLevel=0                                       ; анализ содержимого переменной
           {                                                        ; начало блока 
              MouseClick, LEFT, 572, 303, 1                         ; условное действие 1
              MsgBox, , T, ON !, 0.5                                ; условное действие 2
           }                                                        ; конец блока
    }                                                            ; вторая ненужная скобочка

}                                                             ; конец цикла

Вам нужен код работающий так как написано? — значит лучше.

5 (изменено: Ed11, 2011-12-29 19:51:00)

Re: AHK: как сделать выполнение кода постоянным в течение работы скрипта?

Спасибо за разъяснение.

Как мне добиться от скрипта таких действий?

Мне нужно, чтобы:
1) Постоянно, в течение всего времени работы скрипта, осуществлялся поиск цвета 0x1E96FF в заданной области:

CoordMode, Mouse, Screen
PixelSearch, OutX, OutY, 285, 296, 287, 297, 0x1E96FF, Fast

2) Затем, если найден цвет 0x1E96FF, то надо запустить таймер на 10сек.

3) Потом через 10 сек. надо опять проверить, есть ли цвет 0x1E96FF в той же области.

4) Если цвет 0x1E96FF там есть, надо только 1 раз выполнить действия

MouseClick, LEFT, 572, 303, 1
MsgBox, , T, ON !, 0.5