Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: villacula on April 30, 2017, 08:29:53 PM
-
Здравствуйте, мне нужен спкрипт.
Что должно выполняться:
1. Поиск картинки: 1.bmp (4.2Кб 32х32) если картинка находится, то нажимается левая кнопка мыши и мы переходим на другой сайт. В этом сайте мы должны нажать на определенный текст и вернуться обратно в первую вкладку (google chrome)
2. Если первая картинка не нашлась, то ищется другая картинка 2.bmp (4.2Кб 32х32), далее как в первом пункте
3. Если программа выполнит все эти действия, то она не должна прекратить работу, она должна дожидаться появление картинки.
Помогите пожалуйста, я вообще не разбираюсь в программах,скриптах. Буду очень благодарна вам. ::)
-
НУ или помогите разобраться самому...
мне нужна информация конкретная
-
открываем справку, язык сценариев, анализ экрана. ищем IF_PICTURE_IN и читаем.
[spoiler]IF_PICTURE_IN
Синтаксис
IF_PICTURE_IN (x, y, x2, y2, "file", [bgcolor], [currency]) - производит поиск изображения в прямоугольной области буфера анализа
Параметры
x, y - числовые координаты левого верхнего угла области поиска
x2, y2 - числовые координаты правого нижнего угла области поиска
file - bmp файл, поиск которого будет осуществляться
bgcolor - необязательный параметр; игнорируемый цвет фона входного изображения
currency - необязательный параметр; точность поиска в процентах (1..99)
Возвращаемые параметры
$_return1 - x координата найденного изображения
$_return2 - y координата -//-
Пример
getscreen
IF_PICTURE_IN (10,20, 300, 300, "somefile.bmp")
move($_return1, $_return2) // либо твои действия, клики и т.п.
END_IF
Примечания
Работает аналогично IF_PIXEL_IN
Как только первый попавшийся участок будет найден, инструкция вернет его координаты в переменные $_return1, $_return2 (координаты верхнего левого угла) и прекратит анализ
Для того что бы участок признался подходящим, необходимо 100% соответствие пикселей bmp-файла и текущего снимка экрана. Или же можно задать цвет фона изображения, который не будет учитываться при поиске на экране. Если цвет фона не задан, изображение ищется с учетом всех пикселей
Так же можно задать не 100% совпадение. Для этого укажите в параметре currency необходимую точность. Этот параметр определяет на какое от общего числа количество несовпавших пикселей программа "закроет глаза". Однако имейте ввиду, что чем ниже значение точности, тем дольше идет поиск
Если параметр currency не задан, по умолчанию он равен 100. Если параметр bgcolor не задан, по умолчанию он равен -1. Если есть необходимость задать точность, не задавая фон, сделайте bgcolor равным -1
Входные файлы для анализа должны находиться в директории проекта, быть формта BMP и иметь стандартную разрядность 24 бита. В случае использования цветокоррекции, входной файл должен быть уже откорректирован. Чтобы добиться этого результата, выполните код ниже (подставив нужный код для colormode), затем вырежьте нужный участок картинки в каком-нибудь редакторе. Скриншот должен быть в BMP
getscreen
colormode(КОД_РЕЖИМА)
screenshot
[/spoiler]
далее, если "2. Если первая картинка не нашлась, то ищется другая картинка 2.bmp"
нужно добавить действие, которое выполнится если картинка не найдена
getscreen
IF_PICTURE_IN (10,20, 300, 300, "1.bmp")
// твои действия, клики и т.п. если картинка 1.bmp есть
else
IF_PICTURE_IN (10,20, 300, 300, "2.bmp")// твои действия, клики и т.п. если картинки 1.bmp нет
// твои действия, клики и т.п. если картинка 2.bmp есть
END_IF
END_IF
по поводу "В этом сайте мы должны нажать на определенный текст".
жмем ctrl+f, вводим искомый текст, жмем по найденному. в помощь "Процедуры и функции работы с клавиатурой" и поиск по цвету пикселя IF_PIXEL_IN, ищем в справке.
-
(http://rgho.st/6BkH4H2wf/image.png)
у меня не получается ничего=((
-
(http://i.imgur.com/bJNz72T.png)
(http://i.imgur.com/FpMQTYx.png)
-
Ты чудо! Спасибо.
буду пробовать...
-
открываем справку, язык сценариев, анализ экрана. ищем IF_PICTURE_IN и читаем.
[spoiler]IF_PICTURE_IN
Синтаксис
IF_PICTURE_IN (x, y, x2, y2, "file", [bgcolor], [currency]) - производит поиск изображения в прямоугольной области буфера анализа
Параметры
x, y - числовые координаты левого верхнего угла области поиска
x2, y2 - числовые координаты правого нижнего угла области поиска
file - bmp файл, поиск которого будет осуществляться
bgcolor - необязательный параметр; игнорируемый цвет фона входного изображения
currency - необязательный параметр; точность поиска в процентах (1..99)
Возвращаемые параметры
$_return1 - x координата найденного изображения
$_return2 - y координата -//-
Пример
getscreen
IF_PICTURE_IN (10,20, 300, 300, "somefile.bmp")
move($_return1, $_return2) // либо твои действия, клики и т.п.
END_IF
Примечания
Работает аналогично IF_PIXEL_IN
Как только первый попавшийся участок будет найден, инструкция вернет его координаты в переменные $_return1, $_return2 (координаты верхнего левого угла) и прекратит анализ
Для того что бы участок признался подходящим, необходимо 100% соответствие пикселей bmp-файла и текущего снимка экрана. Или же можно задать цвет фона изображения, который не будет учитываться при поиске на экране. Если цвет фона не задан, изображение ищется с учетом всех пикселей
Так же можно задать не 100% совпадение. Для этого укажите в параметре currency необходимую точность. Этот параметр определяет на какое от общего числа количество несовпавших пикселей программа "закроет глаза". Однако имейте ввиду, что чем ниже значение точности, тем дольше идет поиск
Если параметр currency не задан, по умолчанию он равен 100. Если параметр bgcolor не задан, по умолчанию он равен -1. Если есть необходимость задать точность, не задавая фон, сделайте bgcolor равным -1
Входные файлы для анализа должны находиться в директории проекта, быть формта BMP и иметь стандартную разрядность 24 бита. В случае использования цветокоррекции, входной файл должен быть уже откорректирован. Чтобы добиться этого результата, выполните код ниже (подставив нужный код для colormode), затем вырежьте нужный участок картинки в каком-нибудь редакторе. Скриншот должен быть в BMP
getscreen
colormode(КОД_РЕЖИМА)
screenshot
[/spoiler]
далее, если "2. Если первая картинка не нашлась, то ищется другая картинка 2.bmp"
нужно добавить действие, которое выполнится если картинка не найдена
getscreen
IF_PICTURE_IN (10,20, 300, 300, "1.bmp")
// твои действия, клики и т.п. если картинка 1.bmp есть
else
IF_PICTURE_IN (10,20, 300, 300, "2.bmp")// твои действия, клики и т.п. если картинки 1.bmp нет
// твои действия, клики и т.п. если картинка 2.bmp есть
END_IF
END_IF
по поводу "В этом сайте мы должны нажать на определенный текст".
жмем ctrl+f, вводим искомый текст, жмем по найденному. в помощь "Процедуры и функции работы с клавиатурой" и поиск по цвету пикселя IF_PIXEL_IN, ищем в справке.
Я не совсем понимаю
IF_PICTURE_IN (x, y, x2, y2, "file", [bgcolor], [currency]) - производит поиск изображения в прямоугольной области буфера анализа
А в каком участке поиск проходит? Я могу как то задать эту область?
Когда я ввела этот код,то у меня ничего не просхидит. ЧТо делать дальше?
я ввожу
getscreen
IF_PICTURE_IN (10,20, 300, 300, "1.bmp")
// твои действия, клики и т.п. если картинка 1.bmp есть
LCLICK($_return1+2, $_return2+2)
else
IF_PICTURE_IN (10,20, 300, 300, "2.bmp")// твои действия, клики и т.п. если картинки 1.bmp нет
// твои действия, клики и т.п. если картинка 2.bmp есть
LCLICK($_return1+2, $_return2+2)
END_IF
END_IF
-
Я не совсем понимаю
IF_PICTURE_IN (x, y, x2, y2, "file", [bgcolor], [currency]) - производит поиск изображения в прямоугольной области буфера анализа
А в каком участке поиск проходит? Я могу как то задать эту область?
Когда я ввела этот код,то у меня ничего не просхидит. ЧТо делать дальше?
ответ:
x, y - числовые координаты левого верхнего угла области поиска
x2, y2 - числовые координаты правого нижнего угла области поиска
Когда я ввела этот код,то у меня ничего не просхидит. ЧТо делать дальше?
да, нужно выставить свою область поиска (ускорит процесс поиска), либо выставить ее на весь экран 0,0, $_xmax,$_ymax . желательно выставить задержки WAIT(delay) или WAITMS(delay) после выполнения если этот код должен выполнятся по кругу. либо halt (стоп) если он должен выполниться один раз.
пример поиска картинки есть в папке с кликерманом \projects\if_picture_in
getscreen
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "shit.bmp", 2366701) //производит поиск рисунка какашки на главном окне кликера. заготовка shit.bmp с игнорируемым цветом 2366701 находится в папке со скриптом
print("shit.bmp found at X=", $_return1, ", Y=", $_return2)
move($_return1+8, $_return2+8)
else
print("shit.bmp not found")
END_IF
halt
если картинка на экране хоть немного не совпадает с образцом-заготовкой, то требуется выставить процент совпадения, параметр [currency]. несовпадения появляются при сглаживании картинки на экране.
-
SUB(pr1) // подпрограмма
// ищем текст на странице
KEYDOWN (#CTRL) // Ctrl+F
WAITMS (60)
KEYDOWN (#F)
WAITMS (60)
KEYUP (#F)
KEYUP (#CTRL)
WAITMS(50)
KEYPRESS(#DELETE) // удаляем предыдущий поиск
WAITMS(50)
KEYSTRING("текст для поиска") // Вводим текст для поиска
WAITMS(500)
GETSCREEN
IF_PIXEL_IN(0,0, $_xmax,$_ymax, 2350115) // нужно указать цвет выделения в браузере !!!
LCLICK($_return1+2, $_return2+2) // кликаем по найденному
WAITMS(500)
END_IF
KEYDOWN (#CTRL) // возвращаемся на первую вкладку
WAITMS (50)
KEYPRESS(#1)
KEYUP (#CTRL)
WAITMS(500)
END_SUB
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "1.bmp", -1, 100)
LCLICK($_return1, $_return2) // кликаем по найденной картинке
WAIT(1) // необходимая задержка
pr1() // переход в подпрограмму
ELSE
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "2.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAIT(1)
pr1()
ELSE
WAITMS(100) // задержка если ничего не найдено
END_IF
END_IF
-
ВООТ, вот за это спасибо.
Попробую соединить всё что вы мне сказали
-
SUB(pr1) // подпрограмма
// ищем текст на странице
KEYDOWN (#CTRL) // Ctrl+F
WAITMS (60)
KEYDOWN (#F)
WAITMS (60)
KEYUP (#F)
KEYUP (#CTRL)
WAITMS(50)
KEYPRESS(#DELETE) // удаляем предыдущий поиск
WAITMS(50)
KEYSTRING("текст для поиска") // Вводим текст для поиска
WAITMS(500)
GETSCREEN
IF_PIXEL_IN(0,0, $_xmax,$_ymax, 2350115) // нужно указать цвет выделения в браузере !!!
LCLICK($_return1+2, $_return2+2) // кликаем по найденному
WAITMS(500)
END_IF
KEYDOWN (#CTRL) // возвращаемся на первую вкладку
WAITMS (50)
KEYPRESS(#1)
KEYUP (#CTRL)
WAITMS(500)
END_SUB
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "1.bmp", -1, 100)
LCLICK($_return1, $_return2) // кликаем по найденной картинке
WAIT(1) // необходимая задержка
pr1() // переход в подпрограмму
ELSE
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "2.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAIT(1)
pr1()
ELSE
WAITMS(100) // задержка если ничего не найдено
END_IF
END_IF
я тут посмотрела и нашла вот это.
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "1.bmp")
print("Найден в координатах X=", $_return1, ", Y=", $_return2)
MOVE($_return1, $_return2)
Else
HINTPOPUP("Не найдено")
END_IF
HALT
Как только запускаю, картинка не находится=( я не понимаю в чем дело. Картинку я взяла с исходного кода сайта, перевела ее в бмп формат. вставила в папку 2 картинки, что не так я сделала?[/code]
-
SUB(pr1) // подпрограмма
// ищем текст на странице
KEYDOWN (#CTRL) // Ctrl+F
WAITMS (60)
KEYDOWN (#F)
WAITMS (60)
KEYUP (#F)
KEYUP (#CTRL)
WAITMS(50)
KEYPRESS(#DELETE) // удаляем предыдущий поиск
WAITMS(50)
KEYSTRING("текст для поиска") // Вводим текст для поиска
WAITMS(500)
GETSCREEN
IF_PIXEL_IN(0,0, $_xmax,$_ymax, 2350115) // нужно указать цвет выделения в браузере !!!
LCLICK($_return1+2, $_return2+2) // кликаем по найденному
WAITMS(500)
END_IF
KEYDOWN (#CTRL) // возвращаемся на первую вкладку
WAITMS (50)
KEYPRESS(#1)
KEYUP (#CTRL)
WAITMS(500)
END_SUB
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "1.bmp", -1, 100)
LCLICK($_return1, $_return2) // кликаем по найденной картинке
WAIT(1) // необходимая задержка
pr1() // переход в подпрограмму
ELSE
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "2.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAIT(1)
pr1()
ELSE
WAITMS(100) // задержка если ничего не найдено
END_IF
END_IF
Да и этот скрипт ничего не находит и ничего не делает. Не ctrl+f не нажимает, не вводит ничего...в чем проблема?
-
Как сделать скриншот:
Нажимаешь PrintScreen
Открываешь Paint и вставляешь скрин туда Ctrl+V
Вырезаешь что нужно. Картинка должна быть маленькой не более 50x50
Сохраняешь в BMP 24bit в папку со скриптом.
-
Так, зачем мне скриншот? если я картинку саму из исходного кода сайта взяла? у меня не один скрипт не завелся=(( не ошибок, ничего. Не могу оттолкнуться
-
Как сделать скриншот:
Нажимаешь PrintScreen
Открываешь Paint и вставляешь скрин туда Ctrl+V
Вырезаешь что нужно. Картинка должна быть маленькой не более 50x50
Сохраняешь в BMP 24bit в папку со скриптом.
Сделала скрин, картинка 24х32, сохранила в бмп в папку со скриптом. И опять ничего...Что мне дальше сделать надо?
-
Ну в справке же все написано
Для того что бы участок признался подходящим, необходимо 100% соответствие пикселей bmp-файла и текущего снимка экрана. Или же можно задать цвет фона изображения, который не будет учитываться при поиске на экране. Если цвет фона не задан, изображение ищется с учетом всех пикселей
Так же можно задать не 100% совпадение. Для этого укажите в параметре currency необходимую точность. Этот параметр определяет на какое от общего числа количество несовпавших пикселей программа "закроет глаза". Однако имейте ввиду, что чем ниже значение точности, тем дольше идет поиск
Если параметр currency не задан, по умолчанию он равен 100. Если параметр bgcolor не задан, по умолчанию он равен -1. Если есть необходимость задать точность, не задавая фон, сделайте bgcolor равным -1
Входные файлы для анализа должны находиться в директории проекта, быть формта BMP и иметь стандартную разрядность 24 бита. В случае использования цветокоррекции, входной файл должен быть уже откорректирован. Чтобы добиться этого результата, выполните код ниже (подставив нужный код для colormode), затем вырежьте нужный участок картинки в каком-нибудь редакторе. Скриншот должен быть в BMP
Кликер делает снимок GETSCREEN, и сравнивает функцией IF_PICTURE_IN каждый пиксел из BMP картинки с пикселами на экране.
При чем тут исходный код? Картинки масштабируются, сглаживаются и тд.
В системах выше XP сглаживание меняет пикселы в окнах, браузере каждый раз по разному. Достаточно переоткрыть окно и пикселы могут быть смазаны по другому. В настройках винды можно это сглаживание отключить.
Вот как только заходит тема о поиске картинок сразу же надо делать скриншоты с цветокоррекцией, убирающей градиенты, и искать с процентом совпадения, игнорируя некоторое количество не совпадающих пикселов.
снимок с цветокоррекцией делается таким скриптом
// Получение скриншота с цветокоррекцией (фильтр 6)
GETSCREEN
COLORMODE(6) // можно попробовать значения от 5 до 8
SCREENSHOT
HALT
снимок сохраняется в папку screens в рабочую папку скрипта (см. в заголовке редактора)
В своем скрипте также используем цветокоррекцию
GETSCREEN // снимок
COLORMODE(6) // цветокоррекция снимка
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 60) // поиск с 60% совпадением
LCLICK($_return1, $_return2)
WAITMS(100)
END_IF