Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Иллидан on April 18, 2018, 04:50:38 AM
-
на экране куча одной и той же картинки, как заставить кликер тыкнуть на каждой из них без повторов тыка по предыдущим?
Примерный код дайте кто знает (про хеш я хз с чем его едят). :o
-
Тебе нужна функция SCANPICTURE возвращающая в массив все найденные картинки.
Шаблон из меню редактора.
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)
-
а как делается остановка не найденных ифов которая должна прерывать продолжение выполнения дочерних ифов и команд вних типа наведения курсора как в примере ниже в результате отсутствия искомой картинки?
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
-
у меня прост всё что идёт после последней скобки ифа (раньше енда) выполняется даже если ничё не найдено ???
и кстати currency(90) у меня пашет только в таком виде, у кого не пашет делайте так же :P
У тебя так происходит, потому что ты хитрее системы. Придумал свои параметры "currency(90)" и кликер тебя не понимает. Для него эти строки вообще не существуют он их выбрасывает как мусор. Да, да делайте так. Ещё и советы дурацкие. Ты завтра пропадёшь с форума, а эту хрень ещё годами будут находить и всем мозг выносить. Ну как так можно.
IF_PICTURE_IN(287,172,428,202,"Список игроков.bmp", -1, 90)
-
у меня прост всё что идёт после последней скобки ифа (раньше енда) выполняется даже если ничё не найдено ???
и кстати currency(90) у меня пашет только в таком виде, у кого не пашет делайте так же :P
У тебя так происходит, потому что ты хитрее системы. Придумал свои параметры "currency(90)" и кликер тебя не понимает. Для него эти строки вообще не существуют он их выбрасывает как мусор. Да, да делайте так. Ещё и советы дурацкие. Ты завтра пропадёшь с форума, а эту хрень ещё годами будут находить и всем мозг выносить. Ну как так можно.
IF_PICTURE_IN(287,172,428,202,"Список игроков.bmp", -1, 90)
???
Clickermann.exe/Clickermann Help/Язык сценариев/Анализ экрана/IF_PICTURE_IN/currency - необязательный параметр; точность поиска в процентах (1..99)
Ещё скажи что эт я создал кликермен и спарвку для него ;D
кликермен то меня понимает(ну таким образом да ;D) просто я не знаю как остановить выполнение потока ифа ???
-
Да... 'остановить выполнение потока' необходимо.
-
IF_PICTURE_IN(287,172,428,202,"Список игроков.bmp", -1, 90)
говориш эта строчка должна правильно работать?
Как раз так кликер зависает, ничё не находит, пропускает этот иф и идёт дальше.
IF_PICTURE_IN(287,172,428,202,"Список игроков.bmp", -1,currency(90))
а так чё надо находит и чё надо делает вот только чё надо делает даже если ничего не находит!
В случае с твоей строчкой весь блок от ифа до енда просто не работает и пропускается после прочтения а в случае с моей строчкой изображение находится и выполняются действия блока но эти действия выполняются даже если изображение не находится...
Clickermann v4.12.001 канеш 2016 года, или у тебя новее/старее что твой вариант
IF_PICTURE_IN(287,172,428,202,"Список игроков.bmp", -1, 90)
в твоём кликермене работает без зависания и как мне надо?(
Можеш написать пример моего кода как написал бы его ты?
У меня там явно чёто лишнее найдётся а я у ся твой пример проверю :P
-
а так чё надо находит и чё надо делает вот только чё надо делает даже если ничего не находит!
В случае с твоей строчкой весь блок от ифа до енда просто не работает и пропускается после прочтения а в случае с моей строчкой изображение находится и выполняются действия блока но эти действия выполняются даже если изображение не находится...
Просто мега неверные выводы!....
Тот бред что ты понаписал скорее всего вообще не воспринимается кликером, поэтому никаких условий нет, и все что внутри по любому выполняется.
А если написать по правильному то функция IF_PICTURE_IN ищет картинку "Список игроков.bmp" но не находит даже с 90% совпадением.
Здесь надо не функции ломать а правильно подготавливать картинки поиска!
Использовать процент совпадения без предварительной цветокоррекции бессмысленно. Так как в полно цветной графике со всеми там сглаживаниями и наложениями могут незначительно для глаза меняться все 100% пикселов.
Вот тут то и помогает цветокоррекция убирающая плавание градиентов, а легкие изменения в пикселах отсеиваются процентом совпадения.
-
Вот тут то и помогает цветокоррекция убирающая плавание градиентов, а легкие изменения в пикселах отсеиваются процентом совпадения.
ну я в паинте тупо вырезаю кусок скрина и сохраняю в битмап, а как подготавливать его тада под кликермен? ???
-
Вот тут то и помогает цветокоррекция убирающая плавание градиентов, а легкие изменения в пикселах отсеиваются процентом совпадения.
ну я в паинте тупо вырезаю кусок скрина и сохраняю в битмап, а как подготавливать его тада под кликермен? ???
Снимок надо сделать самим кликером вот таким скриптом
// Получение скриншота с цветокоррекцией (фильтр 6)
GETSCREEN // Снимок в буфер кликера
COLORMODE(6) // Цветокоррекция снимка в буфере кликера
SCREENSHOTEX(0,0, $_xmax,$_ymax, "Image_", 0) // Вывод снимка из буфера кликера в файл BMP
HALT
Из этого снимка надо вырезать фрагмент для поиска.
В своем скрипте также указываешь цветокоррекцию того же уровня
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 80)
LCLICK($_return1, $_return2)
WAITMS(100)
END_IF
-
LCLICK($_return1+12,$_return2+7)
UNDEFINE($_return1)
UNDEFINE($_return2)
они публичные или я их зря очищаю в каждом ифе?
-
$_return1 Используется для возврата в нее значения определенными инструкциями
$_return2 Аналогично
нормальным людям идея очищать системные переменные в думательный орган, до сих пор ни когда не приходила, вы первый и уникальный, с чем вас и паздрафляю.
пасиба ;D
халасо жы быть отличным от нормального стада! :P
-
Вот тут то и помогает цветокоррекция убирающая плавание градиентов, а легкие изменения в пикселах отсеиваются процентом совпадения.
ну я в паинте тупо вырезаю кусок скрина и сохраняю в битмап, а как подготавливать его тада под кликермен? ???
Снимок надо сделать самим кликером вот таким скриптом
// Получение скриншота с цветокоррекцией (фильтр 6)
GETSCREEN // Снимок в буфер кликера
COLORMODE(6) // Цветокоррекция снимка в буфере кликера
SCREENSHOTEX(0,0, $_xmax,$_ymax, "Image_", 0) // Вывод снимка из буфера кликера в файл BMP
HALT
Из этого снимка надо вырезать фрагмент для поиска.
В своем скрипте также указываешь цветокоррекцию того же уровня
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...
-
ооох, изначално все твои "тупит" и "зависает" изза недостоющих задержек. сам подумай, кликер ищет картинку, проц напрягается, если нашел, здорово, задержки клики и прочее ... но если не нашел, что он делает? а он без перерыва снова начинает искать, и снова искать ....
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 80)
LCLICK($_return1, $_return2)
WAITMS(100)
END_IF
waitms(100) // если не наше, отдых для цп!!!!
или
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)//отдых длдя цп!!!
-
ооох, изначално все твои "тупит" и "зависает" изза недостоющих задержек. сам подумай, кликер ищет картинку, проц напрягается, если нашел, здорово, задержки клики и прочее ... но если не нашел, что он делает? а он без перерыва снова начинает искать, и снова искать ....
ну ващет у меня после каждого ифа стоит задержка не меньше
WAIT(0.5)
на некоторых и несколько секунд.
Правда они стоят перед ендом внутри ифа, или надо снаружи ставить в теле скрипта а не ифов? 8)
он без перерыва снова начинает искать, и снова искать ....
если он ищет все ифы одновременно что сверхъестественно для обычного процесса, тада да а так у меня он же ищет в мелких областях экрана а не фулл что не должно сильно нагружать цп при последовательном выполнении ифов вместо одновременного бреда ;D
ну ща перенесу тада задержки наружу...
-
или надо снаружи ставить в теле скрипта а не ифов?
ЕСТЕСТВЕННО!!!
ну черт подери, за столько времени и постов с вопросами и ответами, можно же было уже наконец понять, что если картинки нет и ее не нашло, тогда то, что в твоем "ифе", не срабатывает, и твои задержки также не срабатывают. для этого и существуют условия "ифы", либо сработает либо нет, при определенных условиях. в данном случае, это условие присутствия картинки.
если он ищет все ифы одновременно что сверхъестественно для обычного процесса,
читай то что я написал выше.
у меня он же ищет в мелких областях экрана а не фулл что не должно сильно нагружать цп при последовательном выполнении ифов вместо одновременного бреда ;D
а это не важно, хоть ты один пиксель проверяй. без задержек он у тебя в секунду тыщи раз проверит, и при этом попытается выжать максимум с производительности твоего пк.
-
области обновления графического буфера не указаны.
Если он всунул десятку на слабый комп, забитый пылью и с большим монитором или несколькими, плюс параллельно работает несколько процессов и прожорливый игровой клиент, то такой код будет тормозить по любому.
затруднения с точным определением необходимых задержек между поиском картинок.
логично использовать не проверку, а ожидание картинок в заданном порядке с приемлемой разгрузкой внутри циклов ожидания.
0. Изи топовый лэптоп 17.2 дюйма, 3.4ГГц, 8 озу, 2.5 взу, HDD, винда заводское ограниченное гавно 10 home(ещё жду смерти гарантии)... :P
0.1. Параллельно работает рабочий стол на котором тестирую эти скрины задействованные фоном рабочего стола, действительно много жрёт правда не в этой вселенной 8)
1. области то везде де над указаны.
2. вотэта у меня виснит на 2 цыкле и жрёт 30% цп ничё неделая ???
$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
-
Речь идет об ограничении области снимка и цветокоррекции
Пример
$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"?
-
Какой размер в пикселах картинок "инвайт.bmp" и "выход.bmp"?
54x21(тупо кнопка)
329x68(слева кусок текста, справа 2 кнопки)
-
Вот смотри
54x21 = 1134 пикселов
329x68 = 22372 пикселов
Вторая картинка будет искаться в 19 раз дольше чем первая
Чем больше пикселов на сравнение тем дольше поиск. Во время работы функции горячие клавиши недоступны, поэтому кликер невозможно остановить, а анализироваться такая большая картинка (329x68) будет ощутимо долго.
Все что тебе нужно, срезать картинку до приемлемого размера
329x3 = 987
-
Все что тебе нужно, срезать картинку до приемлемого размера
329x3 = 987
приемлемый эт меньше 1 КБ или скок мона?
Все уменьшил меньше КБ и пока вроде всё норм.
А как их правильно всунуть друг в друга чтоб если первый блок не выполняется 2 других пропускались и так с остальными такими кучками?)
у меня всего штук 18 таких циклоифов ;)
так или мона лучше?
$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
-
Все что тебе нужно, срезать картинку до приемлемого размера
329x3 = 987
приемлемый эт меньше 1 КБ или скок мона?
Все уменьшил меньше КБ и пока вроде всё норм.
Не в килобайтах мерить надо а в пикселах.
50х50 что равняется 2500 пикселов считается нормой. Но картинку всегда нужно резать по минимуму, это сильно влияет на скорость поиска. Также на скорость влияет процент совпадения.
А как их правильно всунуть друг в друга чтоб если первый блок не выполняется 2 других пропускались и так с остальными такими кучками?)
у меня всего штук 18 таких циклоифов ;)
Ну правильно, если функция не найдет картинку то условие не выполнится и все что написано в нем тоже.
-
бальшое пасиба коту! ;D
/кот Oraven
а можно какнить скомпилировать скрипт кликермана в собственный бот-экзешник со своим интерфейсом шоб в скрипт не лез никто?
-
$ARR_NUM = 0
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
чё мне над дописать чтоб если найдёт больше 10 картинок то ставил не 999 секунд поиска времени а 10?)