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

Основной раздел => Использование => Topic started by: Myotus on February 21, 2015, 06:27:58 AM

Title: !!!Помощь с кликом по пикселям!!!
Post by: Myotus on February 21, 2015, 06:27:58 AM
Доброго времени суток вам кликероводы!!! Дабы не тыкать одну и ту же операцию пальцАми тысячу раз, решил прибегнуть к автоклику и избавить себя от прокачки мышцы на указательном пальце) Так собственно в чём суть набросал я скриптик со своими поверхностными знаниями на соответствующую операцию кликов по соответствующим координатам. Всё прекрасно окно игрули привязал к кликеру, все могу даже заниматься своими делами на том же ноуте. Всё бы не чего, но в силу ужасного спутникового интернета, столкнулся с проблемой разрыва соединения, ожиданием открытия меню, и т.д. и т.п. когда приходится постоянно контролировать программу клика, поправлять если куда-то не туда из-за задержки ткнет. Стал изучать справку и кпрограмке, нашел интересную функцию, кликов по цвету пикселя. ВОТ ОНО ЧТО МНЕ НУЖНО!!! Опять таки в угоду своих поверхностных знаний и по образцу в справке извоял ещё один скрипт по клику по цвету пикселя. И тут начались пляски с бубном. Как бы изначально всё получилось прошел по кругу, второму, третьему, а вот дальше почему-то нет. проскакивает то одно действие то другое и накладывается друг на дружку. Что я только не делал, нефига не получается. Вот и решил попросить помощи у знающих этого зверя умных людей.
Title: Re: !!!Помощь с кликом по пикселям!!!
Post by: Oraven on February 21, 2015, 08:40:30 AM
В твоем первом скрипте у тебя задержки от 1-8 секунд а в поиске пикселов их считай нет, кликер в бешеном ритме ищет их и кликает. В некоторых случаях курсор может мешать, поэтому после клика его нужно убрать куда то командой MOVE.
Комментарии пишут после двойной косой черты
Code: (clickermann) [Select]
// коммент
Можно написать не просто поиск а ожидание пиксела.
Title: Re: !!!Помощь с кликом по пикселям!!!
Post by: Myotus on February 21, 2015, 08:39:31 PM
По поводу убрать мышь чтобы не мешала поиску, это врядли так как нажатия происходят совершенно в разных квадратах, а вот по ожиданию пикселя это уже интересно. покажи пример этой команды пжлста
Title: Re: !!!Помощь с кликом по пикселям!!!
Post by: Vint on February 21, 2015, 08:59:24 PM
Этот пример, и не только он, есть даже в шаблонах.
Title: Re: !!!Помощь с кликом по пикселям!!!
Post by: Myotus on February 21, 2015, 09:06:25 PM
Блин блинский, я справку перечитал, но не нашёл, может там другими словами написано, просто напиши команду, а я уж сам поколдую куда её и как
Title: Re: !!!Помощь с кликом по пикселям!!!
Post by: Oraven on February 21, 2015, 10:14:17 PM
Code: (clickermann) [Select]
$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PIXEL_IN(0,0, $_xmax,$_ymax, 255)
      $check = 1
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
END_CYC
Title: Re: !!!Помощь с кликом по пикселям!!!
Post by: Myotus on February 21, 2015, 10:16:50 PM
Вот спасибки сегодня начну колдовать! Будут вопросы напишу и если получится, всё равно напишу)
Title: Re: !!!Помощь с кликом по пикселям!!!
Post by: Myotus on February 24, 2015, 06:55:28 AM
Code: [Select]
$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PIXEL_IN(1253,342, 1348,433, 12903907, 6327715,3359837, 10268599)   //выбор башни
      $check = 1
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
END_CYC

$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PIXEL_IN(1214,603, 1315,665, 11245682, 16250612, 571744, 8546372) //Окно атаки, кнопка атака
      $check = 1
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
END_CYC

$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PIXEL_IN(1138,392, 1288,473, 11179888, 15921388, 7296312, 12827007) //ошибка соединения
      $check = 1
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
END_CYC

