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

 
Ответить в эту темуОткрыть новую тему
> Цветокоррекция
lyvrik
сообщение 13.2.2023, 15:10
Сообщение #1


*

Registred
Сообщений: 8
Регистрация: 13.2.2023
Группа: Пользователи
Наличность: 0
Пользователь №: 20.487
Возраст: 17



Пришел из другой программы из за того что там плохо работает привязка к окну, но столкнулся с проблемой незнания команды ( я её не нашел в справке ) цветокоррекции.
Коротко о том как она работает и что я имею в виду.
Она убирает многие оттенки превращая их в один цвет (Например: Ораньжевый, Желтый и Красный цвет при цветокоррекции она превратит только в Красный, тем самым уменьшим количество цветов и оттенков на экрана и упростит поиск пикселя или картинки с примененной на неё цветокоррекцией).
И так же можно применить цветокоррекцию чтобы сделать картинку ЧБ (Черно Белой), это то что мне нужно.
Я делаю поиск картинки, но так как она у меня уже под цветокоррекцией она не находится UOPilot'om, а если не использовать цветокоррекцию то невозможно добиться 100% сходства.


Эскизы прикрепленных изображений
Прикрепленное изображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 13.2.2023, 16:27
Сообщение #2


***********

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



Тут важно понимать о чем именно идет речь. Если речь идет о картинках, то в findcolor/findimage есть параметр deviaton который позволяет очень мягко сглаживать оттенки. В приведенном вам примере всегда будет существовать проблема пограничных значений. Например значения каналов 127 и 128 улетят в "разные" цвета. deviaton дает поиск +/- по каналу. Скажем при deviaton 3 и цвете 127 корректными будут цвета 127 +/- (2.55*3).

Если идет речь о колор, то из коробки прозрачного сравнения таким образом нет. Мой вариант решения данного вопроса относительно единичного цвета.
Код
local ext = {}
-- Равен ли цвет dynamic_color
-- цвету static_color
-- с учетом погрешности deviaton
-- Deviation задается в виде абсолютного значения,
-- где 1 = +/-1, 5 = +/-5 и т.д.
-- deviation применяется ко второму цвету.
-- второй цвет считается эталоном.
-- Первый цвет может быть задан числом
-- или координатами (будет вызван color())
ext.color_compare_a = function(dynamic_color, static_color, deviation, tmp)
    if tmp then
        dynamic_color = color(dynamic_color, static_color)
        static_color = deviation
        deviation = tmp
    end    

    local r1, g1, b1 = ext.color_to_rgb(dynamic_color)
    local r2, g2, b2 = ext.color_to_rgb(static_color)
    
    if      r2-deviation <= r1 and r2+deviation >= r1
        and g2-deviation <= g1 and g2+deviation >= g1
        and b2-deviation <= b1 and b2+deviation >= b1 then
        
        return true
    else
        return false
    end
end


-- Равен ли цвет dynamic_color
-- цвету static_color
-- с учетом погрешности deviaton
-- Deviation задается в виде множетеля,
-- где 0.1 = +/-10%, 0.5 = +/-50% и т.д.
-- deviation применяется ко второму цвету.
-- второй цвет считается эталоном.
-- Первый цвет может быть задан числом
-- или координатами (будет вызван color())
ext.color_compare_r = function(dynamic_color, static_color, deviation)
    if tmp then
        dynamic_color = color(dynamic_color, static_color)
        static_color = deviation
        deviation = tmp
    end
    
    local d_min = 1 - deviation
    local d_max = 1 + deviation

    local r1, g1, b1 = ext.color_to_rgb(dynamic_color)
    local r2, g2, b2 = ext.color_to_rgb(static_color)
    
    if      r2*d_min <= r1 and r2*d_max >= r1
        and g2*d_min <= g1 and g2*d_max >= g1
        and b2*d_min <= b1 and b2*d_max >= b1 then
        
        return true
    else
        return false
    end
end


