Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: wally on December 30, 2017, 03:51:55 PM
-
Добрый день!
Помогите, пожалуйста, написать скрипт, автоматизирующий клики по кнопкам.
Суть такова:
1) Появляется окно Window1 (Start), нажимаю на него
2) Появляется окно Window3 (Wait), жду
3) Окно Window3 (Wait) исчезает, вместо него появляется окно Window2 (Next). Жму на него, снова появляется окно Window3 (Wait). Возвращаюсь к пункту 2.
4) После нескольких раз появляется жёлтое окно Window4 (Next). Жму на окно Window5 (Again) и возвращаюсь к пункту 1. Окно Window5 висит на протяжении всего времени, его нужно нажимать только в конце цикла.
Код, осуществляющий 2 и 3 пункты:
$time = $_time_t + 10
WHILE($time > $_time_t)
GETSCREEN
IF_PICTURE_IN (0,0, 1439,899, "Next.bmp")
$time = 0
LCLICK($_return1, $_return2)
ELSE
WAIT(2)
END_IF
END_CYC
Как сделать остальное, не знаю, выручайте ::)
Вот как это должно работать: [spoiler=Гифка](https://i.imgur.com/mCc0FVQ.gif)[/spoiler]
-
GETSCREEN
IF_PICTURE_IN (0,0, 1439,899, "Win_1_2.bmp")
LCLICK($_return1, $_return2)
WAIT(1)
ELSE
IF_PICTURE_IN (0,0, 1439,899, "Win_4.bmp")
LCLICK(300, 300) // Координата Win 5
WAIT(1)
ELSE
WAITMS(100)
END_IF
END_IF
-
Oraven, спасибо за ответ, но непонятно, что за окно Win1_2?
Вот немного дополнил свой код, но теперь он вешает кликерман. Что я делаю не так?
GETSCREEN
IF_PICTURE_IN (0,0, 1439,899, "Window1.bmp") // Если есть окно Start, нажать на него
LCLICK($_return1, $_return2)
WAIT(1)
ELSE // Если нет, то проверить, есть ли окно Next
GETSCREEN
IF_PICTURE_IN (0,0, 1439,899, "Window4.bmp") // Если есть окно Next, нажать на него
LCLICK($_return1, $_return2)
WAIT(1)
ELSE // Если нет, то проверить, есть ли окно "Press Restart"
GETSCREEN
IF_PICTURE_IN (0,0, 1439,899, "Window5.bmp") // Если есть, то нажать кнопку повтора Restart
LCLICK(1304, 714) // Координата Window2 (Restart)
WAIT(1)
ELSE
WAIT(1)
END_IF
END_IF
END_IF
-
В данном скрипте нужен только один снимок GETSCREEN вначале. Остальные снимки лишь ненужная нагрузка на проц.
Вешает потому что размер картинок слишком большой.
-
Oraven, там размер не сильно большой, ~120х40 пикселей/10-15 Кб каждая картинка
Удалил все GETSCREEN, кроме первого, всё равно зависает сразу после первого клика :'(
Описание:
Ошибка привела к остановке взаимодействия программы с Windows.
Сигнатура проблемы:
Имя события проблемы: AppHangB1
Имя приложения: Clickermann.exe
Версия приложения: 0.0.0.0
Отметка времени приложения: 2a425e19
Сигнатура зависания: f398
Тип зависания: 0
Версия ОС: 6.1.7601.2.1.0.256.1
Код языка: 1049
Доп. сигнатура зависания 1: f39884465db8b331e97ba822bbd518ef
Доп. сигнатура зависания 2: 94ec
Доп. сигнатура зависания 3: 94ece3a5c871495dba69edbb782bdd02
Доп. сигнатура зависания 4: f398
Доп. сигнатура зависания 5: f39884465db8b331e97ba822bbd518ef
Доп. сигнатура зависания 6: 94ec
Доп. сигнатура зависания 7: 94ece3a5c871495dba69edbb782bdd02
Ознакомьтесь с заявлением о конфиденциальности в Интернете:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0419
Если заявление о конфиденциальности в Интернете недоступно, ознакомьтесь с его локальным вариантом:
C:\Windows\system32\ru-RU\erofflps.txt
-
kiril, не помогло, после того как кликает первое окно сразу зависает :(
Комп перезагружал, запускал кликер от имени админа, выставлял время 5сек на все циклы - всё без толку.
-
если не помогло ЭТО, то применяйте то, вижу что размеры картинок и области их поиска, вы уменьшать почему-то не решились.
Размер области поиска тоже уменьшал - не помогло.
А насчёт размера картинок я не совсем понял, что вы имели в виду. В папке лежат обрезанные скриншоты окошек, а не скрин экрана целиком, если что :)
-
Определил, что скрипт зависает на последнем цикле:
IF_PICTURE_IN (0,0,$_xmax,$_ymax, "Window5.bmp") // Если есть, то нажать кнопку повтора Restart
LOGWRITE("нашёл Window5")
LCLICK(1304, 714) // Координата Window2 (Restart)
WAIT(1)
ELSE
WAIT(1)
END_IF
-
kiril,
Предполагаю, что и области поиск, вы значительно не уменьшали.
Я же выше написал, что уменьшал, толку в этом нет.
Кроме того разбирайтесь, что не так с вашим железом.
С ним всё в порядке, не волнуйтесь ;)
Результатов предложенных проверок тоже не вижу.
А какие результаты вам нужны? Выше есть сообщение о зависании процесса.
Если убрать третье условие, то скрипт выполняется без проблем. Если добавить третье, то он на нём виснет.
Вероятно вы не верно описали задачу
На гифке всё изображено в 100% точности
-
Попробуйте каждый этап логгировать детальнее, чтоб знать, где именно не срабатывает. Добавьте в каждый иф и в каждый элс по принту:
IF_PICTURE_IN (0,0,$_xmax,$_ymax, "WindowNN.bmp")
print("Ищем то-то.бмп. Нашёл Window5")
LCLICK(1304, 714) // Координата WindowNN
WAIT(1)
ELSE
print("Ищем то-то. HE нашёл Window5")
WAIT(1)
END_IF
Когда принты отчётные станут не нужны, просто закомментируйте их, не удаляя в дальний ящик.
Как уже сказал Кирилл, по возможности уменьшаем зоны поиска (когда на целом экране уже нашлась успешно) и размеры искомой картинки. Зона поиска у меня обычно в приделах 100*300 пикселей, но никак не весь экран (по всему иногда ищу только на начальном этапе отладки скрипта, но чаще всего сразу задаю нужную область). То есть у вас вместо 0,0,$_xmax,$_ymax должно быть нечто вроде 300,100,$_xmax-400,$_ymax-800 ну или то же самое (но не через $_xmax,$_ymax) по-другому 300,100,650,150. Теперь по поводу уменьшения размера картинок -- у меня искомые картинки практически всегда размером меньше 15*15 пикселей, а очень часто и примерно 5*5 (то есть они очень маленькие и поэтому ищутся оч быстро за 50-100 мс). А если вы вывесили огромное полотно и пытаетесь искать его неизвестно где по всему экрану да ещё быстро -- не удивляйтесь, что на поиск у вас будут уходить не возможные 200 мс, а все 10 сек (при этом проц греется и маслает, хотя вам это сильно не грозит -- у вас немалые задержки по секунде).
Если не находит картинку, почитайте эту старую тему (http://crapware.aidf.org/forum/index.php?topic=3255.0) (с кодом моей скринилки) и возможно примените скрипт внизу оттуда.
ЗЫ. Но раз окна там меняются и нужно отслеживать их смену, то безусловно здесь "лишние гетскрины" нужны, не знают, почему это у нас странно так советуют убрать их)) Без гетскринов кликер слеп, но городить лишние тоже не надо. Возможно, потому кликер ничего и не делает, что не может найти одну картинку или все сразу. Сначала нужно по очереди разобраться с каждой (успешно найти её), и только в случае успеха с тремя переходить к полному циклу. Ищите все картинке сперва по одиночке и следите за логом с принтами, что они пишут (нашлось/нет, если нет -- на каком этапе). Или вместо клика сделайте просто move в те же координаты, чтоб увидеть точно, куда мышь попадает. Может, она у вас находит сперва совсем не то, а вы и не замечаете. Сделайте скрины не своей скринилкой, а через кликер (линк со своей скринилкой я уже дал выше). Возможно, вы делаете скрины из пнг, а там может иметься компрессия и.. потери, соответственно, пиксельное несоответствие)) Кароч, добавляйте принты и лог нам в студию!
-
Добрый день!
Помогите, пожалуйста, написать скрипт, автоматизирующий клики по кнопкам.
Суть такова:
1) Появляется окно Window1 (Start), нажимаю на него
2) Появляется окно Window3 (Wait), жду
3) Окно Window3 (Wait) исчезает, вместо него появляется окно Window2 (Next). Жму на него, снова появляется окно Window3 (Wait). Возвращаюсь к пункту 2.
4) После нескольких раз появляется жёлтое окно Window4 (Next). Жму на окно Window5 (Again) и возвращаюсь к пункту 1. Окно Window5 висит на протяжении всего времени, его нужно нажимать только в конце цикла.
[spoiler=Гифка](https://i.imgur.com/mCc0FVQ.gif)[/spoiler]
Гифка конечно аддская, в следующий раз надо ещё подетальнее инфографику -__-
Теперь по поводу логики. Зачем нам знать, что есть пункт 2 (задержка)? Если это фиксированная задержка -- прописываем её через вейт между поисками, если же неопределённая, то какой смысл о ней говорить (ровно как и о вин3)? Нету по сути никакого "возврата" к пункту два (избыточные сведения в условии): просто сначала кликаем одну картинку, потом вторую и только после этого кликаем третью (обновление). Может, для верности тут ввести переменные, говорящие о том, что обе картинки первых уже кликнуты?))
-
Стоп-стоп! Сначала:
не помогло, после того как кликает первое окно сразу зависает :(
а потом:
Определил, что скрипт зависает на последнем цикле:
Так на третьем или на втором зависает? Но полюбак трабла в картинках, желательно б сделать упрощение цветов понижением палитры через colormode, особенно если работаем с браузером и его текстом (лучше привязываться к картинкам в браузере, а не к тексту, потому что тот может сглаживаться и незаметно менять пиксели, поэтому и не находит).