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

Основной раздел => Общие вопросы => Topic started by: Иллидан on April 18, 2018, 04:50:38 AM

Title: Цикл нажимающий на куче повторённого изабражения
Post by: Иллидан on April 18, 2018, 04:50:38 AM
на экране куча одной и той же картинки, как заставить кликер тыкнуть на каждой из них без повторов тыка по предыдущим?
Примерный код дайте кто знает (про хеш я хз с чем его едят). :o
Title: Re: Цикл нажимающий на куче повторённого изабражения
Post by: Oraven on April 18, 2018, 08:13:25 AM
Тебе нужна функция SCANPICTURE возвращающая в массив все найденные картинки.

Шаблон из меню редактора.
Code: (clickermann) [Select]
GETSCREEN
SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "picture.bmp", -1, 100)

$ARR_NUM = 0
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
   $X = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   $Y = $ARR_SCAN [$ARR_NUM]
   INC($ARR_NUM,1)
   LCLICK($X, $Y)   // Клик
   WAITMS(100)
END_CYC
UNDEFINE($ARR_SCAN)
Title: Re: Цикл нажимающий на куче повторённого изабражения
Post by: Иллидан on April 25, 2018, 02:18:17 PM
а как делается остановка не найденных ифов которая должна прерывать продолжение выполнения дочерних ифов и команд вних типа наведения курсора как в примере ниже в результате отсутствия искомой картинки?

Code: [Select]
GETSCREEN
IF_PICTURE_IN(287,172,428,202,"Список игроков.bmp", -1,currency(90))
   MOVE(406,186)
   WAIT(0.5)
   LCLICK(353,186)
   WAIT(0.5)
   GETSCREEN
   IF_PICTURE_IN(427,209,464,257,"Пустой лайк.bmp", -1,currency(90))
      MOVE(446,250)
      WAIT(0.5)
      LCLICK(446,224)
      WAIT(0.5)
   END_IF
   GETSCREEN
   IF_PICTURE_IN(999,769,1157,807,"повтор.bmp", -1)
      MOVE(1120,784)
      WAIT(0.5)
      LCLICK(1078,783)
      WAIT(0.5)
   END_IF
END_IF

у меня прост всё что идёт после последней скобки ифа (раньше енда) выполняется даже если ничё не найдено ???

и кстати currency(90) у меня пашет только в таком виде, у кого не пашет делайте так же :P
Title: Re: Цикл нажимающий на куче повторённого изабражения
Post by: Vint on April 25, 2018, 02:40:09 PM
у меня прост всё что идёт после последней скобки ифа (раньше енда) выполняется даже если ничё не найдено ???

и кстати currency(90) у меня пашет только в таком виде, у кого не пашет делайте так же :P

У тебя так происходит, потому что ты хитрее системы. Придумал свои параметры "currency(90)" и кликер тебя не понимает. Для него эти строки вообще не существуют он их выбрасывает как мусор. Да, да делайте так. Ещё и советы дурацкие. Ты завтра пропадёшь с форума, а эту хрень ещё годами будут находить и всем мозг выносить. Ну как так можно.

Code: (clickermann) [Select]
IF_PICTURE_IN(287,172,428,202,"Список игроков.bmp", -1, 90)
Title: Re: Цикл нажимающий на куче повторённого изабражения
Post by: Иллидан on April 25, 2018, 04:55:57 PM
у меня прост всё что идёт после последней скобки ифа (раньше енда) выполняется даже если ничё не найдено ???

и кстати currency(90) у меня пашет только в таком виде, у кого не пашет делайте так же :P

У тебя так происходит, потому что ты хитрее системы. Придумал свои параметры "currency(90)" и кликер тебя не понимает. Для него эти строки вообще не существуют он их выбрасывает как мусор. Да, да делайте так. Ещё и советы дурацкие. Ты завтра пропадёшь с форума, а эту хрень ещё годами будут находить и всем мозг выносить. Ну как так можно.

Code: (clickermann) [Select]
IF_PICTURE_IN(287,172,428,202,"Список игроков.bmp", -1, 90)

 ???

Clickermann.exe/Clickermann Help/Язык сценариев/Анализ экрана/IF_PICTURE_IN/currency - необязательный параметр; точность поиска в процентах (1..99)

Ещё скажи что эт я создал кликермен и спарвку для него ;D

