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

Основной раздел => Общие вопросы => Topic started by: Sweets on October 16, 2016, 03:30:03 PM

Title: Помогите найти ошибку, скрипт перестал работать
Post by: Sweets on October 16, 2016, 03:30:03 PM
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))


Добавила поиск картинки "Дыня" и скрипт перестал работать
Где напортачила?
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Oraven on October 16, 2016, 03:49:58 PM
ой, да много где.
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))
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Sweets on October 16, 2016, 04:26:40 PM
Что то не получается...или не поняла тебя...

Это всё условие... ???
Вот так работает на ура:
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))

Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Oraven on October 16, 2016, 04:41:25 PM
Я не могу оценить работоспособность, я лиш исправляю ошибки
Лишняя скобка например здесь
  IF((PXL(508,181) = 200070)

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


Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Sweets on October 16, 2016, 05:17:24 PM
это Поняла, исправила, то же работает
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))

И мложно поставить условие что бы рандомно кликал по картинке "Дыня"?
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Золотой on October 16, 2016, 05:22:56 PM
нравится мне когда пишут " Поняла" и "работает" , а выложен явно дефектный код, без окончания условий. О каких понимании и работоспособности может вообще идти речь?  :(
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Oraven on October 16, 2016, 05:25:08 PM
Опять не верно! На панели редактора есть "волшебная палочка". Нажми на неё для авторасстановки отступов, увидишь как перекосит скрипт. Это потому что у тебя нехватает окончаний 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))
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Sweets on October 16, 2016, 05:30:44 PM
нравится мне когда пишут " Поняла" и "работает" , а выложен явно дефектный код, без окончания условий. О каких понимании и работоспособности может вообще идти речь?  :(
поняла, то что напортачила с ELSE и это исправила, включила скрипт, и он работает, я же не утверждаю что всё верно и я всё понимаю, поэтому тут и спрашиваю что ни так со скриптом.
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Oraven on October 16, 2016, 05:36:04 PM
нравится мне когда пишут " Поняла" и "работает" , а выложен явно дефектный код, без окончания условий. О каких понимании и работоспособности может вообще идти речь?  :(
поняла, то что напортачила с ELSE и это исправила, включила скрипт, и он работает, я же не утверждаю что всё верно и я всё понимаю, поэтому тут и спрашиваю что ни так со скриптом.

В кликере нет проверки на некритические ошибки такие как неверные конструкции условий. Он конечно пытается выполнять но со временем это приведет к жору оперативной памяти и всяким глюкам. Так что надо писать правильно.
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Sweets on October 16, 2016, 05:50:49 PM
Так?  ???
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))
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Золотой on October 16, 2016, 06:08:19 PM
это работает, так как вы задумывали?
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Золотой on October 16, 2016, 06:13:28 PM
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))
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Sweets on October 16, 2016, 06:14:31 PM
это работает, так как вы задумывали?
первый скрипт работает как я задумала, последний - через раз
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Oraven on October 16, 2016, 06:33:49 PM
Все зависит от логики. Если ты её поймешь то все будет работать как надо.

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))
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Sweets on October 16, 2016, 06:41:53 PM
Да это я знаю, я сама составляла последовательность, и то что делает кликер, но я вот запуталась в середине...и в правильном составление алгоритма
Я знаю что хочу что бы он делал, но правильно составить алгоритм не могу
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Золотой on October 16, 2016, 06:57:15 PM
Да это я знаю, я сама составляла последовательность, и то что делает кликер, но я вот запуталась в середине...и в правильном составление алгоритма
Я знаю что хочу что бы он делал, но правильно составить алгоритм не могу
Вот ведь, как бывает, а мы можем правильно составить алгоритм, но не знаем что он должен делать.   :)
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Oraven on October 16, 2016, 07:13:36 PM
У тебя после первого условия идет череда альтернатив, и например до "слива.bmp" дело дойдет только если IF(PXL(475,181) = 200070) найдено, и начиная с IF(PXL(508,181) = 200070) не будет совпадений.
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Sweets on October 16, 2016, 09:02:23 PM
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)) // кликаем
                  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) // если находим этот пиксель
                  LCLICK(RND(440,475),RND(110,125))
                  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)
                  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))

