Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: Viktor77 on April 27, 2021, 04:46:03 PM

Title: цикл
Post by: Viktor77 on April 27, 2021, 04:46:03 PM
подскажите как можно в таком цикле добавить еще условие, если условие не выполняется в течении 10 минут, выйти и выполнять дальше скрипт.
Code: (clickermann) [Select]
$check = 0
WHILE($check = 0)
   GETSCREEN
   COLORMODE(8)
   IF_PICTURE_IN (0,0,$_xmax,$_ymax, "1.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      wait(1000)
      GETSCREEN
      COLORMODE(8)
      IF_PICTURE_IN (0,0,$_xmax,$_ymax, "2.bmp", -1, 100)
         $check=1
         MOVE($_return1, $_return2)
         WAITMS(3000)
         GETSCREEN
         COLORMODE(8)
         IF_PICTURE_IN (0,0,$_xmax,$_ymax, "3.bmp", -1, 100)
            LCLICK($_return1, $_return2)
            wait(1000)
         END_IF
      else
         GETSCREEN
         COLORMODE(8)
         IF_PICTURE_IN (0,0,$_xmax,$_ymax, "4.bmp", -1, 100)
            LCLICK($_return1, $_return2)
            wait(1000)
         END_IF
      END_IF
   END_IF
END_CYC
HALT
Title: Re: цикл
Post by: Vint on April 27, 2021, 11:01:44 PM
Какое условие не выполняется?
Title: Re: цикл
Post by: Viktor77 on May 01, 2021, 11:50:11 PM
Какое условие не выполняется?
чтобы выходил из цикла через 10 минут, и продолжал дальше скрипт
Title: Re: цикл
Post by: Vint on May 04, 2021, 08:12:43 AM
чтобы выходил из цикла через 10 минут, и продолжал дальше скрипт
Это другой, нормальный вопрос, а то условия непонятные.
Code: (clickermann) [Select]
$time = $_time_t + 600
WHILE($time > $_time_t)
    GETSCREEN
    COLORMODE(8)
    IF_PICTURE_IN(0,0,$_xmax,$_ymax, "1.bmp")
        LCLICK($_return1, $_return2)
        wait(1000)
        GETSCREEN
        COLORMODE(8)
        IF_PICTURE_IN(0,0,$_xmax,$_ymax, "2.bmp")
            $time = 0
            MOVE($_return1, $_return2)
            WAITMS(3000)
            GETSCREEN
            COLORMODE(8)
            IF_PICTURE_IN(0,0,$_xmax,$_ymax, "3.bmp")
                LCLICK($_return1, $_return2)
                wait(1000)
            END_IF
        else
            GETSCREEN
            COLORMODE(8)
            IF_PICTURE_IN(0,0,$_xmax,$_ymax, "4.bmp")
                LCLICK($_return1, $_return2)
                wait(1000)
            END_IF
        END_IF
    END_IF
END_CYC
Title: Re: цикл
Post by: Viktor77 on May 04, 2021, 11:53:16 PM
Какое условие не выполняется?
Добрый вечер. а вот подскажите как реализовать такое: есть 5 таймеров со своими скриптами, и как можно сделать чтоб независимо от запуска, шла проверка времени. т.е. запустил скрипт 15,00 и стартовало с 15,10 т.е. с 3 таймера

Code: (clickermann) [Select]
$time_check = 0
WHILE($time_check = 0) // Цикл сдерживает выполнение до указанного времени
   IF(($_time_h = 10)&($_time_m = 10))
      $time_check = 1
      // скрипт 1
     
   END_IF
END_CYC

$time_check = 0
WHILE($time_check = 0) // Цикл сдерживает выполнение до указанного времени
   IF(($_time_h = 12)&($_time_m = 10))
      $time_check = 1
      // скрипт 2
     
   END_IF
END_CYC

$time_check = 0
WHILE($time_check = 0) // Цикл сдерживает выполнение до указанного времени
   IF(($_time_h = 15)&($_time_m = 10))
      $time_check = 1
      // скрипт 3
     
   END_IF
END_CYC

$time_check = 0
WHILE($time_check = 0) // Цикл сдерживает выполнение до указанного времени
   IF(($_time_h = 17)&($_time_m = 10))
      $time_check = 1
      // скрипт 4
     
   END_IF
END_CYC

$time_check = 0
WHILE($time_check = 0) // Цикл сдерживает выполнение до указанного времени
   IF(($_time_h = 19)&($_time_m = 10))
      $time_check = 1
      // скрипт  5
     
   END_IF
END_CYC
HALT
Title: Re: цикл
Post by: Vint on May 05, 2021, 12:47:37 PM
Добрый вечер. а вот подскажите как реализовать такое: есть 5 таймеров со своими скриптами, и как можно сделать чтоб независимо от запуска, шла проверка времени. т.е. запустил скрипт 15,00 и стартовало с 15,10 т.е. с 3 таймера

Code: (clickermann) [Select]
$time_check = 0
WHILE($time_check = 0) // Цикл сдерживает выполнение до указанного времени
   IF(($_time_h = 10)&($_time_m = 10))
      $time_check = 1
      // скрипт 1
   END_IF
END_CYC

$time_check = 0
WHILE($time_check = 0) // Цикл сдерживает выполнение до указанного времени
   IF(($_time_h = 12)&($_time_m = 10))
      $time_check = 1
      // скрипт 2
     
   END_IF
END_CYC

$time_check = 0
WHILE($time_check = 0) // Цикл сдерживает выполнение до указанного времени
   IF(($_time_h = 15)&($_time_m = 10))
      $time_check = 1
      // скрипт 3
     
   END_IF
END_CYC

$time_check = 0
WHILE($time_check = 0) // Цикл сдерживает выполнение до указанного времени
   IF(($_time_h = 17)&($_time_m = 10))
      $time_check = 1
      // скрипт 4
     
   END_IF
END_CYC

$time_check = 0
WHILE($time_check = 0) // Цикл сдерживает выполнение до указанного времени
   IF(($_time_h = 19)&($_time_m = 10))
      $time_check = 1
      // скрипт  5
     
   END_IF
END_CYC
HALT

Чтобы такое сделать нужно всего лишь каждое утро выпивать одну ложку...  не писать лишнего.
Вот зачем здесь циклы? Они ведь даже подписаны -  "сдерживает". Понятно, что если не нужно сдерживать, то и циклы не нужны.

Code: (clickermann) [Select]
IF(($_time_h = 10)&($_time_m = 10))
    // скрипт 1   
END_IF

IF(($_time_h = 12)&($_time_m = 10))
    // скрипт 2   
END_IF

IF(($_time_h = 15)&($_time_m = 10))
    // скрипт 3   
END_IF

IF(($_time_h = 17)&($_time_m = 10))
    // скрипт 4   
END_IF

IF(($_time_h = 19)&($_time_m = 10))
    // скрипт  5   
END_IF
WAIT(1)
Title: Re: цикл
Post by: Viktor77 on May 05, 2021, 03:38:11 PM
Чтобы такое сделать нужно всего лишь каждое утро выпивать одну ложку...  не писать лишнего.
Вот зачем здесь циклы? Они ведь даже подписаны -  "сдерживает". Понятно, что если не нужно сдерживать, то и циклы не нужны.
Code: (clickermann) [Select]
IF(($_time_h = 10)&($_time_m = 10))
// скрипт 1
END_IF

IF(($_time_h = 12)&($_time_m = 10))
// скрипт 2
END_IF

IF(($_time_h = 15)&($_time_m = 10))
// скрипт 3
END_IF

IF(($_time_h = 17)&($_time_m = 10))
// скрипт 4
END_IF

IF(($_time_h = 19)&($_time_m = 10))
// скрипт  5
END_IF
WAIT(1)

будет ли работать такой скрипт корректно? в скриптах 1-5 присутствуют циклы.
Code: (clickermann) [Select]
IF(($_time_h = 10)&($_time_m = 10))
   // скрипт 1
   $check2=0
   WHILE($check2=0)
      GETSCREEN
      colormode(8)
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "111.bmp", -1, 100)
         LCLICK($_return1+30, $_return2+10)
         WAITMS(1000)
         картинка(0,0, $_xmax,$_ymax, "112.bmp",2,2, 1000,8)
         картинка(0,0, $_xmax,$_ymax, "113.bmp",2,2, 1000,8)
         GETSCREEN
         colormode(8)
         IF_PICTURE_IN (472,473,557,510, "235.bmp", -1, 100)
            $check2=1
            move($_return1, $_return2)
            WAITMS(1000)
         END_IF
      END_IF
   END_CYC
