Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Regaf on December 12, 2014, 12:57:04 PM
-
Подскажите на компьютере сохранен небольшой фрагмент 2х2 см. скриншота рабочего стола в формате jpeg нужно чтобы кликерман отыскал этот фрагмент на рабочем столе и кликнул по нему. файл jpeg будет сделан на другом компьютере на котором возможно установлено другое разрешение экрана. реально это сделать, если да то как?
-
Открываешь справку, читаешь раздел Экран, функция IF_PICTURE_IN.
Начнем с того что фрагмент должен быть в BMP 24bit формате. Естественно конвертировать из JPG в BMP недопустимо. Размер фрагмента должен быть не более 50x50 пикселов.
Конечно кликер проглотит любой размер, но чем больше картинка тем дольше поиск, вплоть до зависания. Например в картинке 50x50 2500 пикселов, а в 100х2 всего 200. В результате вторая картинка найдется гораздо быстрее.
Полученный фрагмент нужно положить в туже папку где лежит скрипт.
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(100)
END_IF
Можно также сделать снимок самим кликером, функция SCREENSHOTEX позволяет сохранить заданную область
GETSCREEN // делаем снимок в буфер кликера
SCREENSHOTEX(400,400, 450,450, "Image_", 0) // сохраняем снимок
HALT // стоп
-
попробовал так как вы написали. в неподвижных играх все отлично, но для той что я хотел автоматизировать процесс не подходит. в игре названия кораблей которые нудно атаковать написаны вроде бы не подвижно, но похоже что текст и и фон за текстом с небольшой прозрачностью и движущийся фон игры все время не значительно меняет изображение, глазом этого не вижу но кликер не находит заданный фрагмент. Можете подсказать как это победить?
-
Используй цветокоррекцию, она сократит оттенки. И процент совпадения, позволит проигнорить несоответствующие пикселы.
Делаем скриншот с цветокоррекцией, вырезаем фрагмент
// Получение скриншота с цветокоррекцией (фильтр 6)
GETSCREEN
COLORMODE(6)
SCREENSHOT
HALT
GETSCREEN
COLORMODE(6) // указываем тот же уровень
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 80) // без прозрачности, 80% совпадения
LCLICK($_return1, $_return2)
WAITMS(100)
END_IF
-
в моем случае фон за текстом который нужно искать меняется от светло синего до черного. попробовал применить COLORMODE(6) не помогло. пробовал COLORMODE(8 ) сохраненная картинка получается идеальной (белый текст, черный фон) но все равно не находит ее кликер даже с погрешность 50%
-
Покажи скрины и картинку поиска, а то так гадать можно до второго пришествия.
(В PNG или BMP)
P.S И часть кода с поиском, а то тут всякое бывало...
-
как вставить изображение в ответ не разобрался. прикрепил как вложение.
так сохраню картинку
GETSCREEN
COLORMODE(6)
SCREENSHOTEX(1234,334, 1262,348, "Image_", 0)
HALT // стоп
так ищу картинку в игре
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Image_0000.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(100)
END_IF
-
А где картинка что ты ищешь? Которую заготовил?
Ну как минимум видно, что чётких границ нигде нет. Процент точно должен быть не 100.
И почему COLORMODE - 6, когда ты говорил 8.
-
просто сохранен скрипт был COLORMODE с фильтром 6. как писал выше пробовал разные варианты в том числе и 8. также пробовал менять процент совпадения от 100 до 50 с шагом в 10. естественно фильтр COLORMODE ставил одинаковый как для сохранения картинки так и для поиска.
-
и самый главный вопрос который надо наверное было задать раньше всего. есть какая то возможность делать скриншот картинки на одной машине и передавать в виде файла на другие, а на других машинах уже искать противника. на машинах разное разрешение и диагонали экранов. разрешение то выставить одинаковое можно но будет ли от этого толк? смысл сего скрипта в том что бы 1 человек одной командой указывал другим клиентам цель которую нужно дружно слить.
-
Можно, только синхронизировать нужно работу каким то образом. Чтобы ждал команды. Разрешение может быть разное.
И где этот "як." на первом скриншоте? С чем сравнивать? И желательно картинок несколько в разное время/месте.
Как будешь находить место, которое захватывать?
Самое главное нужно снизить процент совпадения. На сколько нужно подобрать, зависит от размера образца и как сильно корёжит искомую область.
Область выбрана не совсем удачно, куча чёрного не нужна.
Если ты всё время будешь захватывать именно такой размер 17х11 и в этом месте. То снижать думаю процентов на 5-7.
17х11=187 пикселов (всего)
5% = 9 пикс. Уже дофига на такой размер букв (но нужно смотреть другие варианты)
Уменьшить область отрубив чёрное, оставив не больше 1 пикс. рамки или вообще без неё. Тут важно как ты будешь область выцеплять.
-
Я так понял он ищет не звездолёты. Он ищет ники игроков и хочет передать часть отображаемого ника, чтобы другие компы/скрипты искали его у себя и нападали.
Т.е. он подумал и выбрал цель и все на неё кинулись толпой.
-
Сумма пикселей там не катит. Сглаживание сильно разнит текст. И панелька с ником перетекает в полупрозрачность.