Author Topic: Вопрос про циклы или нет)  (Read 2140 times)

0 Members and 3 Guests are viewing this topic.

Vitekzzzz

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Вопрос про циклы или нет)
« on: December 16, 2017, 06:37:44 PM »
Доброго времени суток! Задача такая хочу написать скрипт на игру где нужно искать мобов(тоесть кликать нужно в одну точку и находить фрагменты dmp в другой .их всего 6 шт.. но находится будет всего один из них либо неодно. Подскажите как сделать так чтобы при нахождении фрагмента прогрмма переключалась на кусок скрипта с боем. но если не нашла совподений листала дальше??Поскажите хотяб примерно)

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Вопрос про циклы или нет)
« Reply #1 on: December 17, 2017, 02:33:17 PM »
Как вариант
Code: (clickermann) [Select]
SUB(boi)
   // тело выполняется только после вызова
   // Здесь скрипт для боя
END_SUB

GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "1.bmp", -1, 100)
   LCLICK($_return1, $_return2) // Кликаем по найденному
   WAITMS(100)
   boi() // И запускаем подпрограмму боя
ELSE
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "2.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(100)
      boi()
   ELSE
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "3.bmp", -1, 100)
         LCLICK($_return1, $_return2)
         WAITMS(100)
         boi()
      ELSE
         IF_PICTURE_IN (0,0, $_xmax,$_ymax, "4.bmp", -1, 100)
            LCLICK($_return1, $_return2)
            WAITMS(100)
            boi()
         ELSE
            IF_PICTURE_IN (0,0, $_xmax,$_ymax, "5.bmp", -1, 100)
               LCLICK($_return1, $_return2)
               WAITMS(100)
               boi()
            ELSE
               IF_PICTURE_IN (0,0, $_xmax,$_ymax, "6.bmp", -1, 100)
                  LCLICK($_return1, $_return2)
                  WAITMS(100)
                  boi()
               END_IF
            END_IF
         END_IF
      END_IF
   END_IF
END_IF

WAITMS(50)

Vitekzzzz

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Re: Вопрос про циклы или нет)
« Reply #2 on: December 18, 2017, 07:50:39 PM »
Спасибо . Большое за помощь :). смоделировал по вашему варианту скрипт. Попробовал искать одного моба .скрипт его находит кликает на него.и Далее должен открывать подпрограмму с боем но он дальше начинает кликать на поиск.Я возможно понял где ошибка.но как исправить ее ума не приложу :( В итоге вот что получилось

Vitekzzzz

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Re: Вопрос про циклы или нет)
« Reply #3 on: December 18, 2017, 07:57:03 PM »
Code: (clickermann) [Select]
SUB(1)   
Скрипт боя..
   GETSCREEN
   IF_PICTURE_IN (695,392, 724,417, "11.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(100)
   END_IF
ELSE
   WAIT(2)
   GETSCREEN
   IF_PIXEL_IN(689,548, 704,557, 12670857)
      LCLICK($_return1, $_return2)
      WAITMS(100)
   END_IF
   GETSCREEN
   IF_PIXEL_IN(742,548, 762,561, 4234223)
      LCLICK($_return1, $_return2)
      WAITMS(1)
   END_IF
   GETSCREEN
   IF_PIXEL_IN(766,389, 784,411, 5737133)
      LCLICK($_return1, $_return2)
      WAITMS(1)
END_IF
   GETSCREEN
   IF_PIXEL_IN(680,438, 718,474, 5390376)
      LCLICK($_return1, $_return2)
      WAITMS(1)
   END_IF
   GETSCREEN
   IF_PIXEL_IN(766,390, 784,411, 2763306)
      LCLICK(932, 400)
      WAITMS(100)
   END_IF
END_SUB

9:
LCLICK(986,369) Клик для поиска моба...
WAIT(2)
GETSCREEN
IF_PIXEL_IN(388,519, 403,533, 2768619) Кординаты моба изменил на пиксель
   LCLICK($_return1, $_return2)
   WAITMS(100)
mysub(1)
goto(9)
END_IF
WAITMS(50)

« Last Edit: December 18, 2017, 09:33:41 PM by Oraven »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Вопрос про циклы или нет)
« Reply #4 on: December 18, 2017, 09:38:27 PM »
8 строка, что это за ELSE? К чему оно?

Разве так пишется подпрограмма?
Правильно так
Code: (clickermann) [Select]
SUB(имя) // описание подпрограмма
   // тело выполняется только после вызова