-- Равен ли цвет dynamic_color
-- цвету static_color
-- с учетом погрешности deviaton
-- Deviation задается в виде множетеля,
-- отношеня каналов (режим теней).
-- deviation применяется ко второму цвету.
-- второй цвет считается эталоном.
-- Первый цвет может быть задан числом
-- или координатами (будет вызван color())
ext.color_compare_s = function(dynamic_color, static_color, deviation)
    if tmp then
        dynamic_color = color(dynamic_color, static_color)
        static_color = deviation
        deviation = tmp
    end
    
    local d_min = 1 - deviation
    local d_max = 1 + deviation

    local r2, g2, b2 = ext.color_to_rgb(dynamic_color)
    local r1, g1, b1 = ext.color_to_rgb(static_color)
    
    local rg_min = r2 / g2 * d_min
    local gb_min = g2 / b2 * d_min
    local br_min = b2 / r2 * d_min
    local rg_max = (r2+2) / g2 * d_max
    local gb_max = (g2+2) / b2 * d_max
    local br_max = (b2+2) / r2 * d_max    
    
    r1 = r1+1
    g1 = g1+1
    b1 = b1+1
    local rg_static = r1 / g1
    local gb_static = g1 / b1
    local br_static = b1 / r1

    if      rg_min <= rg_static and rg_max >= rg_static
        and gb_min <= gb_static and gb_max >= gb_static
        and br_min <= br_static and br_max >= br_static then
        
        return true
    else
        return false
    end
end


По поводу конвертации изображения:
Код
ext.get_pix = function(img, x, y)
    local r, g, b, dec, bright
    local pix = rmem("unsigned char*", img[1])
    b = pix[ img[4]*y + x*3 ]
    g = pix[ img[4]*y + x*3+1]
    r = pix[ img[4]*y + x*3+2]
    dec = b*255*255 + g*255 + r
    bright = b + g + r
    return {r, g, b, dec, bright}
end

ext.pix_painting = function(img, x, y, color)
    local r, g, b = ext.color_to_rgb(color)
    local pix = rmem("unsigned char*", img[1])
    pix[ img[4]*y + x*3 ]  = b
    pix[ img[4]*y + x*3+1] = g
    pix[ img[4]*y + x*3+2] = r
end

ext.black_and_white = function(img, w, h, l, edge)
    for j = 0, h - 1 do
        for i = 0, w - 1 do
            if ext.get_pix({img, w, h, l}, i, j)[5] > edge then
                ext.pix_painting({img, w, h, l}, i, j, 0xFFFFFF)
            else
                ext.pix_painting({img, w, h, l}, i, j, 0x000000)
            end
        end
    end
    return img
end

Вызывать black_and_white, где img - адрес в памяти с изображением, w - ширина в пикселях, h - высота в пикселях, l - длина линии в байтах с выравниванием, edge - граница по которой делать конвертацию. Все параметры изображения вам даст getimage, edge - исключительно ваша фантазия, допустимые значения 0-765, фактически это сумма каналов по которой будет определяться в белое уводить или в черное.


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


*

Registred
Сообщений: 8
Регистрация: 13.2.2023
Группа: Пользователи
Наличность: 0
Пользователь №: 20.487
Возраст: 17



Цитата(DarkMaster @ 13.2.2023, 16:27) *

Тут важно понимать о чем именно идет речь. Если речь идет о картинках, то в findcolor/findimage есть параметр deviaton который позволяет очень мягко сглаживать оттенки. В приведенном вам примере всегда будет существовать проблема пограничных значений. Например значения каналов 127 и 128 улетят в "разные" цвета. deviaton дает поиск +/- по каналу. Скажем при deviaton 3 и цвете 127 корректными будут цвета 127 +/- (2.55*3).

