подскажите , есть 5 одинаковых картинок в браузере , и надо кликнуть по каждой. появляються в разных местах
set #a FindImage (0 0 1920 1080 (d:\myImages\wolf.bmp) %arr 2 80 -1 5)
hint Найдено картинок: size(%arr)
if #a > 0
for #i 1 size(%arr) // цикл для всех найденных картинок
move %arr[#i 1] %arr [#i 2] // навести курсор на каждую картинку
wait 500
end_for
end_if
end_script
set #a FindImage (0 0 1920 1080 (d:\myImages\wolf.bmp) %arr 2 80 -1 5)
hint Найдено картинок: size(%arr)
if #a > 0
for #i 1 size(%arr) // цикл для всех найденных картинок
move %arr[#i 1] %arr [#i 2] // навести курсор на каждую картинку
wait 500
end_for
end_if
end_script
set #a FindImage (0 0 1920 1080 (d:\myImages\wolf.bmp) %arr 2 80 -1 5)
hint Найдено картинок: size(%arr)
if #a > 0
for #i 1 size(%arr) // цикл для всех найденных картинок
move %arr[#i 1] %arr [#i 2] // навести курсор на каждую картинку
wait 500
end_for
end_if
end_script
А что значат числа "2 80 -1 5" после %arr?
http://uopilot.tati.pro/index.php?title=Findimage
Понятно, а поиск одного слова на экране тоже через финдимидж делается, или есть способ лучше?
А чем он плох? Иногда имеет смысл искать через встроенные средства браузера, но, как правило, ищут финдимиджем.
Ну в деле я пока еще не пробовал, просто слова не на монотонном фоне, а на динамичном фоне, и если картинка меняется, то картинка внутри буквы как бы тоже меняется, что не есть хорошо для финдимиджа....
Работает пока очень коряво, срабатывает через раз...
Вот картинки, первая оригинал, только черной рамкой я обвел.
А вторая совсем минимализм, в данный момент стоит вторая.
Прикрепленные файлы
Gem1.bmp ( 1022 байт )
Кол-во скачиваний: 208
Gem.bmp ( 894 байт )
Кол-во скачиваний: 151
Deviation задан в параметрах поиска? Погрешность ~2 обычно убирает очень много проблем.
https://forum.uokit.com/index.php?showtopic=30118&hl=findimage
Последний скрипт.
Я как понял скрипт готовый, нужно только указать пути, и сделать несколько скринов картинки?
Сначала подумал скрипт не рабочий, а потом потестил на собственном нарисованных картинках, он работает...
Выходит что на всех картинках снятые скриншотом, уникальные, на каждом скрине белые буквы имеют разные оттенки...
deviation подберите, часть пикселей всё равно останется. Их хватит для поиска.
Я попробую.
А пилоте есть функция, чтоб поиск пикселей начинал не слево сверху направо, а снизу справа налево?
Я так не раскурил тему про sort array...
я смекнул сделать так, более понятным мне способом.
Так я расставил приоритеты, когда весь экран залеплен этими картинками, и использовать сначала нужно те что ближе к себе...
:1
set #a FindImage (292, 300 960, 663 (C:\Gem\Gem.bmp) %arr 2 95 -1 5 )
hint Найдено картинок центр: size(%arr)
if #a > 0
kleft_down %arr [1 1], %arr [1 2]
wait 20
kleft_up %arr [1 1], %arr [1 2]
goto 1
else
set #a FindImage (54, 664 1109, 960 (C:\Gem\Gem.bmp) %arr 2 95 -1 5 )
hint Найдено картинок внизу: size(%arr)
if #a > 0
kleft_down %arr [1 1], %arr [1 2]
wait 20
kleft_up %arr [1 1], %arr [1 2]
goto 1
else
set #a FindImage (1110, 220 1279, 975 (C:\Gem\Gem.bmp) %arr 2 95 -1 5 )
hint Найдено картинок справо: size(%arr)
if #a > 0
kleft_down %arr [1 1], %arr [1 2]
wait 20
kleft_up %arr [1 1], %arr [1 2]
goto 1
else
set #a FindImage (0, 151 289, 945 (C:\Gem\Gem.bmp) %arr 2 95 -1 5 )
hint Найдено картинок слево: size(%arr)
if #a > 0
kleft_down %arr [1 1], %arr [1 2]
wait 20
kleft_up %arr [1 1], %arr [1 2]
goto 1
end_if
end_if
end_if
end_if
Не знаю в чем косяк но спустя время выбивает ошибку pos по координатам...хотя пробовал поиск и для одного объекта и для всех найденных с параметром -1
set #объект findimage (зона поиска(путь\s0.bmp) %s5 2 80 -1)
Screenshot_5.bmp ( 849,66 килобайт )
Кол-во скачиваний: 161
Для понимания процесса...есть 6 попыток... 7 слотов в которые рандомно падают конфеты в наборе 5, 3 и 1. Вот нужно собрать сперва максимальное колличество наборов сладостей а затем меншее... и лишнюю одну которая остаеться выбросить часто это набор по 1 но бывает и 3
set #s0 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s0.bmp) %s0 2 80)
while #s0 = 0 //пока есть попытки
set #s0 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s0.bmp) %s0 2 80)
set #s5 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s5.bmp) %s5 2 80)
if #s5 > 0 // поиск набора по 5 сладостей
set #s5 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s5.bmp) %s5 2 80)
set #x (%s5 [1 1] + %s5 [1 3]) / 2
set #y (%s5 [1 2] + %s5 [1 4]) / 2
left #x #y //клик на сладость
wait 1s
set #x1 (%s5 [1 1] + %s5 [1 3]) / 2 + 50
set #y1 (%s5 [1 2] + %s5 [1 4]) / 2 - 15
left #x1 #y1 //получить вкусняшку
wait 1s
end_if
set #s5 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s5.bmp) %s5 2 80)
if #s5 = 0 // если нет набора по 5
set #s3 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s3.bmp) %s3 2 80)
if #s3 > 0 //собирать по 3
set #s3 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s3.bmp) %s3 2 80)
set #x (%s3 [1 1] + %s3 [1 3]) / 2
set #y (%s3 [1 2] + %s3 [1 4]) / 2
left #x #y //клик на сладость
wait 1s
set #x1 (%s3 [1 1] + %s3 [1 3]) / 2 + 50
set #y1 (%s3 [1 2] + %s3 [1 4]) / 2 - 15
left #x1 #y1 //забрать вкусняшку
wait 1s
end_if
end_if
set #s3 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s3.bmp) %s3 2 80)
if #s3 = 0 // если нет наборов по 5 и 3
set #s3 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s3.bmp) %s3 2 80)
set #s1 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s1.bmp) %s1 2 80)
if #s1 > 0 //собирать по 1
set #s1 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s1.bmp) %s1 2 80)
set #x (%s1 [1 1] + %s1 [1 3]) / 2
set #y (%s1 [1 2] + %s1 [1 4]) / 2
left #x #y //клик по конфете
wait 1s
set #x1 (%s1 [1 1] + %s1 [1 3]) / 2 + 50
set #y1 (%s1 [1 2] + %s1 [1 4]) / 2 - 15
left #x1 #y1 //получить конфету
wait 1s
end_if
end_if
end_while
set #s0 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s0.bmp) %s0 2 80)
if #s0 > 1 //если все попытки израсходованы освободить слоты от сладостей
set #s00 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s00.bmp) %s00 2 80)
if #s00 > 0
set #s00 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s1.bmp) %s00 2 80)
set #x (%s00 [1 1] + %s00 [1 3]) / 2
set #y (%s00 [1 2] + %s00 [1 4]) / 2
left #x #y
wait 1s
set #x1 (%s00 [1 1] + %s00 [1 3]) / 2 - 50
set #y1 (%s00 [1 2] + %s00 [1 4]) / 2
left #x1 #y1
wait 1s
end_if
end_if
set #test параметры поиска
while #test > 1 // в принципе любое условие
set #test параметры поиска
//действие
end_while
set #s5 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s5.bmp) %s5 2 80)
if #s5 > 0
set #s5 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s5.bmp) %s5 2 80) // а если не найдётся?
set #x (%s5 [1 1] + %s5 [1 3]) / 2 // получим ошибку
set #y (%s5 [1 2] + %s5 [1 4]) / 2
left #x #y
wait 1s
set #x1 (%s5 [1 1] + %s5 [1 3]) / 2 + 50
set #y1 (%s5 [1 2] + %s5 [1 4]) / 2 - 15
left #x1 #y1
wait 1s
end_if
set #s5 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s5.bmp) %s5 2 80)
if #s5 > 0
set #s5 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s5.bmp) %s5 2 80) // а если не найдётся?
set #x (%s5 [1 1] + %s5 [1 3]) / 2 // получим ошибку
set #y (%s5 [1 2] + %s5 [1 4]) / 2
left #x #y
wait 1s
set #x1 (%s5 [1 1] + %s5 [1 3]) / 2 + 50
set #y1 (%s5 [1 2] + %s5 [1 4]) / 2 - 15
left #x1 #y1
wait 1s
end_if
Т.е. при повторном поиске изображение может и не найтись, а %s5 массив вы перезапишите в любом случае. Если не нашлось, а массив вы фактически уничтожили, то дальнейшее обращение к его элементам приведет к ошибке.
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)