$check = 3
WHILE($check = 3)
   GETSCREEN
   IF_PIXEL_IN(1006,334, 1109,425, 912383, 3825813, 1306879) //Окно выбора героя
      $check = 1
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
END_CYC

$check = 4
WHILE($check = 4)
   GETSCREEN
   IF_PIXEL_IN(982,357, 1026,397, 1121061, 2834256, 1118754, 8623004) //Окно выбора героя, подтверждение героя
      $check = 1
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
END_CYC

$check = 5
WHILE($check = 5)
   GETSCREEN
   IF_PIXEL_IN(1160,592, 1329,659, 11179888, 15921388, 7296312, 12827007) //Окно выбора героя, кнопка далее
      $check = 1
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
END_CYC

$check = 6
WHILE($check = 6)
   GETSCREEN
   IF_PIXEL_IN(1160,592, 1329,659, 11179888, 15921388, 7296312, 12827007) //Окно выбора войск, кнопка далее
      $check = 1
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
END_CYC

$check = 7
WHILE($check = 7)
   GETSCREEN
   IF_PIXEL_IN(1160,592, 1329,659, 11179888, 15921388, 7296312, 12827007) //Окно рун, кнопка далее
      $check = 1
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
END_CYC

$check = 8
WHILE($check = 8)
   GETSCREEN
   IF_PIXEL_IN(1160,592, 1329,659, 11179888, 15921388, 7296312, 12827007) //Окно синей бутылки, один раз в 20 ходов
      $check = 1
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
END_CYC

$check = 9
WHILE($check = 9)
   GETSCREEN
   IF_PIXEL_IN(1079,524, 1242,592, 11179888, 15921388, 7296312, 12827007) //Окно итога (результат)
      $check = 1
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
END_CYC

Вот что у меня получилось! С этим сценарием проходит 3-4 круга и зависает на выборе героя. проскакивая 2 действия.  Ниже кинул действия в принскринах. в каких местах я ошибаюсь?
Title: Re: !!!Помощь с кликом по пикселям!!!
Post by: Vint on February 24, 2015, 09:50:17 AM
Круто искать практически одинаковые кнопки по цвету. Гениальная идея.
Чуть что где задержалось с появлением, хватаем первую попавшуюся в области и жмакаем. Что нажали ХЗ.

По остальному... я походу вчера не выспался.
Title: Re: !!!Помощь с кликом по пикселям!!!
Post by: Myotus on February 24, 2015, 10:35:59 PM
Я прошу не судить строго. Я же писал изначально в самом первом посте, что навыков в кодах нет вообще. Только пытаюсь разобраться. И то, что скрипт проходил несколько кругов это ТОЧНО.
Есть много вопросов к шаблону который мне подсказали. в частности строчка $check =Х, что это? это какой то параметр проверки, т.е. если в условии при проверке получается Х, то продолжаем, если нет то что? сначала начинается или останавливается?

И как сделать чтобы, перед нажатием проверились все 4 цвета, если все 4 цвета есть тогда нажать.

Я же просто спрашиваю, а всё что в коде пишу это эксперемент. Я прекрасно понимаю что там написана полная чушь и всё это можно записать короче, но я не знаю как. Я читаю форум, тут кусок урвал инфы, там кусок и чтото получается, а что то нет.
   
Title: Re: !!!Помощь с кликом по пикселям!!!
Post by: Oraven on February 25, 2015, 06:50:16 AM
$check =Х это обычная переменная, имя её может быть любым и число в нее можно записывать любое. В цикле WHILE пишется условие, если переменная равна заданному числу то цикл крутится.

Code: (clickermann) [Select]
$check = 0 // присваиваем переменной число
WHILE($check = 0) // цикл при каждом проходе проверяет условие

$check = 999 // в какой то момент мы меняем значение переменной на другое число, и условие цикла станет не верным. Он отработает до конца и больше не начнется а выполнение пойдет ниже по скрипту.
END_CYC

Таким образом переменная $check выполняет роль переключателя в цикле.

В коде у тебя ошибок нет, но поиск пикселов на кнопках в зоне может быть не достаточно точным, возможны ложные срабатывания.
Ищи в место пикселов картинку, так куда точнее. Правда тут другая крайность, графика может меняться и придется еще осваивать цветокоррекцию с процентом совпадения.