Если идет речь о колор, то из коробки прозрачного сравнения таким образом нет. Мой вариант решения данного вопроса относительно единичного цвета.
Код
local ext = {}
-- Равен ли цвет dynamic_color
-- цвету static_color
-- с учетом погрешности deviaton
-- Deviation задается в виде абсолютного значения,
-- где 1 = +/-1, 5 = +/-5 и т.д.
-- deviation применяется ко второму цвету.
-- второй цвет считается эталоном.
-- Первый цвет может быть задан числом
-- или координатами (будет вызван color())
ext.color_compare_a = function(dynamic_color, static_color, deviation, tmp)
    if tmp then
        dynamic_color = color(dynamic_color, static_color)
        static_color = deviation
        deviation = tmp
    end    

    local r1, g1, b1 = ext.color_to_rgb(dynamic_color)
    local r2, g2, b2 = ext.color_to_rgb(static_color)
    
    if      r2-deviation <= r1 and r2+deviation >= r1
        and g2-deviation <= g1 and g2+deviation >= g1
        and b2-deviation <= b1 and b2+deviation >= b1 then
        
        return true
    else
        return false
    end
end
-- Равен ли цвет dynamic_color
-- цвету static_color
-- с учетом погрешности deviaton
-- Deviation задается в виде множетеля,
-- где 0.1 = +/-10%, 0.5 = +/-50% и т.д.
-- deviation применяется ко второму цвету.
-- второй цвет считается эталоном.
-- Первый цвет может быть задан числом
-- или координатами (будет вызван color())
ext.color_compare_r = function(dynamic_color, static_color, deviation)
    if tmp then
        dynamic_color = color(dynamic_color, static_color)
        static_color = deviation
        deviation = tmp
    end
    
    local d_min = 1 - deviation
    local d_max = 1 + deviation

    local r1, g1, b1 = ext.color_to_rgb(dynamic_color)
    local r2, g2, b2 = ext.color_to_rgb(static_color)
    
    if      r2*d_min <= r1 and r2*d_max >= r1
        and g2*d_min <= g1 and g2*d_max >= g1
        and b2*d_min <= b1 and b2*d_max >= b1 then
        
        return true
    else
        return false
    end
end
-- Равен ли цвет dynamic_color
-- цвету static_color
-- с учетом погрешности deviaton
-- Deviation задается в виде множетеля,
-- отношеня каналов (режим теней).
-- deviation применяется ко второму цвету.
-- второй цвет считается эталоном.
-- Первый цвет может быть задан числом
-- или координатами (будет вызван color())
ext.color_compare_s = function(dynamic_color, static_color, deviation)
    if tmp then
        dynamic_color = color(dynamic_color, static_color)
        static_color = deviation
        deviation = tmp
    end
    
    local d_min = 1 - deviation
    local d_max = 1 + deviation

    local r2, g2, b2 = ext.color_to_rgb(dynamic_color)
    local r1, g1, b1 = ext.color_to_rgb(static_color)
    
    local rg_min = r2 / g2 * d_min
    local gb_min = g2 / b2 * d_min
    local br_min = b2 / r2 * d_min
    local rg_max = (r2+2) / g2 * d_max
    local gb_max = (g2+2) / b2 * d_max
    local br_max = (b2+2) / r2 * d_max    
    
    r1 = r1+1
    g1 = g1+1
    b1 = b1+1
    local rg_static = r1 / g1
    local gb_static = g1 / b1
    local br_static = b1 / r1

    if      rg_min <= rg_static and rg_max >= rg_static
        and gb_min <= gb_static and gb_max >= gb_static
        and br_min <= br_static and br_max >= br_static then
        
        return true
    else
        return false
    end
end


По поводу конвертации изображения:
Код
ext.get_pix = function(img, x, y)
    local r, g, b, dec, bright
    local pix = rmem("unsigned char*", img[1])
    b = pix[ img[4]*y + x*3 ]
    g = pix[ img[4]*y + x*3+1]
    r = pix[ img[4]*y + x*3+2]
    dec = b*255*255 + g*255 + r
    bright = b + g + r
    return {r, g, b, dec, bright}
end

ext.pix_painting = function(img, x, y, color)
    local r, g, b = ext.color_to_rgb(color)
    local pix = rmem("unsigned char*", img[1])
    pix[ img[4]*y + x*3 ]  = b
    pix[ img[4]*y + x*3+1] = g
    pix[ img[4]*y + x*3+2] = r
end