может как то условия по другому ставить?
До яблока работает, дальше нет
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Oraven on October 16, 2016, 09:13:32 PM
Тогда так

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)) // если пиксел найден кликаем и переходим в конец скрипта
      WAITMS(500)
   ELSE // если не найден
      IF(PXL(581,181) = 200070) // то смотрим здесь
         LCLICK(RND(582,615),RND(181,187)) // если пиксел найден кликаем и переходим в конец скрипта
         WAITMS(500)
      ELSE // если не найден
         IF(PXL(635,404) = 0)
            HALT
         END_IF
      END_IF
   END_IF
   
   GETSCREEN
   IF_PICTURE_IN (298,680, 352,688, "Яблоко.bmp") // если найдено Яблоко (даже если перед этим найдены пиксели выше)
      WAIT(2)
      LCLICK(RND(440,475),RND(110,125)) // кликаем
      WAITMS(500)
      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
         IF(PXL(453,184) = 1118481) // если находим этот пиксель
            LCLICK(RND(440,475),RND(110,125))
            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)
            ELSE
               IF_PICTURE_IN (239,681, 319,688, "слива.bmp") // если находим слива
                  HALT // останавливаем
               END_IF
            END_IF
         END_IF
      END_IF
   END_IF
   WAIT(RND(2,10))
END_IF
WAITMS(50)
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Sweets on October 16, 2016, 09:19:02 PM
Если при разных условиях нужно сделать одинаковые действия, как это объединить?
Находим пиксель и находим картинку нужно остановить

 :-\ коряво был написан скрипт работал... находил яблоко, сливу, останавливался, добавила дыню всё накрылось
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Золотой on October 16, 2016, 09:26:17 PM
Если при разных условиях нужно сделать одинаковые действия, как это объединить?
Находим пиксель и находим картинку нужно остановить

 :-\ коряво был написан скрипт работал... находил яблоко, сливу, останавливался, добавила дыню всё накрылось
почему вы не пишите, что и в какой последовательночти должен делать ваш скрипт? и зачем вам что-то менять если и на корявом скрипте у вас всё работало как нужно?
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Sweets on October 16, 2016, 09:30:03 PM
Если при разных условиях нужно сделать одинаковые действия, как это объединить?
Находим пиксель и находим картинку нужно остановить

 :-\ коряво был написан скрипт работал... находил яблоко, сливу, останавливался, добавила дыню всё накрылось
почему вы не пишите, что и в какой последовательночти должен делать ваш скрипт? и зачем вам что-то менять если и на корявом скрипте у вас всё работало как нужно?
Выше написала что должен делать, потому что написали что так не правильно и это приведет к
В кликере нет проверки на некритические ошибки такие как неверные конструкции условий. Он конечно пытается выполнять но со временем это приведет к жору оперативной памяти и всяким глюкам. Так что надо писать правильно.
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Золотой on October 16, 2016, 09:38:09 PM
// если найдено Яблоко (даже если перед этим найдены пиксели выше)  это невыполнимое условие, яблоко у вас будет искаться только если ничего выше не найдено.
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Золотой on October 16, 2016, 09:39:24 PM
вас рандом клика по картинкам видимо не заинтересовал?
LCLICK($_return1, $_return2) // кликаем по картинке
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Золотой on October 16, 2016, 09:47:10 PM
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
         END_IF
      END_IF
   END_IF
END_IF
GETSCREEN
IF_PICTURE_IN (298,680, 352,688, "Яблоко.bmp") // если найдено Яблоко (даже если перед этим найдены пиксели выше)
   WAIT(2)
   LCLICK(RND(440,475),RND(110,125)) // кликаем
ELSE
   IF_PICTURE_IN (474,238, 681,257, "Дыня.bmp") //
IF_PICTURE_IN (298,680, 352,688, "Яблоко.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
END_IF
GETSCREEN
IF(PXL(453,184) = 1118481) // если находим этот пиксель
   LCLICK(RND(440,475),RND(110,125))
   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)
   ELSE
      IF_PICTURE_IN (239,681, 319,688, "слива.bmp") // если находим слива
         HALT // останавливаем
      END_IF
   END_IF
END_IF 
WAIT(RND(2,10))
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Oraven on October 16, 2016, 09:48:37 PM
// если найдено Яблоко (даже если перед этим найдены пиксели выше)  это невыполнимое условие, яблоко у вас будет искаться только если ничего выше не найдено.
В последнем моем варианте вполне выполнимо.

В самом первом кривом скрипте если отбросить бессмысленные ELSE которые не пойми как влияли на условия, была череда условий анализов которые шли по порядку и по любому выполнялись.