Совет: прежде чем запускать свой скрипт, протестируй отдельным скриптом как точно и стабильно кликер находит картинку.
Title: Re: !!!Помощь с кликом по пикселям!!!
Post by: Myotus on March 12, 2015, 02:05:01 PM
Вопрос имеется.

Вот код.

Code: (clickermann) [Select]
[table]
[tr]
[td]GETSCREEN
    IF_PIXEL_IN(476,479, 618,624, 3359840)   //выбор башни
      LCLICK($_return1, $_return2)
      WAITMS(100)
END_IF

GETSCREEN
    IF_PIXEL_IN(412,881, 566,958, 11245682)   //АТАКОВАТЬ
      LCLICK($_return1, $_return2)
      WAITMS(100)
END_IF

GETSCREEN
    IF_PIXEL_IN(144,452, 270,559,  9083840)   //ГЕРОЙ
      LCLICK(410,626)
      WAITMS(100)
END_IF

GETSCREEN
    IF_PIXEL_IN(63,336, 168,438,  1637375)   //ГЕРОЙ
      LCLICK($_return1, $_return2)
      WAITMS(100)
END_IF[/td]
[/tr]
[/table]

Т.е. судя по командам должно быть так: взяли участок нашли там нужный пиксель нажали на него, ждем сек. КОНЕЦ ДЕЙСТВИЯ
далее берем следующий участок ищем пиксель, нашли, жмём на него. ждем сек. КОНЕЦ ДЕЙСТВИЯ.
далее берем следующий участок ищем пиксель, нашли, жмём на указаные коры. ждем сек. КОНЕЦ ДЕЙСТВИЯ
 ну и так далее.....

так вот в чём суть вопроса почему нет КОНЦА ДЕЙСТВИЯ каждого пункта они постоянно молотят без остановки и накладываются друг на друга
Title: Re: !!!Помощь с кликом по пикселям!!!
Post by: Vint on March 12, 2015, 04:32:52 PM
Что за "КОНЕЦ ДЕЙСТВИЯ"? Какого действия? Стоит ответить себе на этот вопрос и всё станет понятно и тебе и другим сможешь объяснить.
Title: Re: !!!Помощь с кликом по пикселям!!!
Post by: Oraven on March 12, 2015, 05:23:18 PM
Естественно, ведь у тебя просто серия поисков, нашел, не нашел переходит к другому и тд. А тебе нужно заключить каждый поиск в цикл, который снова и снов будет выполнять поиск пока не найдется твой пиксел.

Code: (clickermann) [Select]
$check = 0
WHILE($check = 0) // цикл выполняется пока пиксел не будет найден
   GETSCREEN
   IF_PIXEL_IN(476,479, 618,624, 3359840)   //выбор башни
      $check = 1
      LCLICK($_return1, $_return2)
      WAIT(1)
   ELSE
      WAITMS(50)
   END_IF
END_CYC // конец цикла

$check = 0
WHILE($check = 0) // следующий цикл со следующим поиском и тд.
   GETSCREEN
   IF_PIXEL_IN(412,881, 566,958, 11245682)   //АТАКОВАТЬ
      LCLICK($_return1, $_return2)
      WAIT(1)
   ELSE
      WAITMS(50)
   END_IF
END_CYC

$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PIXEL_IN(144,452, 270,559,  9083840)   //ГЕРОЙ
      LCLICK(410,626)
      WAIT(1)
   ELSE
      WAITMS(50)
   END_IF
END_CYC

$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PIXEL_IN(63,336, 168,438,  1637375)   //ГЕРОЙ
      LCLICK($_return1, $_return2)
      WAIT(1)
   ELSE
      WAITMS(50)
   END_IF
END_CYC
Title: Re: !!!Помощь с кликом по пикселям!!!
Post by: Myotus on March 12, 2015, 11:30:38 PM
Вот благодарю. Я то думал END_IF конец условия и на этом заканчивается. А оказывается не так.
Title: Re: !!!Помощь с кликом по пикселям!!!
Post by: Oraven on March 13, 2015, 07:30:50 AM
Забыл написать про переменную $check = 1 она выступает в роли переключателя.

