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

0 Members and 1 Guest are viewing this topic.

Золотой

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

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
У тебя после первого условия идет череда альтернатив, и например до "слива.bmp" дело дойдет только если IF(PXL(475,181) = 200070) найдено, и начиная с IF(PXL(508,181) = 200070) не будет совпадений.

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)) // ждем 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))

может как то условия по другому ставить?
До яблока работает, дальше нет
« Last Edit: October 16, 2016, 09:05:30 PM by Sweets »

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)) // если пиксел найден кликаем и переходим в конец скрипта
      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)

Sweets

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

 :-\ коряво был написан скрипт работал... находил яблоко, сливу, останавливался, добавила дыню всё накрылось

Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile
Если при разных условиях нужно сделать одинаковые действия, как это объединить?
Находим пиксель и находим картинку нужно остановить

 :-\ коряво был написан скрипт работал... находил яблоко, сливу, останавливался, добавила дыню всё накрылось
почему вы не пишите, что и в какой последовательночти должен делать ваш скрипт? и зачем вам что-то менять если и на корявом скрипте у вас всё работало как нужно?

Sweets

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

 :-\ коряво был написан скрипт работал... находил яблоко, сливу, останавливался, добавила дыню всё накрылось
почему вы не пишите, что и в какой последовательночти должен делать ваш скрипт? и зачем вам что-то менять если и на корявом скрипте у вас всё работало как нужно?
Выше написала что должен делать, потому что написали что так не правильно и это приведет к
В кликере нет проверки на некритические ошибки такие как неверные конструкции условий. Он конечно пытается выполнять но со временем это приведет к жору оперативной памяти и всяким глюкам. Так что надо писать правильно.

Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile
// если найдено Яблоко (даже если перед этим найдены пиксели выше)  это невыполнимое условие, яблоко у вас будет искаться только если ничего выше не найдено.

Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile
вас рандом клика по картинкам видимо не заинтересовал?
LCLICK($_return1, $_return2) // кликаем по картинке

Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • 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
         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))

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
// если найдено Яблоко (даже если перед этим найдены пиксели выше)  это невыполнимое условие, яблоко у вас будет искаться только если ничего выше не найдено.
В последнем моем варианте вполне выполнимо.

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

С моей стороны не разу не понятно как должны выполняться условия так как я не знаю логики.

Sweets

  • Освоившийся
  • **
  • Posts: 50
    • View Profile
вас рандом клика по картинкам видимо не заинтересовал?
LCLICK($_return1, $_return2) // кликаем по картинке
Заинтересовал, я запомнила, спасибо, исправлю, когда найду решение что бы работал с этой картинкой "Дыня"

Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile
вас рандом клика по картинкам видимо не заинтересовал?
LCLICK($_return1, $_return2) // кликаем по картинке
Заинтересовал, я запомнила, спасибо, исправлю, когда найду решение что бы работал с этой картинкой "Дыня"
в вашем варианте дыню можно найти при двух условиях;
1. если раньше нашлось яблоко.
2. если найден пиксель IF(PXL(453,184) = 1118481) // если находим этот пиксель

Sweets

  • Освоившийся
  • **
  • Posts: 50
    • View Profile
Завтра проверю два варианта, спасибо.

Sweets

  • Освоившийся
  • **
  • Posts: 50
    • View Profile
Заработало, немного исправила и добавила задержку перед поиском третьей картинкой, и начал искать
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) какая цифра отвечает за какое направление