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

Основной раздел => Общие вопросы => Topic started by: Andrey_S on November 15, 2015, 05:21:52 PM

Title: Сделать цикл
Post by: Andrey_S on November 15, 2015, 05:21:52 PM
Смысл скрипта следующий. Сначала делается цикл действий 7 раз. Потом идет перестановка состава и снова цикл 7 раз и т.д. Таких перестановок 15 шт. Когда выполнение программы доходит до конца и начинается с начала, циклы не повторяются. Т.е. я так понимаю переменная отбилась 7 раз и даже если выполнение идет повторно, считается что переменная уже обнулилась.
Для каждого цикла у каждой перестановки соответственно своя переменная.
Как сделать так, что когда скрипт заканчивается и начинается сначала, переменные бы также выполнялись заново.

Code: (clickermann) [Select]
FOR ($i, $i<7) //Oeee 1
   MOVE(701,423)
   LCLICK(702,423)  // 3355392
   LCLICK(702,423)  // 3355392
   WAITMS(500)
   MOVE(1003,331)
   LCLICK(1004,327)  // 3355392
   LCLICK(1004,327)  // 3355392
   WAITMS(2000)
   MOVE(887,738)
   LCLICK(886,738)  // 3355392
   LCLICK(886,738)  // 3355392
   WAITMS(15000)
   KEYPRESS(#A)
   WAITMS(95000)
   MOVE(1164,239)  // 3355392
   WAITMS(500)
   LCLICK(1164,239)
   LCLICK(1164,239)
   WAITMS(4000)
   GETSCREEN
   IF_PICTURE_IN (45,150, 1505,750, "1.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(50)
      LCLICK($_return1, $_return2)
      WAITMS(300)
   END_IF
   GETSCREEN
   IF_PICTURE_IN (45,150, 1505,750, "1.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(50)
      LCLICK($_return1, $_return2)
      WAITMS(300)
   END_IF
   WAITMS(500)
END_CYC
DELVAR($i)
   KEYPRESS(#A) // ia?aoaniaea 1 A?oeiaa
   WAITMS(500)
   LCLICK(532,267)  // 3355392
   LCLICK(532,267)  // 3355392
   WAITMS(500)
   LDOWN(712,320)  // 10078419
   WAITMS(500)
   MOVE(720,632)
   WAITMS(500)
   DBLCLICK(720,632)  // 12233647
   WAITMS(500)
   LDOWN(644,414)  // 10078419
   WAITMS(500)
   MOVE(621,632)
   WAITMS(500)
   DBLCLICK(621,632)  // 12233647
   WAITMS(500)
   LDOWN(712,412)  // 10078419
   WAITMS(500)
   MOVE(819,632)
   WAITMS(500)
   DBLCLICK(819,632)  // 12233647
   WAITMS(3000)
   GETSCREEN
   IF_PICTURE_IN (45,150, 1505,750, "1.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(50)
      LCLICK($_return1, $_return2)
      WAITMS(300)
   END_IF
   GETSCREEN
   IF_PICTURE_IN (45,150, 1505,750, "1.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(50)
      LCLICK($_return1, $_return2)
      WAITMS(300)
   END_IF
Title: Re: Сделать цикл
Post by: dramster on November 15, 2015, 05:50:07 PM
пременную $i можно обнулять или задавать начальное значение в самом условии цикла
Code: (clickermann) [Select]
FOR ($i=0, $i<7)я так понял, с помощью DELVAR($i) ты хотел удалить переменную (либо массив). правильно будет UNDEFINE ($i)
Title: Re: Сделать цикл
Post by: Oraven on November 15, 2015, 07:26:27 PM
Больше циклов!  ;D

Code: (clickermann) [Select]
FOR ($a=0,$a<7) //Oeee 1
   MOVE(701,423)
   LCLICK(702,423)  // 3355392
   LCLICK(702,423)  // 3355392
   WAITMS(500)
   MOVE(1003,331)
   LCLICK(1004,327)  // 3355392
   LCLICK(1004,327)  // 3355392
   WAITMS(2000)
   MOVE(887,738)
   LCLICK(886,738)  // 3355392
   LCLICK(886,738)  // 3355392
   WAITMS(15000)
   KEYPRESS(#A)
   WAITMS(95000)
   MOVE(1164,239)  // 3355392
   WAITMS(500)
   LCLICK(1164,239)
   LCLICK(1164,239)
   WAITMS(4000)
   FOR($b=0,$b<2)
      GETSCREEN
      IF_PICTURE_IN (45,150, 1505,750, "1.bmp", -1, 100)
         LCLICK($_return1, $_return2)
         WAITMS(50)
         LCLICK($_return1, $_return2)
         WAITMS(300)
      END_IF
   END_CYC
   WAITMS(500)
END_CYC

KEYPRESS(#A) // ia?aoaniaea 1 A?oeiaa
WAITMS(500)
LCLICK(532,267)  // 3355392
LCLICK(532,267)  // 3355392
WAITMS(500)
LDOWN(712,320)  // 10078419
WAITMS(500)
MOVE(720,632)
WAITMS(500)
DBLCLICK(720,632)  // 12233647
WAITMS(500)
LDOWN(644,414)  // 10078419
WAITMS(500)
MOVE(621,632)
WAITMS(500)
DBLCLICK(621,632)  // 12233647
WAITMS(500)
LDOWN(712,412)  // 10078419
WAITMS(500)
MOVE(819,632)
WAITMS(500)
DBLCLICK(819,632)  // 12233647
WAITMS(3000)
FOR($a=0,$a<2)
   GETSCREEN
   IF_PICTURE_IN (45,150, 1505,750, "1.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(50)
      LCLICK($_return1, $_return2)
      WAITMS(300)
   END_IF
END_CYC
Title: Re: Сделать цикл
Post by: Andrey_S on November 16, 2015, 03:38:44 PM
Когда пишу FOR ($a=0,$a<7), вообще цикл не начинается.

У меня в чем проблема, вот прошли 7 циклов с переменной i, потом перестановка и далее 7 циклов с переменной g. Если я опять ставлю переменную i (а не g), то никаких действий не происходит, т.к. к этому моменту i уже равна нулю.

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

Как это победить?
Title: Re: Сделать цикл
Post by: Oraven on November 16, 2015, 03:53:52 PM
Покажи наконец уже весь свой код, а то мы так еще долго будем гадать что у тебя не так. Версия кликера кстати надеюсь последняя 4.11.003?
Title: Re: Сделать цикл
Post by: Vint on November 16, 2015, 03:56:10 PM
Тебе же написали, обнулить переменную в самом теле цикла.

Когда пишу FOR ($a=0,$a<7), вообще цикл не начинается.
Что там у тебя не начинается?
Title: Re: Сделать цикл
Post by: Andrey_S on November 16, 2015, 04:10:55 PM
Никаких движений мышка не делает(
Title: Re: Сделать цикл
Post by: Andrey_S on November 16, 2015, 04:14:16 PM
там 800 строк, кидать?
Я закинул 2 цикла, у меня их 13 идентичных и потом все заново.

Стоит отряд 3 юнита. Делается 7 боев, потом меняются 3 юнита на новых 3 и опять 7 боев. Итак 13 перестановок. Как только 13я заканчивается, заново 1я не начинается, не далаею опять 7 боев. 
Title: Re: Сделать цикл
Post by: Oraven on November 16, 2015, 04:15:41 PM
Прикрепи файл значит.
Title: Re: Сделать цикл
Post by: Andrey_S on November 16, 2015, 04:30:42 PM
Файл во вложении
Title: Re: Сделать цикл
Post by: Oraven on November 16, 2015, 05:09:43 PM
У тебя начального параметра в цикле нет поэтому переменная и не обнуляется, нет необходимости писать каждый раз новую переменную для цикла если только цикл не вложен в другой цикл.
У тебя есть зажатия клавиш но нет отжатий. В конце лишний END_CYC. Ну и код очень не оптимизирован.

Вот исправленный оптимизированный вариант с использованием подпрограммы. В местах где у тебя меняются координаты подпрограмма подставляет значения через переменные, В каждом вызове описаны эти значения. Код сократился до 88 строк
Title: Re: Сделать цикл
Post by: Andrey_S on November 17, 2015, 07:48:52 AM
Все работает!!! Спасибо!!! Убрал только строчку где отжимается клавиша, как то не работает это в игре. Если что, напишу тогда!