кликермен то меня понимает(ну таким образом да ;D) просто я не знаю как остановить выполнение потока ифа ???
Title: Re: Цикл нажимающий на куче повторённого изабражения
Post by: Vint on April 25, 2018, 06:31:08 PM
Да... 'остановить выполнение потока' необходимо.
Title: Re: Цикл нажимающий на куче повторённого изабражения
Post by: Иллидан on April 25, 2018, 07:23:14 PM

Code: (clickermann) [Select]
IF_PICTURE_IN(287,172,428,202,"Список игроков.bmp", -1, 90)

говориш эта строчка должна правильно работать?
Как раз так кликер зависает, ничё не находит, пропускает этот иф и идёт дальше.
Quote
Code: [Select]
IF_PICTURE_IN(287,172,428,202,"Список игроков.bmp", -1,currency(90))
а так чё надо находит и чё надо делает вот только чё надо делает даже если ничего не находит!

В случае с твоей строчкой весь блок от ифа до енда просто не работает и пропускается после прочтения а в случае с моей строчкой изображение находится и выполняются действия блока но эти действия выполняются даже если изображение не находится...

Clickermann v4.12.001 канеш 2016 года, или у тебя новее/старее что твой вариант
Code: (clickermann) [Select]
IF_PICTURE_IN(287,172,428,202,"Список игроков.bmp", -1, 90)в твоём кликермене работает без зависания и как мне надо?(

Можеш написать пример моего кода как написал бы его ты?
У меня там явно чёто лишнее найдётся а я у ся твой пример проверю :P
Title: Re: Цикл нажимающий на куче повторённого изабражения
Post by: Oraven on April 25, 2018, 08:42:36 PM
а так чё надо находит и чё надо делает вот только чё надо делает даже если ничего не находит!

В случае с твоей строчкой весь блок от ифа до енда просто не работает и пропускается после прочтения а в случае с моей строчкой изображение находится и выполняются действия блока но эти действия выполняются даже если изображение не находится...

Просто мега неверные выводы!....

Тот бред что ты понаписал скорее всего вообще не воспринимается кликером, поэтому никаких условий нет, и все что внутри по любому выполняется.

А если написать по правильному то функция IF_PICTURE_IN ищет картинку "Список игроков.bmp" но не находит даже с 90% совпадением.

Здесь надо не функции ломать а правильно подготавливать картинки поиска!
Использовать процент совпадения без предварительной цветокоррекции бессмысленно. Так как в полно цветной графике со всеми там сглаживаниями и наложениями могут незначительно для глаза меняться все 100% пикселов.
Вот тут то и помогает цветокоррекция убирающая плавание градиентов, а легкие изменения в пикселах отсеиваются процентом совпадения.
Title: Re: Цикл нажимающий на куче повторённого изабражения
Post by: Иллидан on April 25, 2018, 09:52:34 PM
Вот тут то и помогает цветокоррекция убирающая плавание градиентов, а легкие изменения в пикселах отсеиваются процентом совпадения.
ну я в паинте тупо вырезаю кусок скрина и сохраняю в битмап, а как подготавливать его тада под кликермен? ???
Title: Re: Цикл нажимающий на куче повторённого изабражения
Post by: Oraven on April 26, 2018, 07:29:18 AM
Вот тут то и помогает цветокоррекция убирающая плавание градиентов, а легкие изменения в пикселах отсеиваются процентом совпадения.
ну я в паинте тупо вырезаю кусок скрина и сохраняю в битмап, а как подготавливать его тада под кликермен? ???

Снимок надо сделать самим кликером вот таким скриптом
Code: (clickermann) [Select]
// Получение скриншота с цветокоррекцией (фильтр 6)
GETSCREEN // Снимок в буфер кликера
COLORMODE(6) // Цветокоррекция снимка в буфере кликера
SCREENSHOTEX(0,0, $_xmax,$_ymax, "Image_", 0) // Вывод снимка из буфера кликера в файл BMP
HALT

Из этого снимка надо вырезать фрагмент для поиска.
В своем скрипте также указываешь цветокоррекцию того же уровня

Code: (clickermann) [Select]
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 80)
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF
Title: Re: Цикл нажимающий на куче повторённого изабражения
Post by: Иллидан on April 28, 2018, 01:48:50 PM
Code: [Select]
LCLICK($_return1+12,$_return2+7)
UNDEFINE($_return1)
UNDEFINE($_return2)