ext.black_and_white = function(img, w, h, l, edge)
    for j = 0, h - 1 do
        for i = 0, w - 1 do
            if ext.get_pix({img, w, h, l}, i, j)[5] > edge then
                ext.pix_painting({img, w, h, l}, i, j, 0xFFFFFF)
            else
                ext.pix_painting({img, w, h, l}, i, j, 0x000000)
            end
        end
    end
    return img
end

Вызывать black_and_white, где img - адрес в памяти с изображением, w - ширина в пикселях, h - высота в пикселях, l - длина линии в байтах с выравниванием, edge - граница по которой делать конвертацию. Все параметры изображения вам даст getimage, edge - исключительно ваша фантазия, допустимые значения 0-765, фактически это сумма каналов по которой будет определяться в белое уводить или в черное.


Конечно немного сложновато из за того что я не многу найти такие команды какие используются у тебя в коде, не знаю может это у тебя переменные. Можно как нибудь поподробнее ?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 13.2.2023, 20:13
Сообщение #4


***********

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



https://uopilot.uokit.com/wiki/index.php?ti...Findimage_(Lua)
https://uopilot.uokit.com/wiki/index.php?ti...=Getimage_(Lua)


все color_compare - это мои функции и я скинул именно функции, а не их вызов. Перед каждой написано что и как она делает.

black_and_white тоже фунция, которая тянет за собой еще две, но вам это особо не надо понимать. Ваша задача скопировать этот код, вставить в скрипт и вызывать по мере надобности.

Код

-- белая ли точка с погрешностью 5 на каждый канал.
if ext.color_compare_a(color(123, 321), 0xFFFFFF, 5) then
    msg"white"
end

-- захватить изображение
local img, w, h, l = getimage(100, 100, 200, 200)
-- конвертируем в монохромное по границе 300. 0-300 = черный, 301-765 = белый
ext.black_and_white(img, w, h, l, 300)
-- ищем
local result = findimage(x1, y1, x2, y2, {[[path]]}, img, acc, count, deviation)
if result then -- если нашли кликаем
    left(result[1][1], result[1][2])
end


вообще очень сложно отвечать на вопрос "как-нибудь поподробнее". Я не знаю вашего уровня знаний языков программирования и луа в частности. Задавайте более конкретные вопросы либо пишите код который пробовали и не получилось. Без разницы какого качества будет этот код - смысл в том, что будет понятно, что вам нужно разъяснить.

Сообщение отредактировал DarkMaster - 13.2.2023, 20:14


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


*

Registred
Сообщений: 8
Регистрация: 13.2.2023
Группа: Пользователи
Наличность: 0
Пользователь №: 20.487
Возраст: 17



Цитата(DarkMaster @ 13.2.2023, 20:13) *

https://uopilot.uokit.com/wiki/index.php?ti...Findimage_(Lua)
https://uopilot.uokit.com/wiki/index.php?ti...=Getimage_(Lua)
все color_compare - это мои функции и я скинул именно функции, а не их вызов. Перед каждой написано что и как она делает.

black_and_white тоже фунция, которая тянет за собой еще две, но вам это особо не надо понимать. Ваша задача скопировать этот код, вставить в скрипт и вызывать по мере надобности.

Код

-- белая ли точка с погрешностью 5 на каждый канал.
if ext.color_compare_a(color(123, 321), 0xFFFFFF, 5) then
    msg"white"
end

-- захватить изображение
local img, w, h, l = getimage(100, 100, 200, 200)
-- конвертируем в монохромное по границе 300. 0-300 = черный, 301-765 = белый
ext.black_and_white(img, w, h, l, 300)
-- ищем
local result = findimage(x1, y1, x2, y2, {[[path]]}, img, acc, count, deviation)
if result then -- если нашли кликаем
    left(result[1][1], result[1][2])
end


вообще очень сложно отвечать на вопрос "как-нибудь поподробнее". Я не знаю вашего уровня знаний языков программирования и луа в частности. Задавайте более конкретные вопросы либо пишите код который пробовали и не получилось. Без разницы какого качества будет этот код - смысл в том, что будет понятно, что вам нужно разъяснить.


