Помощь - Поиск - Пользователи - Календарь
Полная версия: Findimage не работает
UoKit.com Форумы > Кликер > UO Pilot
Levo222
Взял тот же банальный пример со справки, где поиск одной:

Код
--lua
local startX, startY, endX, endY = 85, 490, 97, 502   -- координаты поиска
local path = [["E:\Program Files\UOPilot\p.bmp"]] -- путь к картинке, bmp 24 бита
local arr, a = findimage (startX, startY, endX, endY, {path}, 2)  -- поиск картинки
hint (a)     -- результат поиска, подсказка в правом нижнем углу
if arr then  -- если найдена
    log ("Изображение найдено в координатах X= " .. arr[1][1] .. " Y= " .. arr[1][2])
    kleft (arr[1][1], arr[1][2])  -- кликнули
end


Или нескольких картинок
Код

--lua
local arr = findimage (85, 490, 97, 502, {"p.bmp"}, 2, 70, 20, 5)
hint (a)     -- результат поиска, подсказка в правом нижнем углу
if arr then  -- если найдена
    log ("Найдено картинок: " .. #arr)
    for i=1, #arr do
        kleft (arr[i][1], arr[i][2])  -- кликнули на каждой
        wait (1000)  -- пауза 1000 мсек (1 сек)
    end
end



Ничего не работает, ни 1 ни другой скрипт не запускается, картинка лежит в папке пилота, в log ничего не пишет.
Cockney
Так и что в а лежит ?
Levo222
Да ниче, он просто не показывает

Я так и не понял вот какой момент, мне нужно на одном и том же месте найти несколько картинок из многих, вот в этом примере:


Код
--lua
local arr = findimage (85, 490, 97, 502, {"p.bmp"}, 2, 70, 20, 5)  -- здесь одна
hint (a)     -- результат поиска, подсказка в правом нижнем углу
if arr then  -- если найдена
    log ("Найдено картинок: " .. #arr)
    for i=1, #arr do
        kleft (arr[i][1], arr[i][2])  -- кликнули на каждой
        wait (1000)  -- пауза 1000 мсек (1 сек)
    end
end

я не вижу где тут несколько картинок?
одну вижу, а где остальные?
Откуда во втором примере взялась "а"? Она что из воздуха нарисовалась?
cirus
Цитата
я не вижу где тут несколько картинок?

20 - это значит максимум 20 картинок.
Цитата
Откуда во втором примере взялась "а"?
local arr = findimage (85, 490, 97, 502, {"p.bmp"}, 2, 70, 20, 5)

Код
local arr, a = findimage (85, 490, 97, 502, {"p.bmp"}, 2, 70, 20, 5)

Цитата
одну вижу, а где остальные?

Код
--lua
local startX, startY, endX, endY = 0, 0, 1920, 1080   -- координаты поиска
local path = [[C:\pilot]]                    -- путь к картинкам

local image = {"картинка", "картинка2", "картинка3"}   -- массив с именами картинок, имена могут быть любыми
hint ("Всего картинок для поиска " .. #image)
for i=1, #image do                     -- цикл для поиска картинок
    local arr, a = findimage (startX, startY, endX, endY, {path .. "\\" .. image[i] .. ".bmp"}, 2)  -- поиск картинки
    if  arr then
        move (arr[1][1], arr[1][2])    -- переместить курсор на найденную картинку
        wait (500)                     -- ждать 0,5 секунды
    end
end


xcv
дабы не создавать новую тему, тем более вопрос созвучен с заголовком данной, напишу тут свою проблему.
Долго не мог разобраться, почему у меня не работает findimage, опытным путем выяснил, оно почему-то не правильно определяет координаты, тоесть, вот пример, написал простенький скрипт, который должен был найти картинку и переместить курсор на нее:
Код

set #a FindImage(0 0 1920 1080 (C:\win.bmp) %arr 2)     //поиск изображения
if #a > 0
    move %arr [1 1] %arr [1 2]      //навести курсор на первую найденную картинку
    End_script
end_if

для примера искал кусок изображения рабочего стола, картинку он находит, но курсор перемещает не в то место, координаты определяются неправильно! и если искать изображение которое находится возле правого края, то оно не находится совсем.
прилагаю картинку которую искал (win.bmp) и схематическое изображение места куда помещался курсор (win2.bmp)
Может кто подскажет в чем проблема?
PS: UoPilot пробовал версии 2.39, 2.40, 2.41 Windows 10
Нажмите для просмотра прикрепленного файла Нажмите для просмотра прикрепленного файла
Levo222
--
cirus
В параметрах экрана какой стоит масштаб? Должен быть 100%.
xcv
Цитата(cirus @ 20.11.2019, 1:33) *

В параметрах экрана какой стоит масштаб? Должен быть 100%.

Спасибо огромное, стоял масштаб 125%, изменил на 100% - стало нормально работать, но на экране теперь все слишком мелкое, оно и на 125 не особо крупное было, есть возможность заставить скрипт работать при масштабе отличном от 100%, а то большинство современных мониторов с высоким разрешением работают на масштабе больше 100%, думаю я не единственный кто с этим столкнулся, в описание функции не мешало бы добавить упоминание о том что работает только при 100%, хотя findcolor нормально работает и при 125%.
FREEON
Цитата(xcv @ 20.11.2019, 12:35) *

Спасибо огромное, стоял масштаб 125%, изменил на 100% - стало нормально работать, но на экране теперь все слишком мелкое, оно и на 125 не особо крупное было, есть возможность заставить скрипт работать при масштабе отличном от 100%, а то большинство современных мониторов с высоким разрешением работают на масштабе больше 100%, думаю я не единственный кто с этим столкнулся, в описание функции не мешало бы добавить упоминание о том что работает только при 100%, хотя findcolor нормально работает и при 125%.

в чем проблема переделать картинки для нового масштаба 125... будет так же работать
xcv
Цитата(FREEON @ 20.11.2019, 13:54) *

в чем проблема переделать картинки для нового масштаба 125... будет так же работать

проблема не в картинках, а в том что пилот не правильно сопоставляет картинку и ее координаты при масштабе отличном от 100% и часть окна совсем не видит
gt500rx
Тоже чтобы не создавать новую тему хочу спросить здесь. Подскажите может ли UoPilot ожидать определенное время появление картинки, а если она появилась раньше сразу кликал на нее (или выполнял другое действие)? если может, то как это сделать?
cirus
Цитата
ожидать определенное время появление картинки

Код
set #time timer + 3000    // 3000 = 3 секунды

while #time > timer   // пока не вышло время
    set #a FindImage (0 0 1920 1080 (C:\Image.bmp) %arr 2 80 1 5)  // поиск картинки
    if  #a > 0   // если найдена
        move %arr[1 1] %arr [1 2]  // навести на неё курсор
        break  // выход из цикла
    end_if
    wait 100
end_while
if  #time <= timer  // если картинка не найдена за указанное время
    log Картинка не найдена
end_if
end_script
gt500rx
Спасибо работает, только курсор наводит неправильно почему-то
gt500rx
Идет смещение относительно картинки, почему так происходит?
Fors1k
Цитата(gt500rx @ 22.11.2019, 18:57) *

Идет смещение относительно картинки, почему так происходит?

Только что отвечали на этот вопрос. Читай выше.
gt500rx
Цитата(Fors1k @ 23.11.2019, 0:02) *

Только что отвечали на этот вопрос. Читай выше.



Менял масштаб, не помогло. Картинку находит а кликает в другом месте.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.