Author Topic: !!!Помощь с кликом по пикселям!!!  (Read 11583 times)

0 Members and 2 Guests are viewing this topic.

Myotus

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
!!!Помощь с кликом по пикселям!!!
« on: February 21, 2015, 06:27:58 AM »
Доброго времени суток вам кликероводы!!! Дабы не тыкать одну и ту же операцию пальцАми тысячу раз, решил прибегнуть к автоклику и избавить себя от прокачки мышцы на указательном пальце) Так собственно в чём суть набросал я скриптик со своими поверхностными знаниями на соответствующую операцию кликов по соответствующим координатам. Всё прекрасно окно игрули привязал к кликеру, все могу даже заниматься своими делами на том же ноуте. Всё бы не чего, но в силу ужасного спутникового интернета, столкнулся с проблемой разрыва соединения, ожиданием открытия меню, и т.д. и т.п. когда приходится постоянно контролировать программу клика, поправлять если куда-то не туда из-за задержки ткнет. Стал изучать справку и кпрограмке, нашел интересную функцию, кликов по цвету пикселя. ВОТ ОНО ЧТО МНЕ НУЖНО!!! Опять таки в угоду своих поверхностных знаний и по образцу в справке извоял ещё один скрипт по клику по цвету пикселя. И тут начались пляски с бубном. Как бы изначально всё получилось прошел по кругу, второму, третьему, а вот дальше почему-то нет. проскакивает то одно действие то другое и накладывается друг на дружку. Что я только не делал, нефига не получается. Вот и решил попросить помощи у знающих этого зверя умных людей.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: !!!Помощь с кликом по пикселям!!!
« Reply #1 on: February 21, 2015, 08:40:30 AM »
В твоем первом скрипте у тебя задержки от 1-8 секунд а в поиске пикселов их считай нет, кликер в бешеном ритме ищет их и кликает. В некоторых случаях курсор может мешать, поэтому после клика его нужно убрать куда то командой MOVE.
Комментарии пишут после двойной косой черты
Code: (clickermann) [Select]
// коммент
Можно написать не просто поиск а ожидание пиксела.

Myotus

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
Re: !!!Помощь с кликом по пикселям!!!
« Reply #2 on: February 21, 2015, 08:39:31 PM »
По поводу убрать мышь чтобы не мешала поиску, это врядли так как нажатия происходят совершенно в разных квадратах, а вот по ожиданию пикселя это уже интересно. покажи пример этой команды пжлста

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: !!!Помощь с кликом по пикселям!!!
« Reply #3 on: February 21, 2015, 08:59:24 PM »
Этот пример, и не только он, есть даже в шаблонах.


Myotus

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
Re: !!!Помощь с кликом по пикселям!!!
« Reply #4 on: February 21, 2015, 09:06:25 PM »
Блин блинский, я справку перечитал, но не нашёл, может там другими словами написано, просто напиши команду, а я уж сам поколдую куда её и как

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: !!!Помощь с кликом по пикселям!!!
« Reply #5 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

Myotus

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
Re: !!!Помощь с кликом по пикселям!!!
« Reply #6 on: February 21, 2015, 10:16:50 PM »
Вот спасибки сегодня начну колдовать! Будут вопросы напишу и если получится, всё равно напишу)

Myotus

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
Re: !!!Помощь с кликом по пикселям!!!
« Reply #7 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 действия.  Ниже кинул действия в принскринах. в каких местах я ошибаюсь?

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: !!!Помощь с кликом по пикселям!!!
« Reply #8 on: February 24, 2015, 09:50:17 AM »
Круто искать практически одинаковые кнопки по цвету. Гениальная идея.
Чуть что где задержалось с появлением, хватаем первую попавшуюся в области и жмакаем. Что нажали ХЗ.

По остальному... я походу вчера не выспался.
« Last Edit: February 25, 2015, 06:40:49 AM by Vint »


Myotus

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
Re: !!!Помощь с кликом по пикселям!!!
« Reply #9 on: February 24, 2015, 10:35:59 PM »
Я прошу не судить строго. Я же писал изначально в самом первом посте, что навыков в кодах нет вообще. Только пытаюсь разобраться. И то, что скрипт проходил несколько кругов это ТОЧНО.
Есть много вопросов к шаблону который мне подсказали. в частности строчка $check =Х, что это? это какой то параметр проверки, т.е. если в условии при проверке получается Х, то продолжаем, если нет то что? сначала начинается или останавливается?

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

Я же просто спрашиваю, а всё что в коде пишу это эксперемент. Я прекрасно понимаю что там написана полная чушь и всё это можно записать короче, но я не знаю как. Я читаю форум, тут кусок урвал инфы, там кусок и чтото получается, а что то нет.
   

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: !!!Помощь с кликом по пикселям!!!
« Reply #10 on: February 25, 2015, 06:50:16 AM »
$check =Х это обычная переменная, имя её может быть любым и число в нее можно записывать любое. В цикле WHILE пишется условие, если переменная равна заданному числу то цикл крутится.

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

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

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

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

Совет: прежде чем запускать свой скрипт, протестируй отдельным скриптом как точно и стабильно кликер находит картинку.

Myotus

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
Re: !!!Помощь с кликом по пикселям!!!
« Reply #11 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]

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

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

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: !!!Помощь с кликом по пикселям!!!
« Reply #12 on: March 12, 2015, 04:32:52 PM »
Что за "КОНЕЦ ДЕЙСТВИЯ"? Какого действия? Стоит ответить себе на этот вопрос и всё станет понятно и тебе и другим сможешь объяснить.


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: !!!Помощь с кликом по пикселям!!!
« Reply #13 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

Myotus

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
Re: !!!Помощь с кликом по пикселям!!!
« Reply #14 on: March 12, 2015, 11:30:38 PM »
Вот благодарю. Я то думал END_IF конец условия и на этом заканчивается. А оказывается не так.