Извините за некорректный вопрос, я плохо знаю lua. Моя задача на данный момент это переписать код из одной программы в другую (из за того что здесь привязка к окну работает не криво
). Хочу задать вопрос ( в правилах не нашел ), разрешено ли оглашать программу в которой написан скрипт ( и сам скрипт) который я хочу переписать в UOPilot?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
lyvrik
сообщение 13.2.2023, 21:53
Сообщение #6


*

Registred
Сообщений: 8
Регистрация: 13.2.2023
Группа: Пользователи
Наличность: 0
Пользователь №: 20.487
Возраст: 17



Код

kleft 960 540
wait 5000
get color #color1 866 953
wait 50
get color #color2 100 1010
:b
wait 50
set #a FindImage(956 522 959 545 (\F) %crds 2 100 1 5)
if  #a > 0
    send217 F
    goto b
else
    set #a FindImage(958 528 973 573 (\l) %crds 2 100 1 5)
    if  #a > 0
        send217 num_4
        goto b
    end_if
    set #a FindImage(956 530 964 545 (\u) %crds 2 100 1 5)
    if  #a > 0
        send217 num_8
        goto b
    end_if
    set #a FindImage(947 528 962 537 (\r) %crds 2 100 1 5)
    if  #a > 0
        send217 num_6
        goto b
    end_if
    set #a FindImage(956 519 964 534 (\d) %crds 2 100 1 5)
    if  #a > 0
        send217 num_2
        goto b
    end_if
    set #c findcolor(100 1010 100 1010 1 1 (#color2) %close workwindow )
    if #c > 0
       kleft 955 621
       wait 50
       goto b
    end_if
     set #c findcolor(866 953 866 953 1 1 (#color1) %close workwindow )
    if #c > 0
    else
       kleft 960 540
       wait 50
       goto b
    end_if
end_if
goto b


Написал скрипт как умею, картинки не находит, а с пикселями все хорошо. У меня картинки состоят из двух цветов: 0 ( черный ) и 16777215 ( белый). Как мне дальше действовать?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 14.2.2023, 4:41
Сообщение #7


***********

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



В правилах не написано, но я затираю через модерку. По факту название ничем в данном случае не поможет.

Вы используете старый синтаксис. Пишите на lua. Для этого в нулевой строке должно быть:
--lua

по части луа если есть хоть небольшой опыт программирования:
https://tylerneylon.com/a/learn-lua/

более приземленная версия:
https://uopilot.uokit.com/wiki/index.php?ti...D0%B8%D1%81_Lua

в вашем случае финды нужно будет заменить на конструкцию из getimage black_and_white и после этого findimage. Как в примере выше указывал. Код который я скинул вам нужно поместить в шапку (можно в отдельный файл и подгружать через require, но давайте не спешить)

Сообщение отредактировал DarkMaster - 14.2.2023, 4:43


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


*

Registred
Сообщений: 8
Регистрация: 13.2.2023
Группа: Пользователи
Наличность: 0
Пользователь №: 20.487
Возраст: 17



Цитата(DarkMaster @ 14.2.2023, 4:41) *

В правилах не написано, но я затираю через модерку. По факту название ничем в данном случае не поможет.

Вы используете старый синтаксис. Пишите на lua. Для этого в нулевой строке должно быть:
--lua

по части луа если есть хоть небольшой опыт программирования:
https://tylerneylon.com/a/learn-lua/

более приземленная версия:
https://uopilot.uokit.com/wiki/index.php?ti...D0%B8%D1%81_Lua

в вашем случае финды нужно будет заменить на конструкцию из getimage black_and_white и после этого findimage. Как в примере выше указывал. Код который я скинул вам нужно поместить в шапку (можно в отдельный файл и подгружать через require, но давайте не спешить)


Я делаю как вы и объясняете, но по непонятным мне причинам выскакивают ошибки при запуске кода (код брал из "более приземленная версия" ).
Прикрепленное изображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Madeus
сообщение 14.2.2023, 19:37
Сообщение #9


