Author Topic: Помогите найти ошибку, скрипт перестал работать  (Read 11666 times)

0 Members and 1 Guest are viewing this topic.

Sweets

  • Освоившийся
  • **
  • Posts: 50
    • View Profile
Code: (clickermann) [Select]
IF(PXL(475,181) = 200070)
   LCLICK(RND(475,560),RND(183,188))
   WAIT(RND(5,315))
   END_IF
GETSCREEN
   IF((PXL(508,181) = 200070)
   LCLICK(RND(503,542),RND(183,185))
   END_IF
ELSE
   IF((PXL(581,181) = 200070)
   LCLICK(RND(582,615),RND(181,187))
   END_IF
ELSE
GETSCREEN
   IF((PXL(635,404) = 0)
   HALT
   END_IF
ELSE
GETSCREEN
   IF_PICTURE_IN (298,680, 352,688, "Яблоко.bmp")
WAIT(2)   
   LCLICK(RND(440,475),RND(110,125))
END_IF
WAIT(2)
   IF_PICTURE_IN (474,238, 681,257, "Дыня.bmp")
   LCLICK($_return1, $_return2)
WAIT(2)
   LCLICK(RND(715,730),RND(165,180))
WAIT(2)
   LCLICK(RND(665,700),RND(100,110))
WAIT(1)
   END_IF
ELSE
GETSCREEN
    IF((PXL(453,184) = 1118481)
WAIT(2)   
   LCLICK(RND(440,475),RND(110,125))
WAIT(2)
   LCLICK(RND(550,590),RND(250,325))
WAIT(2)
   LCLICK(RND(715,730),RND(165,180))
WAIT(2)
   LCLICK(RND(665,700),RND(100,110))
WAIT(1)
   END_IF
ELSE
GETSCREEN
   IF_PICTURE_IN (239,681, 319,688, "Слива.bmp")
   HALT
   END_IF                 
WAIT(RND(2,10))


Добавила поиск картинки "Дыня" и скрипт перестал работать
Где напортачила?
« Last Edit: October 16, 2016, 03:43:31 PM by Sweets »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
ой, да много где.
ELSE зависшие между условиями. Их пишут только в нутри условия!
Лишние скобки.
Отсутствие GETSCREEN перед анализом.

Code: (clickermann) [Select]
GETSCREEN
IF(PXL(475,181) = 200070)
   LCLICK(RND(475,560),RND(183,188))
   WAIT(RND(5,315))
END_IF

GETSCREEN
IF(PXL(508,181) = 200070)
   LCLICK(RND(503,542),RND(183,185))
END_IF

//ELSE

IF(PXL(581,181) = 200070)
   LCLICK(RND(582,615),RND(181,187))
END_IF

//ELSE

GETSCREEN
IF(PXL(635,404) = 0)
   HALT
END_IF

//ELSE

GETSCREEN
IF_PICTURE_IN (298,680, 352,688, "Яблоко.bmp")
   WAIT(2)
   LCLICK(RND(440,475),RND(110,125))
END_IF

WAIT(2)
GETSCREEN
IF_PICTURE_IN (474,238, 681,257, "Дыня.bmp")
   LCLICK($_return1, $_return2)
   WAIT(2)
   LCLICK(RND(715,730),RND(165,180))
   WAIT(2)
   LCLICK(RND(665,700),RND(100,110))
   WAIT(1)
END_IF

//ELSE

GETSCREEN
IF(PXL(453,184) = 1118481)
   WAIT(2)
   LCLICK(RND(440,475),RND(110,125))
   WAIT(2)
   LCLICK(RND(550,590),RND(250,325))
   WAIT(2)
   LCLICK(RND(715,730),RND(165,180))
   WAIT(2)
   LCLICK(RND(665,700),RND(100,110))
   WAIT(1)
END_IF

//ELSE

GETSCREEN
IF_PICTURE_IN (239,681, 319,688, "Слива.bmp")
   HALT
END_IF
WAIT(RND(2,10))

Sweets

  • Освоившийся
  • **
  • Posts: 50
    • View Profile
Что то не получается...или не поняла тебя...

Это всё условие... ???
Вот так работает на ура:
Code: (clickermann) [Select]
GETSCREEN
IF(PXL(475,181) = 200070)
   LCLICK(RND(475,560),RND(183,188))
   WAIT(RND(27,35))
   END_IF
GETSCREEN
   IF((PXL(508,181) = 200070)
   LCLICK(RND(503,542),RND(183,185))
   END_IF
ELSE
   IF((PXL(581,181) = 200070)
   LCLICK(RND(582,615),RND(181,187))
   END_IF
ELSE
GETSCREEN
   IF((PXL(635,404) = 0)
   HALT
   END_IF
ELSE
GETSCREEN
   IF_PICTURE_IN (298,680, 352,688, "яблоко.bmp")
WAIT(2)   
   LCLICK(RND(440,475),RND(110,125))
WAIT(2)
   LCLICK(RND(550,590),RND(250,325))
WAIT(2)
   LCLICK(RND(715,730),RND(165,180))
WAIT(2)
   LCLICK(RND(665,700),RND(100,110))
WAIT(1)
   END_IF
ELSE
GETSCREEN
    IF((PXL(453,184) = 1118481)
WAIT(2)   
   LCLICK(RND(440,475),RND(110,125))
WAIT(2)
   LCLICK(RND(550,590),RND(250,325))
WAIT(2)
   LCLICK(RND(715,730),RND(165,180))
WAIT(2)
   LCLICK(RND(665,700),RND(100,110))
WAIT(1)
   END_IF
ELSE
GETSCREEN
   IF_PICTURE_IN (239,681, 319,688, "слива.bmp")
   HALT
   END_IF  
WAIT(RND(2,10))

А вот так вообще не работает:
Code: (clickermann) [Select]
GETSCREEN
IF(PXL(475,181) = 200070)
   LCLICK(RND(475,560),RND(183,188))
   WAIT(RND(27,35))
   END_IF
GETSCREEN
   IF((PXL(508,181) = 200070)
   LCLICK(RND(503,542),RND(183,185))
   END_IF
   IF((PXL(581,181) = 200070)
   LCLICK(RND(582,615),RND(181,187))
   END_IF
GETSCREEN
   IF((PXL(635,404) = 0)
   HALT
   END_IF
GETSCREEN
   IF_PICTURE_IN (298,680, 352,688, "яблоко.bmp")
   WAIT(2)   
   LCLICK(RND(440,475),RND(110,125))
   END_IF   
GETSCREEN   
  IF_PICTURE_IN (474,238, 681,257, "Дыня.bmp")
  LCLICK($_return1, $_return2)
WAIT(2)
   LCLICK(RND(715,730),RND(165,180))
WAIT(2)
   LCLICK(RND(665,700),RND(100,110))
WAIT(1)
   END_IF
GETSCREEN
    IF((PXL(453,184) = 1118481)
WAIT(2)   
   LCLICK(RND(440,475),RND(110,125))
WAIT(2)
   LCLICK(RND(550,590),RND(250,325))
WAIT(2)
   LCLICK(RND(715,730),RND(165,180))
WAIT(2)
   LCLICK(RND(665,700),RND(100,110))
WAIT(1)
   END_IF
GETSCREEN
   IF_PICTURE_IN (239,681, 319,688, "слива.bmp")
   HALT
   END_IF  
WAIT(RND(2,10))


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Я не могу оценить работоспособность, я лиш исправляю ошибки
Лишняя скобка например здесь
  IF((PXL(508,181) = 200070)

Твои ELSE висят между условиями а должны быть внутри их.
Code: (clickermann) [Select]
IF(      )
  // Если верно
ELSE
  // Если не верно
END_IF



Sweets

  • Освоившийся
  • **
  • Posts: 50
    • View Profile
это Поняла, исправила, то же работает
Code: (clickermann) [Select]
GETSCREEN
IF(PXL(475,181) = 200070)
   LCLICK(RND(475,560),RND(183,188))
   WAIT(RND(27,35))
GETSCREEN
   IF((PXL(508,181) = 200070)
   LCLICK(RND(503,542),RND(183,185))
ELSE
   IF(PXL(581,181) = 200070)
   LCLICK(RND(582,615),RND(181,187))
ELSE
GETSCREEN
   IF(PXL(635,404) = 0)
   HALT
ELSE
GETSCREEN
   IF_PICTURE_IN (298,680, 352,688, "яблоко.bmp")
WAIT(2)   
   LCLICK(RND(440,475),RND(110,125))
WAIT(2)
   LCLICK(RND(550,590),RND(250,325))
WAIT(2)
   LCLICK(RND(715,730),RND(165,180))
WAIT(2)
   LCLICK(RND(665,700),RND(100,110))
WAIT(1)
ELSE
GETSCREEN
    IF(PXL(453,184) = 1118481)
WAIT(2)   
   LCLICK(RND(440,475),RND(110,125))
WAIT(2)
   LCLICK(RND(550,590),RND(250,325))
WAIT(2)
   LCLICK(RND(715,730),RND(165,180))
WAIT(2)
   LCLICK(RND(665,700),RND(100,110))
WAIT(1)
ELSE
GETSCREEN
   IF_PICTURE_IN (239,681, 319,688, "слива.bmp")
   HALT
   END_IF  
WAIT(RND(2,10))

но будет ли так работать....
Code: (clickermann) [Select]
GETSCREEN
IF(PXL(475,181) = 200070)
   LCLICK(RND(475,560),RND(183,188))
   WAIT(RND(27,35))
GETSCREEN
   IF((PXL(508,181) = 200070)
   LCLICK(RND(503,542),RND(183,185))
ELSE
   IF(PXL(581,181) = 200070)
   LCLICK(RND(582,615),RND(181,187))
ELSE
GETSCREEN
   IF(PXL(635,404) = 0)
   HALT
ELSE
GETSCREEN
   IF_PICTURE_IN (298,680, 352,688, "яблоко.bmp")
WAIT(2)   
   LCLICK(RND(440,475),RND(110,125))
ELSE
GETSCREEN
  IF_PICTURE_IN (474,238, 681,257, "Дыня.bmp")
  LCLICK($_return1, $_return2)
WAIT(2)
   LCLICK(RND(715,730),RND(165,180))
WAIT(2)
   LCLICK(RND(665,700),RND(100,110))
WAIT(2)
ELSE
GETSCREEN
    IF(PXL(453,184) = 1118481)
WAIT(2)   
   LCLICK(RND(440,475),RND(110,125))
WAIT(2)
   LCLICK(RND(550,590),RND(250,325))
WAIT(2)
   LCLICK(RND(715,730),RND(165,180))
WAIT(2)
   LCLICK(RND(665,700),RND(100,110))
WAIT(1)
ELSE
GETSCREEN
   IF_PICTURE_IN (239,681, 319,688, "слива.bmp")
   HALT
   END_IF  
WAIT(RND(2,10))

И мложно поставить условие что бы рандомно кликал по картинке "Дыня"?

Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile
нравится мне когда пишут " Поняла" и "работает" , а выложен явно дефектный код, без окончания условий. О каких понимании и работоспособности может вообще идти речь?  :(

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Опять не верно! На панели редактора есть "волшебная палочка". Нажми на неё для авторасстановки отступов, увидишь как перекосит скрипт. Это потому что у тебя нехватает окончаний END_IF
Code: (clickermann) [Select]
GETSCREEN
IF(PXL(475,181) = 200070)
   LCLICK(RND(475,560),RND(183,188))
   WAIT(RND(27,35))
   GETSCREEN
   IF((PXL(508,181) = 200070)
      LCLICK(RND(503,542),RND(183,185))
   ELSE
      IF(PXL(581,181) = 200070)
         LCLICK(RND(582,615),RND(181,187))
      ELSE
         GETSCREEN
         IF(PXL(635,404) = 0)
            HALT
         ELSE
            GETSCREEN
            IF_PICTURE_IN (298,680, 352,688, "яблоко.bmp")
               WAIT(2)
               LCLICK(RND(440,475),RND(110,125))
               WAIT(2)
               LCLICK(RND(550,590),RND(250,325))
               WAIT(2)
               LCLICK(RND(715,730),RND(165,180))
               WAIT(2)
               LCLICK(RND(665,700),RND(100,110))
               WAIT(1)
            ELSE
               GETSCREEN
               IF(PXL(453,184) = 1118481)
                  WAIT(2)
                  LCLICK(RND(440,475),RND(110,125))
                  WAIT(2)
                  LCLICK(RND(550,590),RND(250,325))
                  WAIT(2)
                  LCLICK(RND(715,730),RND(165,180))
                  WAIT(2)
                  LCLICK(RND(665,700),RND(100,110))
                  WAIT(1)
               ELSE
                  GETSCREEN
                  IF_PICTURE_IN (239,681, 319,688, "слива.bmp")
                     HALT
                  END_IF
                  WAIT(RND(2,10))

Sweets

  • Освоившийся
  • **
  • Posts: 50
    • View Profile
нравится мне когда пишут " Поняла" и "работает" , а выложен явно дефектный код, без окончания условий. О каких понимании и работоспособности может вообще идти речь?  :(
поняла, то что напортачила с ELSE и это исправила, включила скрипт, и он работает, я же не утверждаю что всё верно и я всё понимаю, поэтому тут и спрашиваю что ни так со скриптом.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
нравится мне когда пишут " Поняла" и "работает" , а выложен явно дефектный код, без окончания условий. О каких понимании и работоспособности может вообще идти речь?  :(
поняла, то что напортачила с ELSE и это исправила, включила скрипт, и он работает, я же не утверждаю что всё верно и я всё понимаю, поэтому тут и спрашиваю что ни так со скриптом.

В кликере нет проверки на некритические ошибки такие как неверные конструкции условий. Он конечно пытается выполнять но со временем это приведет к жору оперативной памяти и всяким глюкам. Так что надо писать правильно.

Sweets

  • Освоившийся
  • **
  • Posts: 50
    • View Profile
Так?  ???
Code: (clickermann) [Select]
GETSCREEN
IF(PXL(475,181) = 200070)
   LCLICK(RND(475,560),RND(183,188))
   WAIT(RND(27,35))
   GETSCREEN
   IF(PXL(508,181) = 200070)
      LCLICK(RND(503,542),RND(183,185))
   ELSE
      IF(PXL(581,181) = 200070)
         LCLICK(RND(582,615),RND(181,187))
      ELSE
         GETSCREEN
         IF(PXL(635,404) = 0)
            HALT
         ELSE
            GETSCREEN
            IF_PICTURE_IN (298,680, 352,688, "Яблоко.bmp")
               WAIT(2)
               LCLICK(RND(440,475),RND(110,125))
            ELSE
               GETSCREEN
               IF_PICTURE_IN (474,238, 681,257, "Дыня.bmp")
                  LCLICK($_return1, $_return2)
                  WAIT(2)
                  LCLICK(RND(715,730),RND(165,180))
                  WAIT(2)
                  LCLICK(RND(665,700),RND(100,110))
                  WAIT(1)
               ELSE
                  GETSCREEN
                  IF(PXL(453,184) = 1118481)
                     WAIT(2)
                     LCLICK(RND(440,475),RND(110,125))
                     WAIT(2)
                     LCLICK(RND(550,590),RND(250,325))
                     WAIT(2)
                     LCLICK(RND(715,730),RND(165,180))
                     WAIT(2)
                     LCLICK(RND(665,700),RND(100,110))
                     WAIT(1)
                  ELSE
                     GETSCREEN
                     IF_PICTURE_IN (239,681, 319,688, "слива.bmp")
                        HALT
                     END_IF
                  END_IF
               END_IF
            END_IF
         END_IF
      END_IF
   END_IF
END_IF
WAIT(RND(2,10))

Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile
это работает, так как вы задумывали?

Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile
Code: (clickermann) [Select]
IF_PICTURE_IN (474,238, 681,257, "Дыня.bmp")
                  LCLICK($_return1+RND(-10,10), $_return2+RND(-10,10))
рандомное смещение координат клика до 10-ти пикселей в каждом направлении, от найденного при поиске.
Ессли картинка мала или найден  её левый верхний угол, то лучше смещаться только вправо и вниз
Code: (clickermann) [Select]
LCLICK($_return1+RND(0,10), $_return2+RND(0,10))

Sweets

  • Освоившийся
  • **
  • Posts: 50
    • View Profile
это работает, так как вы задумывали?
первый скрипт работает как я задумала, последний - через раз

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Все зависит от логики. Если ты её поймешь то все будет работать как надо.

Code: (clickermann) [Select]
GETSCREEN
IF(PXL(475,181) = 200070)
   LCLICK(RND(475,560),RND(183,188)) // если пиксел найден кликаем
   WAIT(RND(27,35)) // ждем 27-35 секунд
   GETSCREEN // делаем снимок
   IF(PXL(508,181) = 200070)
      LCLICK(RND(503,542),RND(183,185)) // если пиксел найден кликаем и переходим в конец скрипта
   ELSE // если не найден
      IF(PXL(581,181) = 200070) // то смотрим здесь
         LCLICK(RND(582,615),RND(181,187)) // если пиксел найден кликаем и переходим в конец скрипта
      ELSE // если не найден
         GETSCREEN // снимок здесь лишний так как не было задержки после последнего снимка
         IF(PXL(635,404) = 0)
            HALT
         ELSE
            GETSCREEN
            IF_PICTURE_IN (298,680, 352,688, "Яблоко.bmp")
               WAIT(2)
               LCLICK(RND(440,475),RND(110,125))
            ELSE
               GETSCREEN
               IF_PICTURE_IN (474,238, 681,257, "Дыня.bmp")
                  LCLICK($_return1, $_return2)
                  WAIT(2)
                  LCLICK(RND(715,730),RND(165,180))
                  WAIT(2)
                  LCLICK(RND(665,700),RND(100,110))
                  WAIT(1)
               ELSE
                  GETSCREEN
                  IF(PXL(453,184) = 1118481)
                     WAIT(2)
                     LCLICK(RND(440,475),RND(110,125))
                     WAIT(2)
                     LCLICK(RND(550,590),RND(250,325))
                     WAIT(2)
                     LCLICK(RND(715,730),RND(165,180))
                     WAIT(2)
                     LCLICK(RND(665,700),RND(100,110))
                     WAIT(1)
                  ELSE
                     GETSCREEN
                     IF_PICTURE_IN (239,681, 319,688, "слива.bmp")
                        HALT
                     END_IF
                  END_IF
               END_IF
            END_IF
         END_IF
      END_IF
   END_IF
END_IF
WAIT(RND(2,10))

Sweets

  • Освоившийся
  • **
  • Posts: 50
    • View Profile
Да это я знаю, я сама составляла последовательность, и то что делает кликер, но я вот запуталась в середине...и в правильном составление алгоритма
Я знаю что хочу что бы он делал, но правильно составить алгоритм не могу