Author Topic: Помогите написать не сложный скрипт  (Read 1237 times)

0 Members and 1 Guest are viewing this topic.

Prostoi

  • Зашел в гости
  • *
  • Posts: 1
    • View Profile
Добрый день. Уважаемые форумчане совсем чайник, стараюсь освоить кликер но не нашел интересующий меня вопрос, может плохо искал может так не делает кликер вообщем не знаю.
Суть в следующем нужно нажатие левой кнопки мыши через распознавание цвета но не на цвет а чуть левее.
Вложен файл primer1 есть монстр Белнистраз нужен клик на меч, но клик на меч через распознавание цвета Mn синий то есть левее цвета,  обусловлено это тем что у остальных игроков тоже появляется меч но цвет букв другой дабы не нападать на игроков.
Буду признателен если подкинете нужный скрипт или тему где можно найти и почитать как сделать самому.

Qwerry

  • Активный участник
  • ***
  • Posts: 117
    • View Profile
Re: Помогите написать не сложный скрипт
« Reply #1 on: August 09, 2018, 09:31:55 AM »
ДД. Чтобы кликнуть чуть левее (на пару пикселей ниже) чем найденный пиксель, совсем не обязательно искать меч.
Достаточно просто уточнить координаты клика. Т.к. поиск идет слева направо и сверху вниз, первым будет найден левый верхний угол буквы М (заменяете стандартную строчку на LCLICK($_return1-15, $_return2+3) - так клик будет на 15 пикселей левее и 3 ниже - ровно по мечу).

Code: (clickermann) [Select]
GETSCREEN
IF_PIXEL_IN(100,100, 200,400, 8917019)
   LCLICK($_return1-15, $_return2+3)
   WAITMS(100)
   Else
   print("no blue")
END_IF     
 halt

Для точной области поиска и правильного цвета, полагаю лучше всего воспользоваться лупой кликермана и вставкой координат и цвета (обычно через alt+Q). Print используется во время налаживания скриптов, чтобы понять что и где идет не так. После или закомментировать (// поставить перед лишними строчками), или стереть можно.


А для двойных условий (где меч может появляться в этом месте, а может и нет) можно вкладывать if-ы друг в друга:
Code: (clickermann) [Select]
GETSCREEN
IF_PIXEL_IN(0,0, $_xmax,$_ymax, 8917019)
print("blue") 
   IF_PIXEL_IN($_return1-20, $_return2, $_return1, $_return2+8, 0)
print("black")       
      LCLICK($_return1, $_return2)
      WAITMS(100)
   END_IF
Else
   print("no blue")     
END_IF
halt

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите написать не сложный скрипт
« Reply #2 on: August 09, 2018, 10:37:19 AM »
Там видимо будет список из нескольких таких мечей, из них надо выбрать с синим именем.

Для этого нужно найти все мечи функцией SCANPICTURE и в цикле относительно найденного меча проверить синие пикселы. Если совпадает то клик по мечу.
+24 -5 +45 +12 это как раз смещение XY относительно крайнего левого верхнего пиксела картинки меча до синих пикселов.

Code: (clickermann) [Select]
GETSCREEN
SCANPICTURE($ARR_SCAN, 300,100, 400,600, "picture.bmp", -1, 100)
FOR($i=0,$i<ARRSIZE($ARR_SCAN),2)
   IF_PIXEL_IN($ARR_SCAN[$i]+24, $ARR_SCAN[$i+1]-5, $ARR_SCAN[$i]+45, $ARR_SCAN[$i+1]+12, 14311528)
      LCLICK($ARR_SCAN[$i], $ARR_SCAN[$i+1])
      WAITMS(100)
      $i=ARRSIZE($ARR_SCAN) // завершаем цикл после первого найденного
   END_IF
END_CYC
UNDEFINE($ARR_SCAN)