Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: RaMzz on January 06, 2015, 02:26:19 AM
-
Вообщем делаю скриншот хочу чтоб нашел совпадения на экране "в этой области таже картинка либо нет" , но происходит что какие бы небыли картинки он всегда возвращает совпадения
//Коментарии первый раз пытаюсь понять что к чему
GETSCREEN // сделали скриншот экрана
SCREENSHOTEX(466,424, 478,455, "Image_", 0)//из скриншота область картинки сохранили в файл первый файл получился Image_0000.bmp
IF_PICTURE_IN (466,424, 478,455, "screens\image_0000.bmp",-1, 80)//тут мы получается сравниваем прямоугольную область буфера с изображением
move($_return1, $_return2) //почему ретурны всегда возвращают 466424 координаты, даже если на экране уже совершено другое, как я понял они должны возвращать координаты только в случае успешного совпадения буфера на данный момент с изображением Image_0000.bmp??
END_IF
print($_return1, $_return2)
HALT
>:(
почему ретурны всегда возвращают 466424 координаты, даже если на экране уже совершено другое, как я понял они должны возвращать координаты только в случае успешного совпадения буфера на данный момент с изображением Image_0000.bmp??
-
Не очень понятно зачем тебе это нужно. После SCREENSHOTEX лучше написать задержку, потому что сохранение файла дело не быстрое.
Ты написал print($_return1, $_return2) за условием поиска, и в чем твое удивление? Системные переменные $_return1, $_return2 небыли затронуты и значение в них осталось прежним. Более того, значения в них не обнуляются даже при остановке сценария. Они служат лишь для вывода значений, не стоит пытаться в них что то записать и обнулить. Их пишут только внутри условий.
Картинку, кстати, нужно потом удалять. Такой скрипт оправдан если ты делаешь скриншот в одной области а ищешь в другой или большей области.
GETSCREEN
SCREENSHOTEX(466,424, 478,455, "Image_", 0)
WAITMS(100)
IF_PICTURE_IN (466,424, 478,455, "screens\image_0000.bmp",-1, 80)
move($_return1, $_return2)
print($_return1, $_return2)
END_IF
TFCLEAR("screens\image_0000.bmp", 1) // удаляем картинку
HALT
В твоем случае можно использовать PXLCRC для получения хеш суммы области и сравнивания её в дальнейшем.
GETSCREEN
$hash1 = PXLCRC(466,424, 478,455) // снимаем хеш 1
WAITMS(500)
$hash2 = PXLCRC(466,424, 478,455) // через некоторое время снимаем хеш 2
IF($hash1 = $hash2) // сравниваем
HINTPOPUP("Совпадентие!")
HALT // стоп
END_IF
-
Принт внутрь условия это да. Но и внутри, в твоём случае будет всегда выдавать что нашло там же. Ты так составил свой пример. Сделал снимок, потом скриншот и сразу же на этом снимке ищешь то что взял С НЕГО ЖЕ. Естественно будет находить всегда даже при 100%.