Помогите разобраться, как можно написать скрипт чтобы UoPilot искал сразу много картинок( штук 10) и выполнял действие при нахождении хотя бы одной?
В описании оператора Findimage написан примерный скрипт, но он ищет только одну указанную картинку в цикле (for #i 1 #size 1)- ищет только "картинка 1"
// Пример 5 // поиск нескольких картинок // перед запуском скрипта не забываем привязать скрипт к рабочему окну (Ctrl+A) set #startX 0 set #startY 0 set #endX 1920 set #endY 1080 set $path "C:\Program Files\UOPilot\images\" // путь к картинкам set %image [1] картинка1 // имя изображения set %image [2] картинка2 // имя второго изображения set %image [3] картинка3 // третьего set %image [4] картинка4 // имена могут быть любыми
set #size size(%image) // всего картинок hint Всего картинок #size
:metka for #i 1 #size 1 // цикл для поиска картинок set #a findimage (#startX #startY #endX #endY ($path%image[#i].bmp) %arr 2) if #a > 0 move %arr[1 1] %arr[1 2] // переместить курсор на найденную картинку wait 500 // ждать 0,5 секунды end_if end_for wait 3000 // ждать 3 секунды goto metka
for #i 1 #size 1 так ищет и находит картинка1 и перемещает курсор на нее если изменить на for #i 2 #size 1 ищет и находит только картинка2 и перемещает курсор на нее если изменить на for #i 3 #size 1 ищет и находит только картинка3 и перемещает курсор на нее и тд
а мне нужно чтобы искал все картинки и перемещал курсор только на найденную картинку
cirus, спасибо за ответы, я создал новые 5 картинок, проверил скрипт - работает. Я понял почему не работал на ирге, потому что Пилоту чтобы найти четвертую картинку нужно четыре раза промотать цикл for (на каждую картинку 1 раз) а у меня сразу выход из цикла был заложен, я думал он за один раз проверяет сразу все. Понял что мне это не подходит т.к. очень долго получается (примерно 1 сек на картинку), а если у меня 30-40 картинок, то получается мне по 30 сек ждать нужно пока он все проверит
Значит картинки большого размера. Уменьшите будет быстро искать. Также можно уменьшить область поиска, обычно нет смысла искать картинки по всему экрану.
set $path "D:\UO\pic\whatevername" //full path to pic folder
dir (%dirimage $path *.bmp*) // searching for bmp in path if size(%dirimage) > 0 log In folder size(%dirimage) images!
//1) Полный корректный адрес с "\", именем файла, расширением. // 2) Адрес. Полный адрес слепленный в нормальную строку с "\". // 3) Имя файла без расширения. // 4) Расширение файла. //5) Размер. // 6) Атрибуты. // 7) Дата. // 8) Время. // 9) Уровень вложенности для пункта 10. // 10) Путь с разбивкой 1 папка 1 столбец (для вложенных папок и файлов)
for #i 1 size(%dirimage) set $pathdirpic %dirimage [#i 1] //getting full adress of pic set %fullpath [#i] $pathdirpic // making array of full path end_for else log No .bmp pics in folder or not correct folder! (full path) end_if
set #size size(%image) for #i 1 #size 1 set #a 0 set #a FindImage(0 0 1920 1080 (%fullpath[#i]) %arr workwindow) // need attach to workwindow if #a = 100 // can use #a > 0 , prefer 100% accuracy move %arr [1 1] %arr [1 2] // moving mouse to each pic wait 1000 end_if end_for
Сообщение отредактировал Fors1k - 11.2.2021, 17:11