|
findimage, не работает |
|
|
dunkel |
19.10.2022, 19:28
|
Novice
Сообщений: 75
Регистрация: 20.1.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.296
Возраст: 30
|
Цитата(DarkMaster @ 19.10.2022, 14:17) смотрите синтаксис финдимиджа. точность и девиэйшн указываются в хвосте. разумная точность 80-94 для изображений, для текстов 94-98. Девиэйшн 2 - дает существенный положительный эффект, минусов почти нет. 7+ может начать давать ложно положительные поиски. Значения по сути подбираются вручную.
Можете объяснить на примере этой строки? set #a findimage(0, 0, 1920, 1080 (d:\images\1.bmp) %arr 2 80 1 3) первое 2 это тип поиска? 2 - это быстрый (рекомендуемый)? 80 - это процент совпадения как я понимаю? то есть девейшен? а последние 1 и 3 это что? Не могу понять где мне задать погрешность на тональность? цвета (из за времени суток она разниться) (
|
|
|
|
dunkel |
19.10.2022, 20:49
|
Novice
Сообщений: 75
Регистрация: 20.1.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.296
Возраст: 30
|
Цитата(DarkMaster @ 19.10.2022, 19:28) 2 - тип поиска. по сути актуально либо 2 либо хэндл. если не заморачиваться, то 2 прекрасный вариант 80 - это точность. необходимый % точек который должен совпасть. 1 - количество искомых изображений 3 - девиэйшн (это не тональность, но для компенсации тональности крутить его)
Не хочет видеть. Буду думать через поиск по цвету. Можно как то реализовать чтобы при нахождении определённого цвета производилась проверка на несколько пикселей ниже и выше найденной точки, и если оба пикселя меняли цвет на нужную тональность, то скрипт бы срабатывал?
|
|
|
|
dunkel |
23.10.2022, 17:06
|
Novice
Сообщений: 75
Регистрация: 20.1.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.296
Возраст: 30
|
Цитата(DarkMaster @ 21.10.2022, 10:55) а зачем вообще мышь двигать? После того, как вы нашли изображение/точку, то у вас уже есть координата мышь не нужна. Ну и далее что-то вроде: set #startx #naidenoex - 50 set #endx #naidenoex + 50
ну и в финд потом подсовывать #startx, #endx
аналогично для y координаты
Код :2 set #startX 491 set #startY 280 set #endX 1264 set #endY 712 set $path "d:\images\" init_arr %image 4 5 6 7 8
set #size size(%image)
for #i 1 #size 1 // set #a findimage (#startX #startY #endX #endY ($path%image[#i].bmp) %arr 2 80 1 7) if size(%arr) > 0 for #j 1 size(%arr) move %arr[#j 1] %arr[#j 2] wait 500 goto 1 end_for end_if end_for goto 2
:1 get mouse_pos #x #y if #x,#y 6818061 9526877 move #x,#y kleft #x,#y stop_script end_if goto 1
пока так получается, я ищу объект, через поиск картинок и потом просматриваю координаты на отсутствия цвета под ним. То есть чтобы мне задать смещение мне надо подставить во вторую часть? set #startx #naidenoex? И получиться что то вроде? Код set #startx #naidenoex - 50 set #endx #naidenoex + 50 get mouse_pos #x #y if #x,#y 6818061 9526877 move #x,#y kleft #x,#y stop_script end_if
Сообщение отредактировал DarkMaster - 23.10.2022, 21:00
|
|
|
|
DarkMaster |
23.10.2022, 21:14
|
Модератор UOPilot
Сообщений: 9.573
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 28548
Пользователь №: 11.279
|
для начала вам вообще не нужен mouse_pos здесь.
move %arr[#j 1] %arr[#j 2] вы же тут не используете mouse_pos
get mouse_pos #x #y move #x,#y в чем смысл конструкции? мы получаем координаты мыши, и перемещаем ее в эти же самые координаты. Т.е. по сути эффективная работа равна нулю: где мышь была там она и будет. Я допускаю, в некоторых частных случаях этот может активировать кнопку, но в общем случае полностью бессмысленные действия.
kleft #x,#y с тем же успехом вы можете использовать kleft %arr[#j 1] %arr[#j 2]
разницы не будет никакой. Т.к. по сути вы делаете: move %arr[#j 1] %arr[#j 2] get mouse_pos #x #y move #x,#y kleft #x,#y итого мы перемещаем мышь в %arr[#j 1] %arr[#j 2] потом получаем координаты мыши в перменные x и y. Зачем? мы уже знаем где она - %arr[#j 1] %arr[#j 2] и туда же кликаем.
итого: выкинуть get_mousepos выкинуть move #x #y заменить в kleft #x #y на kleft %arr[#j 1] %arr[#j 2]
Если глобально - переходите на lua. Проще его выучить и писать спокойно, чем ловить проблемы старого синтаксиса. Если не глобально - выкинуть все goto и забыть про них навсегда.
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
dunkel |
24.10.2022, 23:40
|
Novice
Сообщений: 75
Регистрация: 20.1.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.296
Возраст: 30
|
Цитата(DarkMaster @ 23.10.2022, 20:14) для начала вам вообще не нужен mouse_pos здесь.
move %arr[#j 1] %arr[#j 2] вы же тут не используете mouse_pos
get mouse_pos #x #y move #x,#y в чем смысл конструкции? мы получаем координаты мыши, и перемещаем ее в эти же самые координаты. Т.е. по сути эффективная работа равна нулю: где мышь была там она и будет. Я допускаю, в некоторых частных случаях этот может активировать кнопку, но в общем случае полностью бессмысленные действия.
kleft #x,#y с тем же успехом вы можете использовать kleft %arr[#j 1] %arr[#j 2]
разницы не будет никакой. Т.к. по сути вы делаете: move %arr[#j 1] %arr[#j 2] get mouse_pos #x #y move #x,#y kleft #x,#y итого мы перемещаем мышь в %arr[#j 1] %arr[#j 2] потом получаем координаты мыши в перменные x и y. Зачем? мы уже знаем где она - %arr[#j 1] %arr[#j 2] и туда же кликаем.
итого: выкинуть get_mousepos выкинуть move #x #y заменить в kleft #x #y на kleft %arr[#j 1] %arr[#j 2] Если глобально - переходите на lua. Проще его выучить и писать спокойно, чем ловить проблемы старого синтаксиса. Если не глобально - выкинуть все goto и забыть про них навсегда.
Да надо наверное подучить lua. Хотя я ни разу не програмист). А про goto чем я могу заменить вот этот цикл? :1 if #x,#y 6818061 9526877 kleft #x,#y stop_script end_if goto 1 как мне сделать чтобы в середине скприпта можно было бы вставить цикл ожидания который бы прирывался только при выполнение условия. И чем плох goto? Он делает скрипт более медленным? И ещё можно вопрос, вот этот скрипт по моему работает очень долго и у меня не получается им найти нужную картинку которая появляется на какие то ,03 секунды. Это дело в скрипте или просто УО пилот неспособен отслеживать появления картинки с такой скоростью. Например цвет в определённой координате он отслеживает моментально. Можно ли как то ускорить этот скрипт? set #startX 491 set #startY 280 set #endX 1264 set #endY 712 set $path "d:\images\" init_arr %image 4 5 6 7 8 set #size size(%image) for #i 1 #size 1 // цикл для поиска картинок set #a findimage (#startX #startY #endX #endY ($path%image[#i].bmp) %arr 2 80 1 7) if size(%arr) > 0 for #j 1 size(%arr) move %arr[#j 1] %arr[#j 2] wait 500
|
|
|
|
DarkMaster |
25.10.2022, 0:26
|
Модератор UOPilot
Сообщений: 9.573
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 28548
Пользователь №: 11.279
|
Цитата А про goto чем я могу заменить вот этот цикл? Во 1 это не цикл =) это подобие функции. Да просто закинуть в основное тело: if ... kleft ... stop_script end Цитата Да надо наверное подучить lua. Хотя я ни разу не програмист). ну язык пилота вы же выучили в какой-то мере. луа уж точно не сложнее, а вот нежданчиков там несорозмерно меньше. Цитата И ещё можно вопрос, вот этот скрипт по моему работает очень долго и у меня не получается им найти нужную картинку которая появляется на какие то ,03 секунды. Это дело в скрипте или просто УО пилот неспособен отслеживать появления картинки с такой скоростью. Например цвет в определённой координате он отслеживает моментально. Можно ли как то ускорить этот скрипт? во 1 lua. Ну он реально шустрее. Причем на некоторых операциях получалось что-то вроде 200 000 раз шустрее. Тем не менее конкретно в данном случае скорее всего будет основным тормозом findimage и if. При снятии цвета не по хендлу идет съем 30 раз в секунду. Чем это обусловлено я не знаю. Причины так и остались не ясны. У меня было подозрение, что это как-то связанно с вертикальной синхронизаций прежде чем будет выдана картинка. Причем это касается и финдимиджа и if'а. Т.е. между имиджем и ифом будет 66 мс. А если вызовете одиночный иф, то он будет обработан почти мгновенно. Задержка будет только на втором. У вас достаточно большая область поиска. Если есть возможность - сократите. Время поиска прямопропорционально площади поиска. deviation увеличивает время поиска. Чем большее - тем медленнее. Картинка должна быть небольшой. 5x5 пикселей обычно достаточно. Время поиска прямопропорционально площади искомой картинки. В частности обращаю внимание на слово "площади". 50x50 и 5x5 разница не в 10 раз, а в 100. Скрипт не весь и судить о логике сложно, но из приведенного куска встает вопрос вызывается ли он по кругу бесконечно до получения изображения. Если это так, то шапка с присвоением пременных и инициализацией массива тоже будут вызываться по кругу, что в рамках старого синтаксиса внесет достатчно существенные нагрузки и замедлит скрипт. В таком случае форы лучше лучше взять в дополнительный отдельный цикл типа while 1 = 1. Переходите на луа. Часть проблем тогда решать вообще не придется.
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|