они публичные или я их зря очищаю в каждом ифе?
Title: Re: Цикл нажимающий на куче повторённого изабражения
Post by: Иллидан on April 28, 2018, 03:46:56 PM
$_return1 Используется для возврата в нее значения определенными инструкциями
$_return2 Аналогично
нормальным людям идея очищать системные переменные в думательный орган, до сих пор ни когда не приходила, вы первый и уникальный, с чем вас и паздрафляю.
пасиба ;D
халасо жы быть отличным от нормального стада! :P
Title: Re: Цикл нажимающий на куче повторённого изабражения
Post by: Иллидан on April 28, 2018, 04:39:28 PM
Вот тут то и помогает цветокоррекция убирающая плавание градиентов, а легкие изменения в пикселах отсеиваются процентом совпадения.
ну я в паинте тупо вырезаю кусок скрина и сохраняю в битмап, а как подготавливать его тада под кликермен? ???

Снимок надо сделать самим кликером вот таким скриптом
Code: (clickermann) [Select]
// Получение скриншота с цветокоррекцией (фильтр 6)
GETSCREEN // Снимок в буфер кликера
COLORMODE(6) // Цветокоррекция снимка в буфере кликера
SCREENSHOTEX(0,0, $_xmax,$_ymax, "Image_", 0) // Вывод снимка из буфера кликера в файл BMP
HALT

Из этого снимка надо вырезать фрагмент для поиска.
В своем скрипте также указываешь цветокоррекцию того же уровня

Code: (clickermann) [Select]
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 80)
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF
вернул всё как было раньше - под твой стандарт.
Первая картинка находится и тыкается, дальше кликермен жрёт проц и ничё не делает касательно этих ифов...
Уменьшил везде % для поиска и всё равно зависает и ничё не находит, ток через время выполняет мои кривые ифы и дальше тупит :'(

мож проблема в Windows Гавно 10 home?(
в свойствах кликермена стоит админ с 7...
Title: Re: Цикл нажимающий на куче повторённого изабражения
Post by: dramster on April 28, 2018, 05:17:08 PM
ооох, изначално все твои "тупит" и "зависает" изза недостоющих задержек. сам подумай, кликер ищет картинку, проц напрягается, если нашел, здорово, задержки клики и прочее ... но если не нашел, что он делает? а он без перерыва снова начинает искать, и снова искать ....

Code: (clickermann) [Select]
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 80)
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF
waitms(100) // если не наше, отдых для цп!!!!


или

Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN(287,172,428,202,"Список игроков.bmp", -1,90)
   MOVE(406,186)
   WAITms(500)
   LCLICK(353,186)
   WAITms(500)
   GETSCREEN
   IF_PICTURE_IN(427,209,464,257,"Пустой лайк.bmp", -1,90)
      MOVE(446,250)
      WAITms(500)
      LCLICK(446,224)
      WAITms(500)
   END_IF
   GETSCREEN
   IF_PICTURE_IN(999,769,1157,807,"повтор.bmp")
      MOVE(1120,784)
      WAITms(500)
      LCLICK(1078,783)
      WAITms(500)
   END_IF
END_IF
waitms(100)//отдых длдя цп!!!
Title: Re: Цикл нажимающий на куче повторённого изабражения
Post by: Иллидан on April 28, 2018, 07:26:23 PM
ооох, изначално все твои "тупит" и "зависает" изза недостоющих задержек. сам подумай, кликер ищет картинку, проц напрягается, если нашел, здорово, задержки клики и прочее ... но если не нашел, что он делает? а он без перерыва снова начинает искать, и снова искать ....
ну ващет у меня после каждого ифа стоит задержка не меньше
Code: [Select]
WAIT(0.5)на некоторых и несколько секунд.
Правда они стоят перед ендом внутри ифа, или надо снаружи ставить в теле скрипта а не ифов? 8)

Quote
он без перерыва снова начинает искать, и снова искать ....
если он ищет все ифы одновременно что сверхъестественно для обычного процесса, тада да а так у меня он же ищет в мелких областях экрана а не фулл что не должно сильно нагружать цп при последовательном выполнении ифов вместо одновременного бреда ;D

ну ща перенесу тада задержки наружу...
Title: Re: Цикл нажимающий на куче повторённого изабражения
Post by: dramster on April 28, 2018, 08:11:40 PM
или надо снаружи ставить в теле скрипта а не ифов?
ЕСТЕСТВЕННО!!!

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

Quote
если он ищет все ифы одновременно что сверхъестественно для обычного процесса,
читай то что я написал выше.

