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

Основной раздел => Общие вопросы => Topic started by: andrace on December 11, 2014, 10:47:01 AM

Title: функция выполняется один раз
Post by: andrace on December 11, 2014, 10:47:01 AM
Всем привет, помогите пожалуйста.
Прив выполнении программы, функции вызываются всего один раз, но необходимо чтобы вызывалась каждый раз по окончанию цикла, но она там почему-то не вызывается.

один раз вызвалась, отработала
отработал цикл
отработал цикл
отработал цикл.... и так постоянно.

А теперь внимание вопрос!!! Почему?!!

Вот такая программулина :
Code: (clickermann) [Select]
DEFINE ($lab,      3914570544)
sub(cond)
   wndstate( wndfind("BlueStacks App Player"), 1)
   wndpos( wndfind("BlueStacks App Player"), 0, 0)
   $w = 0
   chk:
   GETSCREEN
   $islab = PXLCRC (306, 107, 500, 133)
   IF($islab ! $lab)
      $w= $w + 1
      if($w < 5)
         wait(1)
         logwrite("Задержка ", $w, " сек.")
         goto(chk)
      else
         logwrite("Не открыта нужная вкладка.")
         halt
      end_if
   END_IF
end_sub

start:

sub(find)
   $x1 = 115
   $y1 = 228
   $x2 = 205
   $y2 = 309
   GETSCREEN
   FOR($a, $a < 4)
      LOGWRITE ("find" $a )
      IF_PIXEL_IN ($x1,$y1, $x2, $y2, 7471103,16776960,7935,45311,16777215,63855)
         lclick($_return1, $_return2)
         WAITMS(100)
         lclick($_return1+160, $_return2+220)
         WAITMS(800)
         lclick(21,279)
         WAITMS(500)
         lclick(21,279)
      END_IF
      $x1 = $x1 + 150
      $x2 = $x2 +150
   END_CYC   
end_sub

cond()
LOGCLEAR

find()

//$var = 1

//while($var < 5)
// logwrite("var: ", $var)
// find()
// inc($var)
//end_cyc

for($var=0, $var < 6, 1 )
   
   lclick( 1194, 734 )
   WAIT(3)
   
   LOGWRITE ("clicked [compose] " $var )
   lclick(21,279)
   WAIT(1)
   lclick(21,279)
END_CYC

getscreen
find()

goto(start)
Title: Re: функция выполняется один раз
Post by: Vint on December 11, 2014, 11:24:12 AM
Строки
Code: (clickermann) [Select]
start:
goto(start)
лишние.
Так же лишний последний getscreen, который перед find()

Вот здесь:
Code: (clickermann) [Select]
FOR($a, $a < 4)ты не задаёшь нигде начальное $a и после отработки цикла один раз, $a=4 и цикл больше никогда не заработает.
Пиши так:
Code: (clickermann) [Select]
FOR($a=0, $a < 4)
Ну и на закуску нет запятых
LOGWRITE ("find", $a )
LOGWRITE ("clicked [compose], " $var )
Title: Re: функция выполняется один раз
Post by: andrace on December 11, 2014, 05:18:29 PM
Да спасибо, действительно присвоение между глаз попало ))).
По поводу догонки и так выводит, запятая необязательна, как показала практика
Title: Re: функция выполняется один раз
Post by: Oraven on December 11, 2014, 06:08:42 PM
Да спасибо, действительно присвоение между глаз попало ))).
По поводу догонки и так выводит, запятая необязательна, как показала практика

Тебе указали на ошибку, не нужно писать "И так работает" "и так выводит". Есть синтаксис и не стоит его нарушать.