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

Основной раздел => Общие вопросы => Topic started by: ShadowName on August 29, 2013, 05:47:19 PM

Title: вопрос по операторам if
Post by: ShadowName 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
такая вот программа. не могу придумать как сделать так чтоб программа ждала пока пиксел не поменяет цвет а как поменяет продолжила выполнение скрипта

Почему то коментарии не отобразились правельно. но не суть важно
Title: Re: вопрос по операторам if
Post by: Oraven 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

то есть пока по таким то координатам не появится заданный цвет цикл не прервется
Title: Re: вопрос по операторам if
Post by: ShadowName 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. просто в справке переход осушествлялся ниже по скрипту пропуская какуюто часть. а мне интересно например я могу ли я переместить выполнение скрипта вверх.?
Title: Re: вопрос по операторам if
Post by: ShadowName 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 пикселей вниз и сделать клик. но почему то сперва происходит клик а потом передвижение курсора. вожможно это связанно с тем что персонаж игры двигается. и курсор смещается относительно моба. но по разметке Х У он правильно кликает. но чар пробежал чуть чуть. и уже моб находится чуть ниже. как можно это убрать?
Title: Re: вопрос по операторам if
Post by: Oraven on August 30, 2013, 11:28:59 AM
Переход по GOTO осуществляется на метки где бы они не находились. Важно чтобы метка была уникальной (не нужно делать две метки с одинаковыми названиями)
В твоем случае переход на skip: бессмысленный, скрипт и так вернется туда в конце кода.

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

Code: (clickermann) [Select]
MOVE($_return1,$_return2+26)
LCLICK($_return1, $_return2+26)  //выделяем моба
Title: Re: вопрос по операторам if
Post by: ShadowName on August 30, 2013, 03:08:46 PM
кстати. ваш скрипт с ожиданием работает но есть минус. если рядом нет моба. то он зацикливается и не работает дальше. но у меня есть  мысли как устранить это.
Title: Re: вопрос по операторам if
Post by: Vint on August 30, 2013, 04:13:34 PM
кстати. ваш скрипт с ожиданием работает но есть минус. если рядом нет моба. то он зацикливается и не работает дальше. но у меня есть  мысли как устранить это.
Задача была: ждать пока не появится... Кто там должен быть рядом или не должен...
Тогда задача должна звучать так: ждать появление цвета там-то в течении такого-то времени...
или проверять цвет N число раз...
Если нет- идти дальше.
Title: Re: вопрос по операторам if
Post by: Oraven 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
Title: Re: вопрос по операторам if
Post by: ShadowName on August 31, 2013, 12:09:52 AM
спасибо ребят что помогаете. еще вопрос от меня назойливого. кликерман ни как взаимодействовать с орентирами игры. тоесть направлять чара в место по сетке ориинтации игры. тоесть он работает только с разрешением экрана и ни как в заимодействовать с игрой програмно не может?