END_IF

IF(($_time_h = 12)&($_time_m = 10))
   // скрипт 2
   GETSCREEN
   COLORMODE(8)
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "88.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(3000)
   END_IF
   GETSCREEN
   COLORMODE(8)
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "89.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(3000)
   END_IF
   GETSCREEN
   COLORMODE(8)
   IF_PICTURE_IN (0,0,$_xmax,$_ymax, "90.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(3000)
   END_IF
   WAITMS(1000)
   $time_check = 0
   WHILE($time_check = 0)
      IF(($_time_h = 12)&($_time_m = 30))
         $time_check = 1
         клик(1271,785,5000)
         клик(521,780,3000)
         $check = 0
         WHILE($check = 0)
            GETSCREEN
            COLORMODE(8)
            IF_PICTURE_IN (0,0, $_xmax,$_ymax, "101.bmp", -1, 100)
               $check = 1
               MOVE($_return1, $_return2)
               WAITMS(3000)
            ELSE
               WAITMS(50)
            END_IF
         END_CYC
         GETSCREEN
         COLORMODE(8)
         IF_PICTURE_IN (0,0, $_xmax,$_ymax, "102.bmp", -1, 100)
            LCLICK($_return1+10, $_return2+8)
            WAITMS(3000)
            GETSCREEN
            COLORMODE(8)
            IF_PICTURE_IN (0,0, $_xmax,$_ymax, "кт.bmp", -1, 100)
               LCLICK($_return1+30, $_return2+10)
               WAITMS(3000)
            END_IF
         END_IF
         WAITMS(1000)
         клик(445,780,3000)
         $check = 0
         WHILE($check = 0)
            GETSCREEN
            COLORMODE(8)
            IF_PICTURE_IN (0,0, $_xmax,$_ymax, "колесо.bmp", -1, 100)
               $check = 1
               MOVE($_return1, $_return2)
               WAITMS(3000)
            ELSE
               WAITMS(50)
            END_IF
         END_CYC
         GETSCREEN
         COLORMODE(8)
         IF_PICTURE_IN (0,0, $_xmax,$_ymax, "галка.bmp", -1, 100)
            LCLICK($_return1+10, $_return2+8)
            WAITMS(3000)
            GETSCREEN
            COLORMODE(8)
            IF_PICTURE_IN (0,0, $_xmax,$_ymax, "крутить колесо захват.bmp", -1, 100)
               LCLICK($_return1+30, $_return2+10)
               WAITMS(3000)
            END_IF
         END_IF
         WAITMS(1000)
      END_IF
   END_CYC
END_IF

IF(($_time_h = 15)&($_time_m = 10))
   // скрипт 3
END_IF

IF(($_time_h = 17)&($_time_m = 10))
   // скрипт 4
END_IF

IF(($_time_h = 19)&($_time_m = 10))
   // скрипт  5
END_IF
WAIT(1)
Title: Re: цикл
Post by: Vint on May 05, 2021, 04:36:50 PM
И пусть присутствуют. На самом деле это уже совсем другой вопрос - как обеспечить поочерёдную/одновременную работу нескольких веток скрипта.
Если каждый скрипт при данных параметрах таймеров будет работать не более 1ч 59 м 58 сек то всё будет нормально.
Если же, к примеру, скрипт 1 не дождётся 111.bmp или 235.bmp то ясное дело на этом моменте и зациклится. Но точно также он себя поведёт и при первом варианте таймера - сожиданием.
Если такой опасности нет, то всё нормально, если есть, нужно предусмотреть это и ограничить внутренние циклы по времени.

Или в зависимости от целей, может нельзя их ограничивать и дать им работать параллельно. Тогда нужно разбить по потокам, но там свои проблемы сделать так, чтоб они друг другу не мешали.