****

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



А код можно? Что-то в 8 строчке кода.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 14.2.2023, 19:42
Сообщение #10


***********

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



в пилоте нумерация с нуля, в луа с единицы. смотреть нужно в 7 строчку кода =)


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


****

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



Ну да) Без кода все равно не понятно)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
lyvrik
сообщение 14.2.2023, 22:25
Сообщение #12


*

Registred
Сообщений: 8
Регистрация: 13.2.2023
Группа: Пользователи
Наличность: 0
Пользователь №: 20.487
Возраст: 17



Цитата(Madeus @ 14.2.2023, 19:37) *

А код можно? Что-то в 8 строчке кода.


Извиняюсь , я понял в чем проблема.У меня там стоит команда left, я вставил скрипт Луа и после него end_script думая что он на нём и закончит, но почему то он его пропустил. Тогда у меня вопрос, как останавливать Луа скрипт?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Madeus
сообщение 15.2.2023, 3:18
Сообщение #13


****

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



stop_script()
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
lyvrik
сообщение 16.2.2023, 1:06
Сообщение #14


*

Registred
Сообщений: 8
Регистрация: 13.2.2023
Группа: Пользователи
Наличность: 0
Пользователь №: 20.487
Возраст: 17



Так, я вообще не понимаю но у меня не работает скрипт в "стиле" --lua
Код

--lua
local handle = findwindow ("Will To Live Online")
local startX, startY, endX, endY = 0, 0, 1920, 1080
local path = [["\F.bmp"]]
if  handle then
    local arr, a = findimage (startX, startY, endX, endY, {path}, handle[1][1])
    if  a > 0 then
        log ("Изображение найдено в координатах X= " .. arr[1][1] .. " Y= " .. arr[1][2])
        send217 ("f")
    else
        log ("Изображение не найдено")
    end
else
    log("Окно не найдено")
end


Я его запускаю без привязки к окну, он проигрывает только 0 строчку, а дальше не идет. Я делал wait (100) после каждой строки чтобы проверить он вообще работает или нет, оказалось что нет
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
nykep
сообщение 16.2.2023, 1:56
Сообщение #15


****

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



на луа не показывает ход выполнения скрипта и скрипт срабатывает только один раз, нужно зацикливать если хотите чтоб работал постоянно
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 16.2.2023, 5:48
Сообщение #16


***********

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



Цитата
findimage (startX, startY, endX, endY, {path}, handle[1][1])

вы дергаете изображение по хэндлу. это работает не со всеми приложениями (вне зависимости луа это или нет). Так же иногда нужно бывает указать хэндл родительского окна.

сделайте log(a) сразу после финдимиджа. может он с ошибкой падает, например, если путь указан неверно.


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


***********

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



Цитата
local path = [["\F.bmp"]]

это путь от корня диска. Т.е. если у вас пилот лежит, например, в d:\test\123\pilot\uopilot.exe, то путь "\F.bmp" будет означать "d:\F.bmp". Вы точно именно это имели ввиду?


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


*

Registred
Сообщений: 8
Регистрация: 13.2.2023
Группа: Пользователи
Наличность: 0
Пользователь №: 20.487
Возраст: 17



Цитата(DarkMaster @ 16.2.2023, 6:33) *

это путь от корня диска. Т.е. если у вас пилот лежит, например, в d:\test\123\pilot\uopilot.exe, то путь "\F.bmp" будет означать "d:\F.bmp". Вы точно именно это имели ввиду?


Я думал он будет искать это изображение в корневой папке с UOPilot'om и ещё вопрос, хендл меняется при перезапуске приложения или он всегда для приложения один?


Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 17.2.2023, 6:24
Сообщение #19


***********

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



Цитата
Я думал он будет искать это изображение в корневой папке с UOPilot'om

косую черту уберите тогда в начале пути. это стандарт адресов виндовый. никакой отсебятины =)
Цитата
хендл меняется при перезапуске приложения или он всегда для приложения один?

меняется. findwindow для этого в помощь. он по названию окна находит хэндл.


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

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

 

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