Author Topic: вопрос по операторам if  (Read 4531 times)

0 Members and 1 Guest are viewing this topic.

ShadowName

  • Освоившийся
  • **
  • Posts: 58
    • View Profile
вопрос по операторам if
« on: August 29, 2013, 05:47:19 PM »
Code: [Select]
//L2 ñïîèë ñîïîâ íà 9 ëâë
GETSCREEN   //äåëàåì ñêðèí
IF_PIXEL_IN(0,0, $_xmax,$_ymax, 10282153)   //ïîèñê ïèêñåëÿ ìîáà
   print("Ìîá íàéäåí Õ=", $_return1, ", Y=", $_return2)
   MOVE($_return1,$_return2+26)
   
   WAITMS(500)
   
   LCLICK($_return1, $_return2+26)  //âûäåëÿåì ìîáà
   
   WAITMS(500)
   
   KEYPRESS(#F2)   //æìåì ñïîèë
   
   WAITMS(500)
   
   IF_PIXEL_IN(613,56, 613,56, 3220570)  //óðîâåíü õï ìîáà 0
      print("Ìîá óáèò")
      KEYPRESS(#F3)       //ñáîð ñïîéëà
      WAIT(1)
     
   END_IF
END_IF
такая вот программа. не могу придумать как сделать так чтоб программа ждала пока пиксел не поменяет цвет а как поменяет продолжила выполнение скрипта

Почему то коментарии не отобразились правельно. но не суть важно

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: вопрос по операторам if
« Reply #1 on: August 30, 2013, 02:24:29 AM »
У тебя не хватает гетскрина, там были задержки поэтому он нужен

Code: (clickermann) [Select]
//L2 споил сопов на 9 лвл
GETSCREEN   //делаем скрин
IF_PIXEL_IN(0,0, $_xmax,$_ymax, 10282153)   //поиск пикселя моба
   print("Моб найден Х=", $_return1, ", Y=", $_return2)
   MOVE($_return1,$_return2+26)
   
   WAITMS(500)
   
   LCLICK($_return1, $_return2+26)  //выделяем моба
   
   WAITMS(500)
   
   KEYPRESS(#F2)   //жмем споил
   
   WAITMS(500)
   
   GETSCREEN
   IF_PIXEL_IN(613,56, 613,56, 3220570)  //уровень хп моба 0
      print("Моб убит")
      KEYPRESS(#F3)       //сбор спойла
      WAIT(1)
   END_IF
END_IF

Вот код для ожидания пиксела
Code: (clickermann) [Select]
//L2 споил сопов на 9 лвл
GETSCREEN   //делаем скрин
IF_PIXEL_IN(0,0, $_xmax,$_ymax, 10282153)   //поиск пикселя моба
   print("Моб найден Х=", $_return1, ", Y=", $_return2)
   MOVE($_return1,$_return2+26)
   
   WAITMS(500)
   
   LCLICK($_return1, $_return2+26)  //выделяем моба
   
   WAITMS(500)
   
   KEYPRESS(#F2)   //жмем споил
   
   WAITMS(500)
   
   GETSCREEN
   WHILE(PXL(613,56) ! 3220570) // ожидание
      WAITMS (100)
      GETSCREEN
   END_CYC
   WAITMS(500)
   
   //уровень хп моба 0
   print("Моб убит")
   KEYPRESS(#F3)       //сбор спойла
   WAIT(1)
END_IF

то есть пока по таким то координатам не появится заданный цвет цикл не прервется
« Last Edit: August 30, 2013, 02:29:05 AM by Oraven »

ShadowName

  • Освоившийся
  • **
  • Posts: 58
    • View Profile
Re: вопрос по операторам if
« Reply #2 on: August 30, 2013, 10:23:20 AM »
огромное спасибо

Еще такой вопрос. при использовании goto  можно ли поднять выполнение скрипта вверх? например
Code: (clickermann) [Select]
//L2 споил сопов на 9 лвл
skip:   //переход делаем сюда к примеру
GETSCREEN   //делаем скрин
IF_PIXEL_IN(0,0, $_xmax,$_ymax, 10282153)   //поиск пикселя моба
   print("Моб найден Х=", $_return1, ", Y=", $_return2)
   MOVE($_return1,$_return2+26)
 
   WAITMS(500)
 
   LCLICK($_return1, $_return2+26)  //выделяем моба
 
   WAITMS(500)
 
   KEYPRESS(#F2)   //жмем споил
 
   WAITMS(500)
 
   GETSCREEN
   IF_PIXEL_IN(613,56, 613,56, 3220570)  //уровень хп моба 0
      print("Моб убит")
      KEYPRESS(#F3)       //сбор спойла
      WAIT(1)
else
goto(skip) // отсюда при не выполнении условий делаем переход вверх
   END_IF
END_IF

тут я чисто как пример использовал goto. просто в справке переход осушествлялся ниже по скрипту пропуская какуюто часть. а мне интересно например я могу ли я переместить выполнение скрипта вверх.?
« Last Edit: August 30, 2013, 10:39:47 AM by ShadowName »

ShadowName

  • Освоившийся
  • **
  • Posts: 58
    • View Profile
Re: вопрос по операторам if
« Reply #3 on: August 30, 2013, 10:47:53 AM »
и еще вопрос. раньще с таким не сталкивался так как делал кликер для браузерных игр. а это клиентская и след проблема образовалась
Code: (clickermann) [Select]
/L2 споил сопов на 9 лвл
GETSCREEN   //делаем скрин
IF_PIXEL_IN(0,0, $_xmax,$_ymax, 10282153)   //поиск пикселя моба
   print("Моб найден Х=", $_return1, ", Y=", $_return2)
   MOVE($_return1,$_return2+26)
 
   WAITMS(500)
 
   LCLICK($_return1, $_return2+26)  //выделяем моба
 
   WAITMS(500)
 
   KEYPRESS(#F2)   //жмем споил
в этом участве кода. идет поиск титула моба. я еделал цвет титула моба уникальным в игре. но чтоб кликнуть и выделить моба нужно спуститься на 26 пикселей вниз и сделать клик. но почему то сперва происходит клик а потом передвижение курсора. вожможно это связанно с тем что персонаж игры двигается. и курсор смещается относительно моба. но по разметке Х У он правильно кликает. но чар пробежал чуть чуть. и уже моб находится чуть ниже. как можно это убрать?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: вопрос по операторам if
« Reply #4 on: August 30, 2013, 11:28:59 AM »
Переход по GOTO осуществляется на метки где бы они не находились. Важно чтобы метка была уникальной (не нужно делать две метки с одинаковыми названиями)
В твоем случае переход на skip: бессмысленный, скрипт и так вернется туда в конце кода.

Ну видимо надо убрать задержку, или сделать её минимальной

Code: (clickermann) [Select]
MOVE($_return1,$_return2+26)
LCLICK($_return1, $_return2+26)  //выделяем моба
« Last Edit: August 30, 2013, 11:31:50 AM by Oraven »

ShadowName

  • Освоившийся
  • **
  • Posts: 58
    • View Profile
Re: вопрос по операторам if
« Reply #5 on: August 30, 2013, 03:08:46 PM »
кстати. ваш скрипт с ожиданием работает но есть минус. если рядом нет моба. то он зацикливается и не работает дальше. но у меня есть  мысли как устранить это.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: вопрос по операторам if
« Reply #6 on: August 30, 2013, 04:13:34 PM »
кстати. ваш скрипт с ожиданием работает но есть минус. если рядом нет моба. то он зацикливается и не работает дальше. но у меня есть  мысли как устранить это.
Задача была: ждать пока не появится... Кто там должен быть рядом или не должен...
Тогда задача должна звучать так: ждать появление цвета там-то в течении такого-то времени...
или проверять цвет N число раз...
Если нет- идти дальше.


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: вопрос по операторам if
« Reply #7 on: August 30, 2013, 04:39:14 PM »
кстати. ваш скрипт с ожиданием работает но есть минус. если рядом нет моба. то он зацикливается и не работает дальше. но у меня есть  мысли как устранить это.

Там же в шаблонах есть пример

Вот с ожиданием и таймаутом

Code: (clickermann) [Select]
//L2 споил сопов на 9 лвл
GETSCREEN   //делаем скрин
IF_PIXEL_IN(0,0, $_xmax,$_ymax, 10282153)   //поиск пикселя моба
   print("Моб найден Х=", $_return1, ", Y=", $_return2)
   MOVE($_return1,$_return2+26)
   
   WAITMS(500)
   
   LCLICK($_return1, $_return2+26)  //выделяем моба
   
   WAITMS(500)
   
   KEYPRESS(#F2)   //жмем споил
   
   WAITMS(500)
   
   $time = $_time_t + 30 // 30 сек
   GETSCREEN
   WHILE((PXL(613,56) ! 3220570) & ($time > $_time_t)) // ожидание но не более 30 сек
      WAITMS (100)
      GETSCREEN
   END_CYC
   WAITMS(500)
   
   IF(PXL(613,56) ! 3220570) // сработает только если хп моба 0
      //уровень хп моба 0
      print("Моб убит")
      KEYPRESS(#F3)       //сбор спойла
      WAIT(1)
   END_IF   
END_IF
« Last Edit: August 30, 2013, 04:41:21 PM by Oraven »

ShadowName

  • Освоившийся
  • **
  • Posts: 58
    • View Profile
Re: вопрос по операторам if
« Reply #8 on: August 31, 2013, 12:09:52 AM »
спасибо ребят что помогаете. еще вопрос от меня назойливого. кликерман ни как взаимодействовать с орентирами игры. тоесть направлять чара в место по сетке ориинтации игры. тоесть он работает только с разрешением экрана и ни как в заимодействовать с игрой програмно не может?