Author Topic: Помогите сократить скрипт с циклами.  (Read 1849 times)

0 Members and 2 Guests are viewing this topic.

Adlet_Veltman

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Я уже просил о помощи (http://crapware.aidf.org/forum/index.php?topic=3633.0) . Мне попытались помочь, но скрипт работал некорректно. Потом я заменил пару команд и всё заработало, как надо, но появилась новая проблема. Для того, чтобы вы поняли о чём речь, зайдите в тему, которую я прикрепил выше.  При добавлении третьего цикла, который должен выполняться после семиразового выполнения второго цикла, но программа перестала справляться. Т.е. если программе не попадается цвет1(0) сразу, то она долго спускается по скрипту вниз и встаёт(ничего не делает). Как я понял больше 2 уровней условий она не выдерживает. Помогите мне обратно правильно сделать всё с командами "FOR_($a, $a < 9)......END_CYC", либо подскажите, как сделать так, чтобы программа выдержала объём трёх уровней(циклов). Может третий уровень записать иначе или в другом месте?..

Вот как у меня всё получилось с 3 уровнями(невероятно громоздко):
Code: (clickermann) [Select]

DEFINE($aa,0)

start:
GETSCREEN
IF_PIXEL_IN(628,526,662,552, 0)
   LCLICK(500,896)
   WAIT(35)
   INC($aa, 1)
   IF($aa = 14)
      DEFINE($ff, 0)
      LCLICK(688,752)
      start02:
      GETSCREEN
      IF_PIXEL_IN(628,526,662,552, 0)
         LCLICK(500,896)
         WAIT(35)
         INC($ff, 1)
         IF($ff = 7)
            DEFINE($dd, 0)
            LCLICK(688,752)
            start03:
            GETSCREEN
            IF_PIXEL_IN(628,526,662,552, 0)
               LCLICK(500,896)
               WAIT(35)
               INC($dd, 1)
               IF($dd = 7)
                  HALT
               END_IF
               GOTO(start03)
            ELSE
               IF_PIXEL_IN(628,526,662,552, 1710844)
                  LCLICK(500,896)
                  WAIT(35)
                  INC($dd, 1)
                  IF($dd = 7)
                     HALT
                  END_IF
                  GOTO(start03)
               ELSE
                  IF_PIXEL_IN(628,526,662,552,1551428)
                     LCLICK(623,743)
                     WAIT(35)
                     INC($dd = 0)
                     INC($ff = 0)
                     INC($aa = 0)
                     GOTO(start)
                  END_IF
               END_IF
            END_IF
         END_IF
         GOTO(start02)
      ELSE
         IF_PIXEL_IN(628,526,662,552, 1710844)
            LCLICK(500,896)
            WAIT(35)
            INC($ff, 1)
            IF($ff = 7)
               DEFINE($dd, 0)
               LCLICK(688,752)
               start03:
               GETSCREEN
               IF_PIXEL_IN(628,526,662,552, 0)
                  LCLICK(500,896)
                  WAIT(35)
                  INC($dd, 1)
                  IF($dd = 7)
                     HALT
                  END_IF
                  GOTO(start03)
               ELSE
                  IF_PIXEL_IN(628,526,662,552, 1710844)
                     LCLICK(500,896)
                     WAIT(35)
                     INC($dd, 1)
                     IF($dd = 7)
                        HALT
                     END_IF
                     GOTO(start03)
                  ELSE
                     IF_PIXEL_IN(628,526,662,552,1551428)
                        LCLICK(623,743)
                        WAIT(35)
                        INC($dd = 0)
                        INC($ff = 0)
                        INC($aa = 0)
                        GOTO(start)
                     END_IF
                  END_IF
               END_IF
            END_IF
            GOTO(start02)
         ELSE
            IF_PIXEL_IN(628,526,662,552,1551428)
               LCLICK(623,743)
               WAIT(35)
               INC($ff = 0)
               INC($aa = 0)
               GOTO(start)
            END_IF
         END_IF
      END_IF
   END_IF
   GOTO (start)
ELSE
   IF_PIXEL_IN(628,526,662,552, 1710844)
      LCLICK(500,896)
      WAIT(35)
      INC($aa, 1)
      IF($aa = 14)
         DEFINE($ff, 0)
         LCLICK(688,752)
         
         start02:
         GETSCREEN
         IF_PIXEL_IN(628,526,662,552, 0)
            LCLICK(500,896)
            WAIT(35)
            INC($ff, 1)
            IF($ff = 7)
               DEFINE($dd, 0)
               LCLICK(688,752)
               start03:
               GETSCREEN
               IF_PIXEL_IN(628,526,662,552, 0)
                  LCLICK(500,896)
                  WAIT(35)
                  INC($dd, 1)
                  IF($dd = 7)
                     HALT
                  END_IF
                  GOTO(start03)
               ELSE
                  IF_PIXEL_IN(628,526,662,552, 1710844)
                     LCLICK(500,896)
                     WAIT(35)
                     INC($dd, 1)
                     IF($dd = 7)
                        HALT
                     END_IF
                     GOTO(start03)
                  ELSE
                     IF_PIXEL_IN(628,526,662,552,1551428)
                        LCLICK(623,743)
                        WAIT(35)
                        INC($dd = 0)
                        INC($ff = 0)
                        INC($aa = 0)
                        GOTO(start)
                     END_IF
                  END_IF
               END_IF
            END_IF
            GOTO(start02)
         ELSE
            IF_PIXEL_IN(628,526,662,552, 1710844)
               LCLICK(500,896)
               WAIT(35)
               INC($ff, 1)
               IF($ff = 7)
                  DEFINE($dd, 0)
                  LCLICK(688,752)
                  start03:
                  GETSCREEN
                  IF_PIXEL_IN(628,526,662,552, 0)
                     LCLICK(500,896)
                     WAIT(35)
                     INC($dd, 1)
                     IF($dd = 7)
                        HALT
                     END_IF
                     GOTO(start03)
                  ELSE
                     IF_PIXEL_IN(628,526,662,552, 1710844)
                        LCLICK(500,896)
                        WAIT(35)
                        INC($dd, 1)
                        IF($dd = 7)
                           HALT
                        END_IF
                        GOTO(start03)
                     ELSE
                        IF_PIXEL_IN(628,526,662,552,1551428)
                           LCLICK(623,743)
                           WAIT(35)
                           INC($dd = 0)
                           INC($ff = 0)
                           INC($aa = 0)
                           GOTO(start)
                        END_IF
                    END_IF
                 END_IF
               END_IF
               GOTO(start02)
            ELSE
               IF_PIXEL_IN(628,526,662,552,1551428)
                  LCLICK(623,743)
                  WAIT(35)
                  INC($ff = 0)
                  INC($aa = 0)
                  GOTO(start)
               END_IF
            END_IF
         END_IF
      END_IF
      GOTO (start)
   ELSE
      IF_PIXEL_IN(628,526,662,552,1551428)
         WAIT(35)
         $aa = 0
         GOTO (start)
      END_IF
   END_IF
END_IF

HALT
« Last Edit: November 18, 2017, 04:23:12 PM by Adlet_Veltman »

Adlet_Veltman

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Re: Помогите сократить скрипт с циклами.
« Reply #1 on: November 18, 2017, 06:46:01 PM »
безумный квест от фаната GOTO?
а ничего, что у вас в коде 
start02: - двэ метка
start03: - чэтырэ штук!
зачем  сокращать код заведомо кривого скрипта?

Простите за глупейшие ошибки. Я ещё только изучаю Clickermann. Я кажется исправил скрипт, но теперь он срабатывает когда как... Первый раз работал, как и должен был, а потом опять застрял на 1 цикле после повторного запуска позже. Может быть вы найдёте ещё какие-то ошибки. Если я опять неправильно сделал, пожалуйста, укажите на мои ошибки.
Code: (clickermann) [Select]

DEFINE($aa,0)

start:
GETSCREEN
IF_PIXEL_IN(628,526,662,552, 0)
   LCLICK(500,896)
   WAIT(35)
   INC($aa, 1)
   IF($aa = 14)
      DEFINE($ff, 0)
      LCLICK(688,752)
      start02:
      GETSCREEN
      IF_PIXEL_IN(628,526,662,552, 0)
         LCLICK(500,896)
         WAIT(35)
         INC($ff, 1)
         IF($ff = 7)
            DEFINE($dd, 0)
            LCLICK(688,752)
            start03:
            GETSCREEN
            IF_PIXEL_IN(628,526,662,552, 0)
               LCLICK(500,896)
               WAIT(35)
               INC($dd, 1)
               IF($dd = 7)
                  HALT
               END_IF
               GOTO(start03)
            ELSE
               IF_PIXEL_IN(628,526,662,552, 1710844)
                  LCLICK(500,896)
                  WAIT(35)
                  INC($dd, 1)
                  IF($dd = 7)
                     HALT
                  END_IF
                  GOTO(start03)
               ELSE
                  IF_PIXEL_IN(628,526,662,552,1551428)
                     LCLICK(623,743)
                     LCLICK(623,743)
                     WAIT(35)
                     INC($dd = 0)
                     INC($ff = 0)
                     INC($aa = 0)
                     GOTO(start)
                  END_IF
               END_IF
            END_IF
         END_IF
         GOTO(start02)
      ELSE
         IF_PIXEL_IN(628,526,662,552, 1710844)
            LCLICK(500,896)
            WAIT(35)
            INC($ff, 1)
            IF($ff = 7)
               DEFINE($dd, 0)
               LCLICK(688,752)
               GOTO(start03)
            END_IF
            GOTO(start02)
         ELSE
            IF_PIXEL_IN(628,526,662,552,1551428)
               LCLICK(623,743)
               WAIT(35)
               INC($ff = 0)
               INC($aa = 0)
               GOTO(start)
            END_IF
         END_IF
      END_IF
   END_IF
   GOTO (start)
ELSE
   IF_PIXEL_IN(628,526,662,552, 1710844)
      LCLICK(500,896)
      WAIT(35)
      INC($aa, 1)
      IF($aa = 14)
         DEFINE($ff, 0)
         LCLICK(688,752)
         GOTO(start02)       
      END_IF
      GOTO (start)
   ELSE
      IF_PIXEL_IN(628,526,662,552,1551428)
         WAIT(35)
         $aa = 0
         GOTO (start)
      END_IF
   END_IF
END_IF

HALT


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите сократить скрипт с циклами.
« Reply #2 on: November 19, 2017, 08:29:17 AM »
После кликов должны быть задержки, чтоб на экране успело что то измениться и уж потом нужно анализировать.

Code: (clickermann) [Select]
start:
GETSCREEN
IF_PIXEL_IN(628,526,662,552, 0)
   LCLICK(500,896)
   WAIT(35)
   INC($aa, 1)
   IF($aa = 14)
      LCLICK(688,752)
      WAIT(1)
      start02:
      GETSCREEN
      IF_PIXEL_IN(628,526,662,552, 0)
         LCLICK(500,896)
         WAIT(35)
         INC($ff, 1)
         IF($ff = 7)
            LCLICK(688,752)
            WAIT(1)
            start03:
            GETSCREEN
            IF_PIXEL_IN(628,526,662,552, 0)
               LCLICK(500,896)
               WAIT(35)
               INC($dd, 1)
               IF($dd = 7)
                  HALT
               END_IF
               GOTO(start03)
            ELSE
               IF_PIXEL_IN(628,526,662,552, 1710844)
                  LCLICK(500,896)
                  WAIT(35)
                  INC($dd, 1)
                  IF($dd = 7)
                     HALT
                  END_IF
                  GOTO(start03)
               ELSE
                  IF_PIXEL_IN(628,526,662,552, 1551428)
                     LCLICK(623,743)
                     WAITMS(30)
                     LCLICK(623,743)
                     WAIT(35)
                     $dd = 0
                     $ff = 0
                     $aa = 0
                     GOTO(start)
                  END_IF
               END_IF
            END_IF
         END_IF
         GOTO(start02)
      ELSE
         IF_PIXEL_IN(628,526,662,552, 1710844)
            LCLICK(500,896)
            WAIT(35)
            INC($ff, 1)
            IF($ff = 7)
               LCLICK(688,752)
               WAIT(1)
               GOTO(start03)
            END_IF
            GOTO(start02)
         ELSE
            IF_PIXEL_IN(628,526,662,552, 1551428)
               LCLICK(623,743)
               WAIT(35)
               $ff = 0
               $aa = 0
               GOTO(start)
            END_IF
         END_IF
      END_IF
   END_IF
   GOTO (start)
ELSE
   IF_PIXEL_IN(628,526,662,552, 1710844)
      LCLICK(500,896)
      WAIT(35)
      INC($aa, 1)
      IF($aa = 14)
         LCLICK(688,752)
         WAIT(1)
         GOTO(start02)
      END_IF
      GOTO (start)
   ELSE
      IF_PIXEL_IN(628,526,662,552,1551428)
         WAIT(35)
         $aa = 0
         GOTO (start)
      END_IF
   END_IF
END_IF

HALT

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите сократить скрипт с циклами.
« Reply #3 on: November 19, 2017, 01:18:28 PM »
зачётно подкалол!!!
 LCLICK(500,896)
   WAIT(35)
эстонские клики!!!  :) :D ;D :D :)

Не ну тут то норм, а вот в других местах клик и сразу GETSCREEN вот отсюда и тормаза.