Code: (clickermann) [Select]
check = 0
WHILE($check = 0) // цикл выполняется пока пиксел не будет найден
   GETSCREEN
   IF_PIXEL_IN(476,479, 618,624, 3359840)   //выбор башни
      $check = 1 // переменная меняется, цикл прерывается при проверке условия
      LCLICK($_return1, $_return2)
      WAIT(1)
   ELSE
      WAITMS(50)
   END_IF
END_CYC // конец цикла

$check = 0
WHILE($check = 0) // следующий цикл со следующим поиском и тд.
   GETSCREEN
   IF_PIXEL_IN(412,881, 566,958, 11245682)   //АТАКОВАТЬ
      $check = 1
      LCLICK($_return1, $_return2)
      WAIT(1)
   ELSE
      WAITMS(50)
   END_IF
END_CYC

$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PIXEL_IN(144,452, 270,559,  9083840)   //ГЕРОЙ
      $check = 1
      LCLICK(410,626)
      WAIT(1)
   ELSE
      WAITMS(50)
   END_IF
END_CYC

$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PIXEL_IN(63,336, 168,438,  1637375)   //ГЕРОЙ
      $check = 1
      LCLICK($_return1, $_return2)
      WAIT(1)
   ELSE
      WAITMS(50)
   END_IF
END_CYC

Title: Re: !!!Помощь с кликом по пикселям!!!
Post by: Myotus on March 13, 2015, 11:54:15 AM
Code: (clickermann) [Select]
$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PIXEL_IN(327,848, 456,947, 10653032)    //АТАКОВАТЬ в окне РУНЫ
$check = 1
  LCLICK($_return1, $_return2)
      WAIT(1)
      LCLICK(322,666)  //Синяя бутылка, всплывающее окно КНОПКА ОК
      WAIT(5)
      LCLICK(400,900)   //Кнопка АТАКОВАТЬ из первого условия  //IF_PIXEL_IN(327,848, 456,947, 10653032)//
   ELSE
    WAITMS(50)
   END_IF
END_CYC
Спасибо за совет, всё работает, только теперь вот какой момент. Вот в этом куске там получается нашли пиксель нажали на кнопку, а после нажатия бывает выскакивает всплывающее окно и надо нажать там кнопку, окно пропадает и снова нажать первую кнопку. Как мне это условие записать? Тут я просто указал левый клик через задержку и он постоянно там нажимает когда к нему подходит, это не удобно и теряется время, плюс задержка может быть и 10 сек и 20 или вообще пару сек.
 Я уже думал что-то вроде такого через или (I) WHILE((PXL (100, 100) ! пиксель в основном окне) I (100, 100) ! пиксель в всплывающем окне)). Только всё равно хрень какая-то. Или что-то после ELSE вписать
Кстати где посмотреть значения символов типа ! и какие ещё существуют. I,&,^ эти я знаю, а какие ещё есть?
Title: Re: !!!Помощь с кликом по пикселям!!!
Post by: Oraven on March 13, 2015, 04:30:06 PM
Code: (clickermann) [Select]
$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PIXEL_IN(327,848, 456,947, 10653032)    //АТАКОВАТЬ в окне РУНЫ
      $check = 1
      LCLICK($_return1, $_return2)
      WAIT(1)
      GETSCREEN
      IF(PXL(10,10) = 3) // тут настроить условие поиска пикселя
         LCLICK(322,666)  //Синяя бутылка, всплывающее окно КНОПКА ОК
         WAITMS(500)
         $check = 0 // сбрасываем переключатель
      END_IF
   ELSE
      WAITMS(50)
   END_IF
END_CYC

Значения все в справке описаны.
(http://savepic.net/6479065.png)
Title: Re: !!!Помощь с кликом по пикселям!!!
Post by: Myotus on March 14, 2015, 10:00:16 PM
Спасибо дружище, всё разобрался. Кое что дописал. Теперь работает без ошибок. Поставлю на ночь, проверю что получится