Quote
у меня он же ищет в мелких областях экрана а не фулл что не должно сильно нагружать цп при последовательном выполнении ифов вместо одновременного бреда ;D
а это не важно, хоть ты один пиксель проверяй. без задержек он у тебя в секунду тыщи раз проверит, и при этом попытается выжать максимум с производительности твоего пк.
Title: Re: Цикл нажимающий на куче повторённого изабражения
Post by: Иллидан on April 29, 2018, 03:46:05 AM
области обновления графического буфера не указаны.
Если он всунул десятку на слабый комп, забитый пылью и с большим монитором или несколькими, плюс параллельно работает несколько процессов и прожорливый игровой клиент, то такой код будет тормозить по любому.

затруднения с точным определением необходимых задержек между поиском картинок.
логично использовать не проверку, а ожидание картинок в заданном порядке с приемлемой разгрузкой внутри циклов ожидания.
0. Изи топовый лэптоп 17.2 дюйма, 3.4ГГц, 8 озу, 2.5 взу, HDD, винда заводское ограниченное гавно 10 home(ещё жду смерти гарантии)...  :P
0.1. Параллельно работает рабочий стол на котором тестирую эти скрины задействованные фоном рабочего стола, действительно много жрёт правда не в этой вселенной 8)
1. области то везде де над указаны.
2. вотэта у меня виснит на 2 цыкле и жрёт 30% цп ничё неделая ???
Code: [Select]
$time = $_time_t + 2
WHILE($time > $_time_t)
   GETSCREEN
   COLORMODE(6)
   IF_PICTURE_IN (748,825,854,875,"инвайт.bmp", -1, 100)
      $time = 0
MOVE($_return1,$_return2)
MOVE($_return1+29, $_return2+9)
      WAIT(0.5)
   ELSE
      WAIT(1)
   END_IF
END_CYC

$time = $_time_t + 2
WHILE($time > $_time_t)
   GETSCREEN
   COLORMODE(6)
   IF_PICTURE_IN (356,190,1306,750,"выход.bmp", -1, 90)
      $time = 0
      MOVE($_return1,$_return2)
    LCLICK($_return1+277,$_return2+61)
      WAIT(0.5)
   ELSE
      WAIT(1)
   END_IF
END_CYC

тут же норм задержки, стандартный шаблон а чё не так? :P
Title: Re: Цикл нажимающий на куче повторённого изабражения
Post by: Oraven on April 29, 2018, 07:39:22 AM
Речь идет об ограничении области снимка и цветокоррекции
Пример
Code: (clickermann) [Select]
$time = $_time_t + 2
WHILE($time > $_time_t)
   GETSCREEN(748,825,854,875)
   COLORMODE(6,748,825,854,875)
   IF_PICTURE_IN (748,825,854,875,"инвайт.bmp", -1, 100)
      $time = 0
      MOVE($_return1,$_return2)
      MOVE($_return1+29, $_return2+9)
      WAIT(0.5)
   ELSE
      WAIT(1)
   END_IF
END_CYC

$time = $_time_t + 2
WHILE($time > $_time_t)
   GETSCREEN(356,190,1306,750)
   COLORMODE(6,356,190,1306,750)
   IF_PICTURE_IN (356,190,1306,750,"выход.bmp", -1, 90)
      $time = 0
      MOVE($_return1,$_return2)
      LCLICK($_return1+277,$_return2+61)
      WAIT(0.5)
   ELSE
      WAIT(1)
   END_IF
END_CYC

Но у тебя другая проблема. Если на долго виснет при поиске картинки то значит эта картинка слишком большого размера.
Какой размер в пикселах картинок "инвайт.bmp" и "выход.bmp"?
Title: Re: Цикл нажимающий на куче повторённого изабражения
Post by: Иллидан on April 29, 2018, 06:39:16 PM
Какой размер в пикселах картинок "инвайт.bmp" и "выход.bmp"?
54x21(тупо кнопка)
329x68(слева кусок текста, справа 2 кнопки)
Title: Re: Цикл нажимающий на куче повторённого изабражения
Post by: Oraven on April 29, 2018, 07:21:20 PM
Вот смотри
54x21 = 1134 пикселов
329x68 = 22372 пикселов

Вторая картинка будет искаться в 19 раз дольше чем первая

Чем больше пикселов на сравнение тем дольше поиск. Во время работы функции горячие клавиши недоступны, поэтому кликер невозможно остановить, а анализироваться такая большая картинка (329x68) будет ощутимо долго.

Все что тебе нужно, срезать картинку до приемлемого размера
329x3 = 987

