Author Topic: почему работает однократно?  (Read 2105 times)

0 Members and 1 Guest are viewing this topic.

Piano GX

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
почему работает однократно?
« on: March 05, 2016, 02:28:31 PM »
Code: (clickermann) [Select]

SUB(MOB,$XP2,$YP2,$X2,$Y2)
  IF(($XP2>$X2)&($YP2>$Y2))
KEYPRESS(#3) //1
  $C=PXLCOUNT($X2,$Y2,$XP2,$YP2,0)
  IF($C>100000000000000)
  ELSE
  LCLICK($X2,$Y2)
  END_IF
  END_IF
//  2
IF(($XP2<$X2)&($YP2<$Y2))
KEYPRESS(#3)
  $C=PXLCOUNT($XP2,$YP2,$X2,$Y2,0)
  IF($C>120000000000000000000000)
  ELSE
  LCLICK($X2,$Y2)
  END_IF
  END_IF 
  //3
  IF((($XP2>$X2)&($YP2<$Y2))|(($XP2=$X2)&($YP2<$Y2))|(($XP2>$X2)&($YP2=$Y2)))
  KEYPRESS(#3)
  $C=PXLCOUNT($X2,$YP2,$XP2,$Y2,0)
  IF($C>1200000000000000)
  ELSE
  LCLICK($X2,$Y2)
  END_IF
  END_IF   
  //4
   IF((($XP2<$X2)&($YP2>$Y2))|(($XP2<$X2)&($YP2=$Y2))|(($XP2=$X2)&($YP2>$Y2)))
   KEYPRESS(#3)
  $C=PXLCOUNT($XP2,$Y2,$X2,$YP2,0)
  IF($C>120000000000000)
  ELSE
  LCLICK($X2,$Y2)
  END_IF
  END_IF
  undefine($C)
  UNDEFINE($XP2)
  UNDEFINE($YP2)
  UNDEFINE($X2)
  UNDEFINE($Y2)
  END_SUB
  DEFINE($T,1)
DEFINE($YM,78)
getscreen
WAIT(1)
  WHILE($T>0) // должен выполняться пока не убьет всех врагов
if_pixel_in(200,$YM,1051,438,4867928,8354971, 6709384,13224393,12829897,166776959,11909303,16119285,15395562,15724527,484940,1994075,610626,39552,7961708,3362891,1385507,134412,534055,1059630,2636088,2252621)
$YM=$_RETURN2+5// присваивает координату 1 противника +5, второго , третьего и т.д по очереди
$X=$_RETURN1//получаем
$Y=$_RETURN2//                 координаты врага
DEFINE($A,2) // делаем 2 клика по нему,все работает нормально
WHILE($A>0)
MOB($XP,$YP,$X,$Y)
INC($A,-1)
END_CYC//заканччиваем атаку по  1 противнику
ELSE// если противников нет, то есть всех прокликал, выходит из цикла, а если прокликаны не все, то должен выполнить повторный цикл, вот тут загвостка какая-то , выходит из цикла после 1 выполнения, хотя есть по кому стрелять. цвета у противников одинаковые
$T=0
END_IF
END_CYC  //1
« Last Edit: March 05, 2016, 02:49:46 PM by Piano GX »

Atom

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
Re: почему работает однократно?
« Reply #1 on: March 05, 2016, 02:34:31 PM »
END_CYC в конце попробуй убрать

Piano GX

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Re: почему работает однократно?
« Reply #2 on: March 05, 2016, 02:39:29 PM »
END_CYC в конце попробуй убрать
нет, она должна там быть, без нее все равно однократно прогу прогоняет.

Piano GX

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Re: почему работает однократно?
« Reply #3 on: March 05, 2016, 02:53:23 PM »
А если убрать ELSE чтобы цикл повторялся бесконечно, но он все равно кликает только по одному противнику 2 раза и все

Piano GX

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Re: почему работает однократно?
« Reply #4 on: March 05, 2016, 02:58:50 PM »
нашел ошибку, как я понял, DEFINE  не работает повторно в цикле, и поэтому нужно после цикла его приравнивать к значению равному в DEFINE
после цикла добавил $A=2 и заработало

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: почему работает однократно?
« Reply #5 on: March 05, 2016, 03:56:18 PM »
Тебе не надо использовать DEFINE а нужно сразу писать $A=2. Хоть читаешь что тебе отвечают или просто мания шлепать темы на каждый чих?

DEFINE обычно применяют когда нужно объявить какое то начальное значение но потом позволить ему меняться.
Code: (clickermann) [Select]
DEFINE($a, 100) // начальное значение, при последующих проходах значение переменной не будет меняться
LOGWRITE ($a)
INC($a,1)
WAITMS(500)
« Last Edit: March 05, 2016, 03:59:42 PM by Oraven »