Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Картинка ярлычка = нажатие кнопки, Нажатие разных кнопок в зависимости от всплывшего ярлычка
bumer
сообщение 2.11.2016, 12:10
Сообщение #1


****

Apprentice
Сообщений: 167
Регистрация: 2.6.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 14.998



В общем то вот такой вопрос. Ест-ли возможность написать в UO Pilot скрипт прожимающий разные кнопки (123...89) в зависимости от разных картинок ярлыков автоматически?
Если да, то может где-то тут на форуме кто нибудь уже решал такую задачку, я почему-то не нашёл. ткните пожалуйста носом.
Если озадачится решением такого вопроса на что стоит обратить внимание и будет ли это работать достаточно быстро?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 2.11.2016, 13:26
Сообщение #2


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26702
Пользователь №: 16.971
Возраст: 29



Примерно так:
код
Код
set %image [1] image1           // имена картинок
set %image [2] image2
set %image [3] image3
set $path "C:\UOPilot\images\"    // путь к картинкам
init_arr %knopka 1 2 3               // кнопки, первая кнопка для первой картинки, вторая для второй и т .д.
set #flag 0

for #i 1 size(%image)             // поиск картинок циклом
    set #a findimage(0 0 1920 1080 ($path%image[#i].bmp) %arr)
    if  #a > 0                   // если картинка найдена
        set #flag 1
        break                    // прервать поиск
    end_if
end_for
if #flag = 1
    hint #i   %image [#i]             // номер и имя картинки
    send %knopka [#i]                // нажать кнопку
end_if
end_script

Можно не прерывать цикл поиска и делать нажатие внутри if. Тут уже зависит от дальнейших действий.
На счёт скорости, зависит от размера области поиска и размера искомой картинки. В среднем от 30 до 100 мсек на поиск одной картинки.
Если нужно быстрее, то в бета версии есть это:
https://forum.uokit.com/index.php?s=&sh...st&p=223715
https://forum.uokit.com/index.php?s=&sh...st&p=223888
https://forum.uokit.com/index.php?s=&sh...st&p=223896
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
bumer
сообщение 3.11.2016, 5:53
Сообщение #3


****

Apprentice
Сообщений: 167
Регистрация: 2.6.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 14.998



О, это кажется то, что надо. Буду пробовать! (IMG:style_emoticons/default/rolleyes.gif)
Но вот хочется уточнить, можно ли как-либо ограничить область поиска в нужном окне, чтоб не весь экран анализировал, а только указанной области, где будут появляться интересующие мне всплывающие ярлычки-картинки? (IMG:style_emoticons/default/unsure.gif)
Поглядел ссылки и очень подозрительно похоже, на то о чем я спрашивал...
Код

        set %a GetImage  ( 100 100 1000 1000 )
        set #v %a [1 1]
        set $a findimage ( 51 51 1403 1403 (C:\test.bmp) %arr #v 80 1)
        set $b DeleteImage  ( %a [1 1] )
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 3.11.2016, 8:12
Сообщение #4


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26702
Пользователь №: 16.971
Возраст: 29



Цитата
Но вот хочется уточнить, можно ли как-либо ограничить область поиска в нужном окне, чтоб не весь экран анализировал, а только указанной области, где будут появляться интересующие мне всплывающие ярлычки-картинки?

Координаты в Findimage это и есть область поиска. В GetImage также.
код2
Код
set %image [1] LoadImage(C:\image1.bmp)           // загрузка картинок в память
set %image [2] LoadImage(C:\image2.bmp)
set %image [3] LoadImage(C:\image3.bmp)
init_arr %knopka 1 2 3               // кнопки, первая кнопка для первой картинки, вторая для второй и т .д.

:metka
set %a GetImage  (200 200 700 700)        // сохранить скрин экрана в память
set #v %a [1 1]
for #i 1 size(%image)             // поиск картинок циклом
    set #a findimage(0 0 500 500 (%image[#i 1]) %arr #v)         // поиск картинок на сохранённом скрине
    if  #a > 0                   // если картинка найдена
        send %knopka [#i]                // нажать кнопку
    end_if
end_for
set $b DeleteImage  (%a [1 1])   // удалить скрин из памяти
goto metka

Этот вариант работает быстрее чем первый, актуален если много картинок, пока работает только в бета версии пилота.
Первый код чуть подправил.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
bumer
сообщение 6.2.2017, 8:43
Сообщение #5


****

Apprentice
Сообщений: 167
Регистрация: 2.6.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 14.998



Можно ли в место картинки использовать просто поиск цвета, но чтоб
Код
set #a findcolor (100 100 400 400 (color1 color2 color3) %arr) 

кликал по кнопкам так
Код
init_arr %knopka 1 2 3 

хочется чтоб получился очень короткий код, а необходимая кнопка жались при появлении картинки с нужными цветам. То есть не все кнопки разом, только та кнопка цвет которой будет обнаружен указанной области.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 6.2.2017, 12:19
Сообщение #6


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26702
Пользователь №: 16.971
Возраст: 29



Код
init_arr %color (1)  color1 color2 color3     // цвета для первой картинки
init_arr %color (2)  color4 color5 color6     // второй
init_arr %color (3)  color7 color8 color9
init_arr %knopka 1 2 3
set delimiter ' '
for #i 1 size(%color)
    set #a findcolor (100 100 400 400 (%color [#i]) %arr)
    log Нашлось пикселей: #a
    if  #a > 0    // если при поиске картинки находится 20 пикселей, то
                  // вместо 0 указать хотя бы 10-15
        send %knopka [#i]
    end_if
end_for
end_script
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 20.4.2024, 0:16
Designed by Nickostyle