Title: Re: Цикл нажимающий на куче повторённого изабражения
Post by: Иллидан on April 30, 2018, 02:54:11 PM
Все что тебе нужно, срезать картинку до приемлемого размера
329x3 = 987
приемлемый эт меньше 1 КБ или скок мона?
Все уменьшил меньше КБ и пока вроде всё норм.

А как их правильно всунуть друг в друга чтоб если первый блок не выполняется 2 других пропускались и так с остальными такими кучками?)
у меня всего штук 18 таких циклоифов ;)

так или мона лучше?

Code: [Select]
$time = $_time_t + 2
WHILE($time > $_time_t)
   GETSCREEN(1515,863,$_xmax,$_ymax)
   COLORMODE(1515,863,$_xmax,$_ymax)
   IF_PICTURE_IN (1515,863,$_xmax,$_ymax,"тык.bmp", -1, 100)
      $time = 0
      MOVE($_return1,$_return2)
      LCLICK($_return1+25,$_return2+2)
      WAIT(1)

$time = $_time_t + 2
WHILE($time > $_time_t)
   GETSCREEN(513,340,1087,465)
   COLORMODE(6,513,340,1087,465)
   IF_PICTURE_IN (513,340,1087,465,"конец.bmp", -1, 100)
      $time = 0
      MOVE($_return1,$_return2)
      LCLICK($_return1+47,$_return2+53)
      WAIT(2)
      HALT
   ELSE
      WAIT(1)
   END_IF
END_CYC

   ELSE
      WAIT(1)
   END_IF
END_CYC

$time = $_time_t + 1
WHILE($time > $_time_t)
   GETSCREEN(276,165,432,205)
   COLORMODE(6,276,165,432,205)
   IF_PICTURE_IN (276,165,432,205,"поиск.bmp", -1, 100)
      $time = 0
      MOVE($_return1,$_return2)
      LCLICK($_return1+26,$_return2+3)
      WAIT(1)

$time = $_time_t + 1
WHILE($time > $_time_t)
   GETSCREEN(427,209,464,257)
   COLORMODE(6,427,209,464,257)
   IF_PICTURE_IN (427,209,464,257,"инвайт.bmp", -1, 100)
      $time = 0
      MOVE($_return1,$_return2)
      LCLICK($_return1+10,$_return2+9)
      WAIT(1)

$time = $_time_t + 1
WHILE($time > $_time_t)
   GETSCREEN(999,769,1157,807)
   COLORMODE(6,999,769,1157,807)
   IF_PICTURE_IN (999,769,1157,807,"тык.bmp", -1, 100)
      $time = 0
      MOVE($_return1,$_return2)
      LCLICK($_return1+24,$_return2+2)
      WAIT(1)
   ELSE
      WAIT(1)
   END_IF
END_CYC

   ELSE
      WAIT(1)
   END_IF
END_CYC

   ELSE
      WAIT(1)
   END_IF
END_CYC
Title: Re: Цикл нажимающий на куче повторённого изабражения
Post by: Oraven on April 30, 2018, 03:57:24 PM
Все что тебе нужно, срезать картинку до приемлемого размера
329x3 = 987
приемлемый эт меньше 1 КБ или скок мона?
Все уменьшил меньше КБ и пока вроде всё норм.

Не в килобайтах мерить надо а в пикселах.
50х50 что равняется 2500 пикселов считается нормой. Но картинку всегда нужно резать по минимуму, это сильно влияет на скорость поиска. Также на скорость влияет процент совпадения.

А как их правильно всунуть друг в друга чтоб если первый блок не выполняется 2 других пропускались и так с остальными такими кучками?)
у меня всего штук 18 таких циклоифов ;)

Ну правильно, если функция не найдет картинку то условие не выполнится и все что написано в нем тоже.


Title: Re: Цикл нажимающий на куче повторённого изабражения
Post by: Иллидан on May 10, 2018, 11:21:30 PM
бальшое пасиба коту!  ;D
/кот Oraven

а можно какнить скомпилировать скрипт кликермана в собственный бот-экзешник со своим интерфейсом шоб в скрипт не лез никто?
Title: Re: Цикл нажимающий на куче повторённого изабражения
Post by: Иллидан on May 23, 2018, 05:41:11 PM

Code: (clickermann) [Select]
$ARR_NUM = 0
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
чё мне над дописать чтоб если найдёт больше 10 картинок то ставил не 999 секунд поиска времени а 10?)