END_SUB

имя() // вызов подпрограммы (обязательно ниже описания подпрограммы)

Зачем там этот переход гото?

Code: (clickermann) [Select]
SUB(mysub)
   GETSCREEN
   IF_PICTURE_IN (695,392, 724,417, "11.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(100)
   END_IF
   WAIT(2)
   
   GETSCREEN
   IF_PIXEL_IN(689,548, 704,557, 12670857)
      LCLICK($_return1, $_return2)
      WAITMS(100)
   END_IF
   GETSCREEN
   IF_PIXEL_IN(742,548, 762,561, 4234223)
      LCLICK($_return1, $_return2)
      WAITMS(1)
   END_IF
   GETSCREEN
   IF_PIXEL_IN(766,389, 784,411, 5737133)
      LCLICK($_return1, $_return2)
      WAITMS(1)
   END_IF
   GETSCREEN
   IF_PIXEL_IN(680,438, 718,474, 5390376)
      LCLICK($_return1, $_return2)
      WAITMS(1)
   END_IF
   GETSCREEN
   IF_PIXEL_IN(766,390, 784,411, 2763306)
      LCLICK(932,400)
      WAITMS(100)
   END_IF
END_SUB

LCLICK(986,369)
WAIT(2)
GETSCREEN
IF_PIXEL_IN(388,519, 403,533, 2768619)
   LCLICK($_return1, $_return2)
   WAITMS(100)
   mysub()
END_IF
WAITMS(50)

Vitekzzzz

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Re: Вопрос про циклы или нет)
« Reply #5 on: December 19, 2017, 07:50:24 AM »
Версия 4.12..Я не спец возможно правильно так . гото я запихал так как отказывалась запускаться подпрограмма

Vitekzzzz

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Re: Вопрос про циклы или нет)
« Reply #6 on: December 19, 2017, 01:34:38 PM »
 ;DНУ да согласен.Только подпрограмма не запускается .как бы я ее не писал. не знаю в чем причина. и при запускании выше предложенного скрипта кликер проходит мимо нее

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Вопрос про циклы или нет)
« Reply #7 on: December 19, 2017, 01:55:07 PM »
Выполнение не может проходить мимо если скрипт написан верно. Разобраться в происходящем поможет запись в лог.

Code: (clickermann) [Select]
SUB(mysub)
   LOGWRITE ("Начало подпрограммы mysub")
   GETSCREEN
   IF_PICTURE_IN (695,392, 724,417, "11.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(100)
      LOGWRITE ("Найдено 11.bmp")
   END_IF
   WAIT(2)
   
   GETSCREEN
   IF_PIXEL_IN(689,548, 704,557, 12670857)
      LCLICK($_return1, $_return2)
      WAITMS(100)
      LOGWRITE ("Найден цвет 12670857")
   END_IF
   GETSCREEN
   IF_PIXEL_IN(742,548, 762,561, 4234223)
      LCLICK($_return1, $_return2)
      WAITMS(1)
      LOGWRITE ("Найден цвет 4234223")
   END_IF
   GETSCREEN
   IF_PIXEL_IN(766,389, 784,411, 5737133)
      LCLICK($_return1, $_return2)
      WAITMS(1)
      LOGWRITE ("Найден цвет 5737133")
   END_IF
   GETSCREEN
   IF_PIXEL_IN(680,438, 718,474, 5390376)
      LCLICK($_return1, $_return2)
      WAITMS(1)
      LOGWRITE ("Найден цвет 5390376")
   END_IF
   GETSCREEN
   IF_PIXEL_IN(766,390, 784,411, 2763306)
      LCLICK(932,400)
      WAITMS(100)
      LOGWRITE ("Найден цвет 2763306")
   END_IF
   LOGWRITE ("Конец подпрограммы mysub")
END_SUB

LCLICK(986,369)
WAIT(2)
GETSCREEN
IF_PIXEL_IN(388,519, 403,533, 2768619)
   LCLICK($_return1, $_return2)
   WAITMS(100)
   LOGWRITE ("Найден цвет 2768619")
   mysub()
END_IF
WAITMS(50)

Vitekzzzz

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Re: Вопрос про циклы или нет)
« Reply #8 on: December 19, 2017, 02:34:04 PM »
Всем спасибо! За уделенное внимание . Буду сам что нить придумывать. То достану тупыми вопросами) С записью в лог скрипт совсем перестал кликать на искомый цвет ну да ладно)