С моей стороны не разу не понятно как должны выполняться условия так как я не знаю логики.
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Sweets on October 16, 2016, 09:48:43 PM
вас рандом клика по картинкам видимо не заинтересовал?
LCLICK($_return1, $_return2) // кликаем по картинке
Заинтересовал, я запомнила, спасибо, исправлю, когда найду решение что бы работал с этой картинкой "Дыня"
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Золотой on October 16, 2016, 09:54:41 PM
вас рандом клика по картинкам видимо не заинтересовал?
LCLICK($_return1, $_return2) // кликаем по картинке
Заинтересовал, я запомнила, спасибо, исправлю, когда найду решение что бы работал с этой картинкой "Дыня"
в вашем варианте дыню можно найти при двух условиях;
1. если раньше нашлось яблоко.
2. если найден пиксель IF(PXL(453,184) = 1118481) // если находим этот пиксель
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Sweets on October 16, 2016, 10:23:57 PM
Завтра проверю два варианта, спасибо.
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Sweets on October 18, 2016, 04:27:35 PM
Заработало, немного исправила и добавила задержку перед поиском третьей картинкой, и начал искать
Code: (clickermann) [Select]
GETSCREEN
IF(PXL(475,181) = 200070)
   
   LCLICK(RND(475,560),RND(183,188))
   WAIT(RND(21,25))
   
   GETSCREEN
   IF(PXL(508,181) = 200070)
      LCLICK(RND(503,542),RND(183,185))
      WAITMS(500)
   ELSE
      IF(PXL(581,181) = 200070)
         LCLICK(RND(582,615),RND(181,187))
         WAITMS(500)
      ELSE
         IF(PXL(635,404) = 0)
            HALT
         ELSE
            IF_PICTURE_IN (239,681, 319,688, "1.bmp")
               HALT
            END_IF
         END_IF
      END_IF
   END_IF
   
   GETSCREEN
   IF_PICTURE_IN (298,680, 352,688, "2.bmp")
      WAIT(2)
      LCLICK(RND(440,475),RND(110,125))
      WAIT(5)
      GETSCREEN
      IF_PICTURE_IN (505,237, 684,260, "3.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
         IF(PXL(453,184) = 1118481)
            LCLICK(RND(440,475),RND(110,125))
            WAIT(5)
            GETSCREEN
            IF_PICTURE_IN (505,237, 684,260, "3.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
         END_IF
      END_IF
   END_IF
   WAIT(RND(2,10))
END_IF
WAITMS(500)

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))
Не могу только понять...как идет смещение, что бы кликал рандомно по картинке, ($_return1+RND(0,10), $_return2+RND(0,10) какая цифра отвечает за какое направление
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Золотой on October 18, 2016, 04:51:53 PM
1. LCLICK($_return1+RND(0,10), $_return2+RND(0,10))
$_return1- координата Х, найденной картинки
+RND(0,10), к найденной координате будет прибавлено от 0 до 10 пикселей
LCLICK($_return1+RND(0,10), в результате клик будет сделан на это число пикселей правее
если минусовать от найденных значений, то клик будет делаться по Х -левее, а по У - выше
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Sweets on October 18, 2016, 05:57:41 PM
1. LCLICK($_return1+RND(0,10), $_return2+RND(0,10))
$_return1- координата Х, найденной картинки
+RND(0,10), к найденной координате будет прибавлено от 0 до 10 пикселей
LCLICK($_return1+RND(0,10), в результате клик будет сделан на это число пикселей правее
если минусовать от найденных значений, то клик будет делаться по Х -левее, а по У - выше
Спасибо
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Sweets on October 22, 2016, 01:21:38 PM
Всем снова, здравствуйте :)
Code: (clickermann) [Select]
GETSCREEN
IF(PXL(475,181) = 200070)
   
   LCLICK(RND(475,560),RND(183,188))
   WAIT(RND(28,39))
   
   GETSCREEN
   IF((PXL(504,181) = 4870559)|(PXL(504,181) = 200070))
      LCLICK(RND(503,542),RND(183,185))
      WAITMS(500)
   ELSE
      IF((PXL(579,181) = 200070)|(PXL(579,181) = 1778830))
         LCLICK(RND(582,615),RND(181,187))
         WAITMS(500)
      ELSE
         IF(PXL(635,404) = 0)
            HALT
         ELSE
            IF_PICTURE_IN (239,681, 319,688, "1.bmp")
               WAIT(2)
               LCLICK(RND(274,394),RND(216,224))
               WAIT(2)
               LCLICK(RND(270,391),RND(367,370))
               WAIT(2)
               LCLICK(RND(393,404),RND(237,248))
               HALT
            END_IF
         END_IF
      END_IF
   END_IF
   
   GETSCREEN
   IF_PICTURE_IN (298,680, 352,688, "2.bmp")
      WAIT(2)
      LCLICK(RND(440,475),RND(110,125))
      WAIT(5)
      GETSCREEN
      IF_PICTURE_IN (505,237, 684,260, "3.bmp")
         LCLICK($_return1+RND(-20,5), $_return2+RND(0,30)
         WAIT(2)
         LCLICK(RND(715,730),RND(165,180))
         WAIT(2)
         LCLICK(RND(665,700),RND(100,110))
         WAIT(1)
      ELSE
            IF(PXL(453,184) = 1118481) // с этого момента не работает, не находит пискель (что может быть не так или ка можно по другому составить условия?)
            LCLICK(RND(440,475),RND(110,125))
            WAIT(5)
            GETSCREEN
            IF_PICTURE_IN (505,237, 684,260, "3.bmp")
               LCLICK($_return1+RND(-20,5), $_return2+RND(0,30)
               WAIT(2)
               LCLICK(RND(715,730),RND(165,180))
               WAIT(2)
               LCLICK(RND(665,700),RND(100,110))
               WAIT(1)
            END_IF
         END_IF
      END_IF
   END_IF
   WAIT(RND(4,10))
END_IF
WAITMS(500)
спасибо за помощь :)
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Золотой on October 22, 2016, 04:48:51 PM
    ваш пиксель бужет искаться только после;
    нахождения  PXL(475,181) = 200070
    нахождения  IF_PICTURE_IN (298,680, 352,688, "2.bmp")
     и ненахождения   IF_PICTURE_IN (505,237, 684,260, "3.bmp")
    PXL(453,184) = 1118481) после соблюдения всех вышеизложенных условий, должны ещё совпасть координаты и цвет пикселя

Как можно по другому составить учловия никто кроме вас решить не может,
так как не знает что должны делать эти условия и как они взаимосвязанны.
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Sweets on October 22, 2016, 05:15:05 PM
    ваш пиксель бужет искаться только после;
    нахождения  PXL(475,181) = 200070
    нахождения  IF_PICTURE_IN (298,680, 352,688, "2.bmp")
     и ненахождения   IF_PICTURE_IN (505,237, 684,260, "3.bmp")
    PXL(453,184) = 1118481) после соблюдения всех вышеизложенных условий

А если этих условий нет?

должны ещё совпасть координаты и цвет пикселя

это совпадает, есть только  этот PXL(453,184) = 1118481), выше перечисленного нет когда есть этот пиксель
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Золотой on October 22, 2016, 05:18:02 PM
как это нет? ведь вы их написали.
Если хоть одно из всего описанного не совпадёт, то условие PXL(453,184) = 1118481) - не выполнится.
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Sweets on October 22, 2016, 05:20:52 PM
в тот момент когда есть(появляется) этот пиксель , остального нет
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Золотой on October 22, 2016, 05:22:26 PM
в тот момент когда есть?появляется) этот пиксель , остального нет
естественно, что этот пиксель даже искаться не будет.
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Sweets on October 22, 2016, 05:22:55 PM
тогда это тупик(
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Золотой on October 22, 2016, 05:27:16 PM
тогда это тупик(
небывает тупиков, вы просто неправильно понимаете или описываете логику работы вашего скрипта. ваше условие ведь можно и десять раз в разных местах вписать и отдельно от всего искать.
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Sweets on October 22, 2016, 05:32:39 PM
Надо что бы выполнялись эти условия
Code: (clickermann) [Select]
GETSCREEN
IF(PXL(475,181) = 200070)
   
   LCLICK(RND(475,560),RND(183,188))
   WAIT(RND(28,39))
   
   GETSCREEN
   IF((PXL(504,181) = 4870559)|(PXL(504,181) = 200070))
      LCLICK(RND(503,542),RND(183,185))
      WAITMS(500)
   ELSE
      IF((PXL(579,181) = 200070)|(PXL(579,181) = 1778830))
         LCLICK(RND(582,615),RND(181,187))
         WAITMS(500)
      ELSE
         IF(PXL(635,404) = 0)
            HALT
         ELSE
            IF_PICTURE_IN (239,681, 319,688, "1.bmp")
               WAIT(2)
               LCLICK(RND(274,394),RND(216,224))
               WAIT(2)
               LCLICK(RND(270,391),RND(367,370))
               WAIT(2)
               LCLICK(RND(393,404),RND(237,248))
               HALT
            END_IF
         END_IF
      END_IF
   END_IF
   
   GETSCREEN
   IF_PICTURE_IN (298,680, 352,688, "2.bmp")
      WAIT(2)
      LCLICK(RND(440,475),RND(110,125))
      WAIT(5)
      GETSCREEN
      IF_PICTURE_IN (505,237, 684,260, "3.bmp")
         LCLICK($_return1+RND(-20,5), $_return2+RND(0,30)
         WAIT(2)
         LCLICK(RND(715,730),RND(165,180))
         WAIT(2)
         LCLICK(RND(665,700),RND(100,110))
         WAIT(1)
                  END_IF
         END_IF
      END_IF
   END_IF
   WAIT(RND(4,10))
END_IF
WAITMS(500)
А при нахождение этого условия , выполнялось оно и это как то совместить
Code: (clickermann) [Select]
GETSCREEN
            IF(PXL(453,184) = 1118481)
            LCLICK(RND(440,475),RND(110,125))
            WAIT(5)
            GETSCREEN
            IF_PICTURE_IN (505,237, 684,260, "3.bmp")
               LCLICK($_return1+RND(-20,5), $_return2+RND(0,30)
               WAIT(2)
               LCLICK(RND(715,730),RND(165,180))
               WAIT(2)
               LCLICK(RND(665,700),RND(100,110))
               WAIT(1)
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Sweets on October 22, 2016, 05:43:04 PM
тогда это тупик(
небывает тупиков, вы просто неправильно понимаете или описываете логику работы вашего скрипта. ваше условие ведь можно и десять раз в разных местах вписать и отдельно от всего искать.
бывает, если не хватает знаний и это мой случай(
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Золотой on October 22, 2016, 05:55:59 PM
так ваше условие зависит от всех вышеперечисленных или должно проверяться совершенно независимо?
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Sweets on October 22, 2016, 05:58:07 PM
Проверяться совершенно независимо
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Золотой on October 22, 2016, 07:30:27 PM
Проверяться совершенно независимо
Code: (clickermann) [Select]

GETSCREEN
IF(PXL(475,181) = 200070)
   
   LCLICK(RND(475,560),RND(183,188))
   WAIT(RND(28,39))
   
   GETSCREEN
   IF((PXL(504,181) = 4870559)|(PXL(504,181) = 200070))
      LCLICK(RND(503,542),RND(183,185))
      WAITMS(500)
   ELSE
      IF((PXL(579,181) = 200070)|(PXL(579,181) = 1778830))
         LCLICK(RND(582,615),RND(181,187))
         WAITMS(500)
      ELSE
         IF(PXL(635,404) = 0)
            HALT
         ELSE
            IF_PICTURE_IN (239,681, 319,688, "1.bmp")
               WAIT(2)
               LCLICK(RND(274,394),RND(216,224))
               WAIT(2)
               LCLICK(RND(270,391),RND(367,370))
               WAIT(2)
               LCLICK(RND(393,404),RND(237,248))
               HALT
            END_IF
         END_IF
      END_IF
   END_IF
   
   GETSCREEN
   IF_PICTURE_IN (298,680, 352,688, "2.bmp")
      WAIT(2)
      LCLICK(RND(440,475),RND(110,125))
      WAIT(5)
      GETSCREEN
      IF_PICTURE_IN (505,237, 684,260, "3.bmp")
         LCLICK($_return1+RND(-20,5), $_return2+RND(0,30)
         WAIT(2)
         LCLICK(RND(715,730),RND(165,180))
         WAIT(2)
         LCLICK(RND(665,700),RND(100,110))
         WAIT(1)
      END_IF
   END_IF
END_IF
WAIT(RND(4,10))
WAITMS(500)


GETSCREEN
IF(PXL(453,184) = 1118481)
   LCLICK(RND(440,475),RND(110,125))
   WAIT(5)
   GETSCREEN
   IF_PICTURE_IN (505,237, 684,260, "3.bmp")
      LCLICK($_return1+RND(-20,5), $_return2+RND(0,30)
      WAIT(2)
      LCLICK(RND(715,730),RND(165,180))
      WAIT(2)
      LCLICK(RND(665,700),RND(100,110))
      WAIT(1)
   END_IF
END_IF
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Sweets on October 24, 2016, 10:03:42 AM
Спасибо, попробую
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Sweets on November 03, 2016, 02:08:46 PM
Проблема в том, условия в точке А и В одни и те же, но они в разных расположениях, если в точке А пиксель IF(PXL(453,184) = 1118481), то идти в точку В и там нажимать условия IF(PXL(495,181) = 200070), если в точке В IF(PXL(453,184) = 1118481) то идти в точку А и нажимать там IF(PXL(495,181) = 200070), и так по кругу, можно ли это как сделать?

Code: (clickermann) [Select]
GETSCREEN   // находимся в точке А
IF(PXL(495,181) = 200070) // находим пиксель
   LCLICK(RND(491,537),RND(182,187)) // нажимаем, ждем ( тут время рандомно очень отличается, не выставить когда нажимать, поставила по картинке что бы нажимал
   IF_PICTURE_IN (330,611, 385,690, "2.bmp")  // находим картинку
      WAIT(RND(1,3)) // ждем
   END_IF
END_IF
WAIT(RND(2,5))

GETSCREEN
IF(PXL(453,184) = 1118481)          // находимся пиксель в точке А
   LCLICK(RND(566,579),RND(372,379)) // нажимаем
   WAIT(RND(16,18)) // идем в точку В
   IF(PXL(495,180) = 200070) // тут все повторяется что в точке А
      LCLICK(RND(491,537),RND(182,187))
      IF_PICTURE_IN (330,611, 385,690, "2.bmp")
         WAIT(RND(1,3))
      END_IF
   END_IF
END_IF
WAIT(RND(2,5))

GETSCREEN
IF(PXL(453,184) = 1118481)     // находимся в точке В, находим пиксель
   LCLICK(RND(506,522),RND(317,320)) // жмем
   WAIT(RND(16,18)) // идем в точку А
   IF(PXL(495,181) = 200070) // тут опять всё повторяется
      LCLICK(RND(491,537),RND(182,187)) //нажимаем, ждём
      IF_PICTURE_IN (330,611, 385,690, "2.bmp")
         WAIT(RND(1,3))
      END_IF
   END_IF
END_IF
WAIT(RND(2,5))

GETSCREEN
IF_PICTURE_IN (239,681, 319,688, "1.bmp")
   WAIT(2)
   LCLICK(RND(274,394),RND(216,224))
   WAIT(2)
   LCLICK(RND(275,350),RND(267,271))
   WAIT(2)
   LCLICK(RND(393,404),RND(237,248))
   HALT
END_IF


Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Sweets on November 07, 2016, 01:05:40 PM
Перенесите тему в "Общие вопросы".
                      Спасибо.
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Sweets on November 07, 2016, 02:09:51 PM
Перенесите тему в "Общие вопросы".   Спасибо.

Считаете, что здесь как-то затрагиваются Вопросы по интерфейсу, языку сценариев, алгоритмике?  


Скорее ваша тема должна улететь в раздел использование.  

Скорее, но точно не в ошибках программы, где я её создала.
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Золотой on November 07, 2016, 02:12:36 PM
 Проблема в том, условия в точке А и В одни и те же, но они в разных расположениях

IF(PXL(453,184) = 1118481)          // находимся пиксель в точке А
IF(PXL(453,184) = 1118481)         // находимся в точке В, находим пиксель

Вы очень противоречивы, поэтому помочь вам трудно.
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Sweets on November 07, 2016, 02:39:07 PM
А можно сделать так?
Что бы он выполнял вот это условие:
Code: (clickermann) [Select]
GETSCREEN
IF(PXL(495,181) = 200070)
   LCLICK(RND(491,537),RND(182,187))
   IF_PICTURE_IN (330,611, 385,690, "2.bmp")
      WAIT(RND(1,3))
   END_IF
END_IF
WAIT(RND(2,5))
Потом через какое время выполнил вот это условие:
Code: (clickermann) [Select]
GETSCREEN
IF(PXL(453,184) = 1118481)
   LCLICK(RND(566,579),RND(372,379))
   WAIT(RND(16,18))
END_IF
 
Потом опять начал выполнять вот это условие:
Code: (clickermann) [Select]
GETSCREEN
IF(PXL(495,181) = 200070)
   LCLICK(RND(491,537),RND(182,187))
   IF_PICTURE_IN (330,611, 385,690, "2.bmp")
      WAIT(RND(1,3))
   END_IF
END_IF
WAIT(RND(2,5))
через какое время выполнил это   
Code: (clickermann) [Select]
GETSCREEN
IF(PXL(453,184) = 1118481)
      LCLICK(RND(506,522),RND(317,320))
      WAIT(RND(16,18))
END_IF
WAIT(RND(2,5))
и опять начал выполнять эти условия
Code: (clickermann) [Select]
GETSCREEN
IF(PXL(495,181) = 200070)
   LCLICK(RND(491,537),RND(182,187))
   IF_PICTURE_IN (330,611, 385,690, "2.bmp")
      WAIT(RND(1,3))
   END_IF
END_IF
WAIT(RND(2,5))

Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Золотой on November 07, 2016, 08:51:53 PM
Code: (clickermann) [Select]
//можно сделать так в полном соответствии с вашим описанием

GETSCREEN
IF(PXL(495,181) = 200070) //Что бы он выполнял вот это условие:
   LCLICK(RND(491,537),RND(182,187))
   IF_PICTURE_IN (330,611, 385,690, "2.bmp")
      WAIT(RND(1,3))
   END_IF
END_IF
WAIT(RND(2,5))//Потом через какое время

GETSCREEN
IF(PXL(453,184) = 1118481) // время выполнил вот это условие:
   LCLICK(RND(566,579),RND(372,379))
   WAIT(RND(16,18))
END_IF

GETSCREEN
IF(PXL(495,181) = 200070) //Потом опять начал выполнять вот это условие:
   LCLICK(RND(491,537),RND(182,187))
   IF_PICTURE_IN (330,611, 385,690, "2.bmp")
      WAIT(RND(1,3))
   END_IF
END_IF
WAIT(RND(2,5)) //через какое время
   
GETSCREEN
IF(PXL(453,184) = 1118481) //выполнил это
      LCLICK(RND(506,522),RND(317,320))
      WAIT(RND(16,18))
END_IF
WAIT(RND(2,5))   //через какое время

GETSCREEN
IF(PXL(495,181) = 200070) //и опять начал выполнять эти условия
   LCLICK(RND(491,537),RND(182,187))
   IF_PICTURE_IN (330,611, 385,690, "2.bmp")
      WAIT(RND(1,3))
   END_IF
END_IF
WAIT(RND(2,5))  //через какое время
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Cleoss on November 23, 2016, 11:40:29 AM
Конечно, меня щас заклюют ассы скриптования, но я б посоветовал разбить все ваши условия по отдельным потокам-тредам (в справке к программе разделе Язык сценариев/Основные конструкции есть в конце страницы подраздел про треды). Почему по потокам? Потому что тогда все ваши условия будут выполняться независимо друг от друга, и для каждого из них можно выставить свою задержку, тем более пример в справке с тик-таком как раз соответствует вашему случаю, хотя очевидно здесь можно обойтись и без тредов, тем более задержки у вас между проверками достаточно большие (не в мс) и не должны подвесить комп. Если разобьёте по тредам, не забывайте про проставить задержки в конце каждого потока, но они собственно уже есть.
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Vint on November 23, 2016, 02:06:48 PM
Прям заклюют...

Зачем разбивать на потоки то, что должно выполняться последовательно? Потоки предназначены для распараллеливания действий, не нужно их пихать везде где не попадя. Это не панацея. В других темах дошло уже до того, что человек не может нормально картинку найти и сразу "эврика!" - "Если я разобью на потоки, будет искать?"  :o :o :o

И потоки не достаточно изолированы, чтобы с ними было легко и приятно. Десяток потоков с поисками и каждый со своим GETSCREEN или завесит всё на свете на 100% (привет, привеееет :D ), или как минимум будет не всегда находить (естественно, 10 художников одновременно перерисовывают одно полотно ещё и действуя вразнобой), или не туда потом кликать/не от тех мест отталкиваться - $_return1/2.
Ну слава богу последнее здесь не грозит, всё намертво приколочено.
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Cleoss on November 23, 2016, 02:46:32 PM
Прям заклюют...
Не, ну это метафора такая, просто мне и самому действительно интересно для ся разобраться: почему б и не использовать эти потоки? А вот Золотой любит и потроллить вопрошающих, ему наверно кажется, что они всё соображают в своих скриптах, а спрашивают так, от нечего делать или чтоб пуще раздосадовать его Величество  :) Хотя не спорю, советы у Золотого бывают очень толковые, когда он снисходит до них)

Зачем разбивать на потоки то, что должно выполняться последовательно?
Ну не то чтоб прям "должно", скорее сказал бы что это всё-таки отдельные поиски (не последовательные), но здесь допустимо их последовательное использование ввиду больших делеев между поиска, а если бы дело б обстояло, как у меня с клавиатурой, где нажатие занимает 30 мс и при этом велика нагрузка на проц, то!.. Ну так и хочется туда потоки влепить!  :D

Потоки предназначены для распараллеливания действий, не нужно их пихать везде где не попадя. Это не панацея.
Ну так вот я и распараллеливаю различные по субъекту поиски, ведь они должны имхо выполняться независимо друг от друга.

В других темах дошло уже до того, что человек не может нормально картинку найти и сразу "эврика!" - "Если я разобью на потоки, будет искать?"  :o :o :o
Здесь я не спорю, логика в каждом из потоков должна быть построена правильно, введение потоков никак не отменяет требования к логичности скрипта, как и наоборот, введение потоков не сможет исправить ошибок в логике. Но просто.. для чего-то ж эти потоки нужны! Или что иначе ими распараллеливать?  Вот можно пару рабочих, жизненных примеров, где без потоков не обойтись? Или без них всегда можно и нужно обходиться?

И потоки не достаточно изолированы, чтобы с ними было легко и приятно. Десяток потоков с поисками и каждый со своим GETSCREEN или завесит всё на свете на 100%, или как минимум будет не всегда находить (естественно, 10 художников одновременно перерисовывают одно полотно ещё и действуя вразнобой), или не туда потом кликать/не от тех мест отталкиваться - $_return1/2.
А вот это уже действительно аргумент против потоков, о котором я кстати не подумал! И оч существенный аргумент надо сказать! И здесь самая проблема имхо не с лишними гетскринами, лишним гетскрином кашу особо не испортишь, только чуть ударит по загруженности (хотя не знаю, как может повести себя кликер при одновременном вызове сразу нескольких гетскринов), а вот одинаковые имена переменных $_return1/2 во всех поиска могут действительно стать проблемой и выдать неверные, "не те" координаты в перемежающихся вызовах гетскрина. Я об этих совпадающих $_return1/2 тож иногда задумываюсь, когда в скриптах они встречаются). Так что наверно беру свои слова обратно про необходимость делать скрипт этот на тредах. Единственно, что можно попытаться выйти из этой ситуации путём присвоения полученных значений $_return1/2 сразу же на другие переменные, уникальные для каждого треда, но опять же нет гарантии, что гетскрин одного цикла не станет предыдущим тактом вычисления процессора для присвоения значений гетскрина из другого треда, и тогда ошибки наверно не избежать, хотя может и здесь можно было б сделать какую хитрую проверку. И хоть вероятность такого события очень мала, но раз скрипт будет выполняться множество раз (причём возможно в автоматическом режиме, без присутствия юзера), то и такая вероятность может рано/ поздно наступить. Т. ч. лучше действительно не страдать ерундой и не пытаться "обмануть судьбу" и сделать все поиски линейно, тем более если события случаются не часто, и навряд ли подвесят проц.

Убедил  ;D
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Vint on November 23, 2016, 03:36:29 PM
Ну не то чтоб прям "должно", скорее сказал бы что это всё-таки отдельные поиски (не последовательные)
...
Ну так вот я и распараллеливаю различные по субъекту поиски, ведь они должны имхо выполняться независимо друг от друга.

Как же так. Ведь там русским по белому:
Quote
Что бы он выполнял вот это...
Потом через какое время выполнил вот это...
Потом опять начал выполнять вот это...
через какое время выполнил это...   
и опять начал выполнять эти условия...

По мне так последовательней не бывает.
То что это всё поиски и они похожи, совсем не говорит о том что они  друг от друга независимы и их можно выполнять параллельно и циклично.
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Vint on November 23, 2016, 03:43:10 PM
Вот можно пару рабочих, жизненных примеров, где без потоков не обойтись?

Да легко.

В игре например делается куча всяких действий, продолжительных и не очень и при этом нужно следить за здоровьем/энергией/манной небесной. И как только упадёт ниже заданного уровня - восстанавливать выполнив определённые действия.

Опять же всякие клики:
F1 - раз в 3 секунды
F3 - раз в 5 секунд
F5 - раз в 10 секунд...
При этом есть основное действие скрипта. Удобней всего это реализовать потоками.



Не нравится пример с игрой?
Тогда вот в браузере работа, не дай бог ещё во флеше. Нужно постоянно следить не упал ли флеш и не упал ли браузер. Всё это не отходя от конвейера.
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Cleoss on November 23, 2016, 05:03:28 PM
Опять же всякие клики:
F1 - раз в 3 секунды
F3 - раз в 5 секунд
F5 - раз в 10 секунд...
При этом есть основное действие скрипта. Удобней всего это реализовать потоками.
Есть основное действие? Сразу хочется спросить: а что же тогда, все эти F1/F3/F5 -- не основные?))

Не нравится пример с игрой?
Тогда вот в браузере работа, не дай бог ещё во флеше. Нужно постоянно следить не упал ли флеш и не упал ли браузер. Всё это не отходя от конвейера.
Не то чтоб не нравится пример, просто игрухи немного не моя тема, ну профан я в них. Я фанат всяких расширений и фишек.
А так вообще по браузеру -- правда, у него бывает не только падения, но и куча всяких неожиданно вылетающих модальных окошечек, которые преграждают работу скрипту. И зачастую, чтоб обеспечить стабильную работу простецкого скрипта, нужно предусмотреть целую кучу эксепшенов и прочих радостных ивентов, что плавно выливается в геморрой, посему выходит, что надо бы поскорее все эти обработчики/ чекеры включить в одну унифицированную либу, дабы упростить до максимума разработку кода.
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Vint on November 23, 2016, 05:58:31 PM
Сразу хочется спросить: а что же тогда, все эти F1/F3/F5 -- не основные?))
Это самые частые задачи.
Я тоже не игрок. Обычно это во всяких RPG бонусные удары прокачанные. У каждого своё время восстановленя.
А основное действие - двигаться туда-сюда, отбегать и бить дефолтным оружием.
Title: Re: Помогите найти ошибку, скрипт перестал работать
Post by: Sweets on December 04, 2016, 02:18:08 PM
Пока не разобралась с этим и не нашла другово решения :( как это всё объединить и сделать, и для меня такие сложные вещи предложили...