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

 
Ответить в эту темуОткрыть новую тему
> функция findimage
DAGON_FTP
сообщение 9.7.2023, 23:54
Сообщение #1


*

Registred
Сообщений: 1
Регистрация: 6.7.2023
Группа: Пользователи
Наличность: 0
Пользователь №: 20.566
Возраст: 21



Добрый день, помогите пожалуйста разобраться с функцией findimage, есть ли какое то видео по ее наглядному использованию или что то подобное.
Нашел на википедии ее применение, но там такое количество не понятных и ненужных для меня переменных что я запутался.

Хочется сделать чтобы скрипт просто находил на экране изображение моба и кликала по нему. Подскажите пожалуйста примерную структуру подобного скрипта.
Заранее спасибо. (IMG:style_emoticons/default/smile.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Madeus
сообщение 10.7.2023, 2:11
Сообщение #2


****

Apprentice
Сообщений: 282
Регистрация: 19.11.2019
Группа: Пользователи
Наличность: 8296
Пользователь №: 19.451
Возраст: 32



Подготовка_картинки_для_Findimage
Код
--lua
local path = [[C:\pilot\]]                    -- путь к картинкам
local x1, y1, x2, y2 = 0, 0, 1920, 1080 -- координаты в которых искать моба
while true do
  local mob = findimage(x1, y1, x2, y2, {path .. image .. ".bmp"}, 2) -- image - имя картинки моба
  if mob then
    left(mob[1][1], mob[1][2]) -- клик левой кнопки мыши
  end
end
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
deNoor
сообщение 7.8.2023, 17:17
Сообщение #3


**

Neophyte
Сообщений: 10
Регистрация: 24.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.019
Возраст: 28



А можно в одном снятии экрана поискать сразу несколько картинок? Что-то вроде проверки одной и той же отснятой области на совпадением с одним из шаблонов из списка.
Как будто, сейчас все предлагаемые шаблоны сводятся ко множественным вызовам в цикле findimage, который, получается, каждый раз скриншотит?

Loadimage помогает покэшить или findimage каждый раз приходится читать с диска?

upd.
Дополню ответом для следующих ищущих.
getimage, действительно, всё решает.

Код

-- load images
local images = {}
local address1 = loadimage([[D:\images\pattern1.bmp]])
images[1] = { address1 }

local address2 = loadimage([[D:\images\pattern2.bmp]])
images[2] = { address2 }

-- continuously search for patterns on screen
local startX, startY = 700, 1000
local endX, endY = startX + 100, startY + 200
while true do
    local screenshot, width, height = getimage(startX, startY, endX - 1, endY - 1) -- compensate added +1 pixel to both dimensions due to a bug
    for index, image in ipairs(images) do
        local resultCoords, resultCode = findimage(0, 0, width, height, image, screenshot, accuracy, 1, deviation)
        if (resultCode and resultCode > 0) then
          -- process found image
        end
    end
    deleteimage(screenshot)
end

Плюс ещё есть тут
https://forum.uokit.com/index.php?showtopic=70951
https://forum.uokit.com/index.php?showtopic=30000
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 7.8.2023, 21:01
Сообщение #4


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



getimage ваше решение.
Не забывайте использовать deleteimage когда изображение больше вам не нужно или очень быстро забьете память.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Kangoshi
сообщение 8.8.2023, 22:51
Сообщение #5


**

Neophyte
Сообщений: 36
Регистрация: 9.8.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 13.878



Цитата(DarkMaster @ 7.8.2023, 21:01) *

getimage ваше решение

Я так и не понял что и как можно делать с полученными данными в памяти.
Например, как посчитать число пикселей определённого цвета в заданной области при помощи getimage? В какой структуре там хранятся данные? Как их оттуда вытащить, readmem'ом? Но этой функции нужна привязка к окну - привязывать скрипт к пилоту?
Спрашиваю потому, что цикл через color (x, y) работает очень медленно (в луа): на 148 точек требуется 2,5 секунды.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Madeus
сообщение 9.8.2023, 1:07
Сообщение #6


****

Apprentice
Сообщений: 282
Регистрация: 19.11.2019
Группа: Пользователи
Наличность: 8296
Пользователь №: 19.451
Возраст: 32



findcolor для этого
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
deNoor
сообщение 12.8.2023, 3:18
Сообщение #7


**

Neophyte
Сообщений: 10
Регистрация: 24.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.019
Возраст: 28



Всё-таки что-то сильно не так с findimage.

Проверяю на одном и том же источнике 42*42, из которого вырезаю кусок 24*24 для поиска.
Загружаю источник и кусок и ищу.

Если вырезать кусок из точки 0;0, то findimage(0, 0, 0+24, 0+24, { pattern }, source, 100, -1, 0)
найдёт.

Если же вырезать из точки 10;10, то findimage(10, 10, 10+24, 10+24, { pattern }, source, 100, -1, 0)
уже не найдёт.
Однако findimage(2, 2, 10+24, 10+24, { pattern }, source, 100, -1, 0) найдёт. Причём, найдёт кусок в правильных координатах — 10;10. Однако 2;2 это предел старта X и Y для успеха, а при старте чуть правее или ниже уже не найдёт. Что за дичь такая. (IMG:style_emoticons/default/ohmy.gif)

Оно забагано так люто, что поиск из середины невозможен? Ушло много времени, чтобы заметить, что дело в принципе в неработоспособности поиска, если начинать не из 0;0. (IMG:style_emoticons/default/sad.gif)


Прикрепил готовые картинки и скрипт поиграться.


Прикрепленные файлы
Прикрепленный файл  test.zip ( 6,43 килобайт ) Кол-во скачиваний: 38
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Kangoshi
сообщение 12.8.2023, 23:10
Сообщение #8


**

Neophyte
Сообщений: 36
Регистрация: 9.8.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 13.878



Цитата(Madeus @ 9.8.2023, 1:07) *

findcolor для этого

И какой у неё синтаксис?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Madeus
сообщение 13.8.2023, 0:54
Сообщение #9


****

Apprentice
Сообщений: 282
Регистрация: 19.11.2019
Группа: Пользователи
Наличность: 8296
Пользователь №: 19.451
Возраст: 32



Цитата(Kangoshi @ 12.8.2023, 23:10) *

И какой у неё синтаксис?

Тут обсуждалось
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
nykep
сообщение 22.8.2023, 22:33
Сообщение #10


****

Apprentice
Сообщений: 233
Регистрация: 1.9.2012
Группа: Пользователи
Наличность: 1161
Пользователь №: 15.246
Возраст: 25



Цитата(deNoor @ 12.8.2023, 3:18) *

Всё-таки что-то сильно не так с findimage.

это getimage баганый
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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