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

> Coordinats, смена координат скриптом
Levo222
сообщение 7.11.2019, 16:19
Сообщение #1


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Допустим я назначил в скрипте некоторые координаты, много разных точек.
А потом сдвинул весь массив в сторону. Как по одной первой координате быстро рассчитать новые координаты всех остальных точек и заменить их в скрипте?

Допустим у меня есть
color (100, 200)
color (120, 220)
color (132, 154)
color (324, 123)

перемещаю куда либо и координаты первой точки становятся (102, 240)
как заменить в скрипте автоматически учитывая новое расстояние между ними на новые цифры?
т.е. я руками могу сидеть и прибавлять + 2 х и + 40 к y, но в виде скрипта
допустим я создал таблицу с координатами старыми
tab.old = {1 = "100, 200", 2 = "120, 220", 3 = "132, 154", 4 = "324, 123"}
tab.new = {1 = "x, y", ...}
function замена (tab)
if --если на месте "100, 200" найдены другие координаты, они бы автоматически прибавляли разницу между старыми и вставляли бы новые значения на место их
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов(1 - 8)
cirus
сообщение 8.11.2019, 1:38
Сообщение #2


**********

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



Код
--lua
log "clear" log "mode compact"

function delta(tt, delta_x, delta_y)
    for i, value in ipairs(tt) do
        tt[i].x = tt[i].x + delta_x
        tt[i].y = tt[i].y + delta_y
    end
end

local t={
{x=100, y=200},
{x=120, y=220},
{x=132, y=154},
{x=324, y=123}
}


log(t[1].x, t[1].y)
log(t[2].x, t[2].y)

delta(t, 2, 3)  -- прибавить 2 к координате X, 3 к Y

log()
log(t[1].x, t[1].y)
log(t[2].x, t[2].y)
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 10.12.2019, 17:17
Сообщение #3


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Так, настало время с этим разобраться
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 10.12.2019, 18:03
Сообщение #4


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Спасибо, работает
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 28.12.2019, 2:50
Сообщение #5


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Цитата(cirus @ 8.11.2019, 5:38) *

Код
--lua
log "clear" log "mode compact"

function delta(tt, delta_x, delta_y)
    for i, value in ipairs(tt) do
        tt[i].x = tt[i].x + delta_x
        tt[i].y = tt[i].y + delta_y
    end
end

local t={
{x=100, y=200},
{x=120, y=220},
{x=132, y=154},
{x=324, y=123}
}
log(t[1].x, t[1].y)
log(t[2].x, t[2].y)

delta(t, 2, 3)  -- прибавить 2 к координате X, 3 к Y

log()
log(t[1].x, t[1].y)
log(t[2].x, t[2].y)


Как будет выглядеть автоматическая замена всех координат в самом скрипте с учётом новых рассчитанных по этому скрипту координат? По типу Ctrl+F - если координаты совпадают Заменить на новые.
Вот допустим я рассчитал по ним новые координаты:
Код
local t={
{x=49, y=517}, --
{x=88, y=517}, --
{x=67, y=517}, --
{x=88, y=510},  --
{x=85, y=615},   --
{x=101, y=536},   --
{x=103, y=612},   --
{x=101, y=536},  --
{x=52, y=536}, --
{x=101, y=536}, --
{x=69, y=536},   --
{x=101, y=536},  --
{x=86, y=536},   --
{x=101, y=536},  --
{x=50, y=556},--
{x=84, y=556},  --
{x=67, y=556},--
{x=84, y=556},   --
{x=67, y=573},  --
{x=82, y=575},  --
{x=50, y=570}, --
{x=50, y=590},  --
{x=69, y=590},  --
{x=89, y=590},  --
{x=106, y=556},  --
{x=106, y=570}, --
{x=51, y=609} --
}

В логе они меняются на + 5 к каждой к примеру(ну не суть)
получается что-то типа
Код
{x=54, y=521}, --
{x=93, y=521}, --
{x=72, y=521}, --
{x=93, y=515},  --


Что нужно добавить к такому скрипту: В любую его часть
Код
                        while 1 do
                                                wait (1)
                                               if  color (49, 517) ~= 0 --
                                            and color (88, 517) ~= 0 --
                                            then
                                            send217 ("")
                                            wait (1)
                                        else
                                            if color (67, 517) ~= 0 --
                                                and color (88, 510) ~= 0 --
                                                then
                                                send217 ("")
                                                wait (1)
                                            else
                                                if  (color (165, 616) ~= 0 or color (44, 575) ~= 0)
                                                    and color (49, 517) ~= 0 --
                                                    and color (88, 517) ~= 0  --
                                                    then
                                                     send217 ("")
                                                    wait (1)
                                                else
                                                  end
                                                  end
                                                  end
                                                  end
и так далее

Чтобы все те старые координаты заменились на новые уже с поправкой через запуск скрипта или ключ? Только нужно чтобы комбинацию координат искало полностью в формате (х, y) и меняло также, т.е. полное совпадение
Т.е. 2 таблицы(старые и новые), а команду какую?

Что-то типо
Код
--lua
log "clear" log "mode compact"
function delta(tt, delta_x, delta_y)
for i, value in ipairs(tt) do
    tt[i].x = tt[i].x + delta_x
    tt[i].y = tt[i].y + delta_y
    end
    end

    local t={
    {x=10, y=15}, --
    {x=20, y=25}, --
    {x=5, y=10}, --
    {x=20, y=25},  --
    --получилась вторая таблица с добавленными координатами, которая по сути отображается в логе:
    local t2={
    {x=15, y=20}, --
    {x=25, y=30}, --
    {x=10, y=15}, --
    {x=25, y=30},  --
    log(t[1].x, t[1].y)
    log(t[2].x, t[2].y)

    delta(t, 5, 5)  -- прибавить 5 к координате X, 5 к Y

    log()
    log(t[1].x, t[1].y)
    log(t[2].x, t[2].y)

    while 1 do
        wait (1)
        if  color (10, 15) ~= 0 --
            and color (20, 25) ~= 0 --
            then
            send217 ("")
            wait (1)
        else
            if  color (5, 10) ~= 0 --
                and color (20, 25) ~= 0 --
                then
                send217 ("")
                wait (1)
            else
                end
                end
                end

                --Есть ли команда которая автоматически занесет прибавку в "delta(t, 5, 5)" в найденных координатах в t в текст скрипта вместо старых координат уже новые координаты:?
                --Т.е. примерно так:
                while 1 do
                    wait (1)
                    if  color (15, 20) ~= 0 --
                        and color (25, 30) ~= 0 --
                        then
                        send217 ("")
                        wait (1)
                    else
                        if  color (10, 15) ~= 0 --
                            and color (25, 30) ~= 0 --
                            then
                            send217 ("")
                            wait (1)
                        else
                            end
                            end
                            end

Даже если эту приписку после из скрипта можно будет удалить, просто кусок скрипта заменяющий одну комбинацию координат на другую: Но их очень много?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 28.12.2019, 6:06
Сообщение #6


**********

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



Цитата
замена всех координат в самом скрипте

В самом скрипте ничего менять не нужно. Переменные используйте.
Цитата
if color (10, 15)

Если в скрипте 10000 таких строк, каждый раз все заменять что ли?
Цитата
local x, y = 10, 15 -- вначале скрипта меняйте сколько угодно

-- с самом скрипте ничего менять не придётся
if color (x, y)


Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Levo222
сообщение 28.12.2019, 6:20
Сообщение #7


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Цитата(cirus @ 28.12.2019, 10:06) *

Если в скрипте 10000 таких строк, каждый раз все заменять что ли?

Нет, нужно поменять 1 раз при сбитии координат, и вдальнейшем удалить этот кусок кода.
Просто когда сбиваются координаты сидеть и заменять каждую комбинацию координат по одной очень неудобно
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 28.12.2019, 13:30
Сообщение #8


***********

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



если это случается регулярно, то крайне рекомендую переписать функции использующие координаты на пользовательские. Их, подозрвеваю, вы используете не так много:
Код

local my_offsetX = 10
local my_offsetY = 0

local left_orig = left
local left = function(x, y, ...)
     left_orig(x+my_offsetX, y+my_offsetY,...)
end

Ну и далее по мотивам. Один раз смещение выставил - и клики пошли в сторону уходить. Кстати подобные фишки могут быть полезны когда изображение снимается с родительского окна (по хендлу), а клики нужно слать в дочерние. Функцию чирканул и больше не задумываешься куда и как шлешь - просто работает. При этом и метод эмуляции очень легко менять.


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


*****

Journeyman
Сообщений: 399
Регистрация: 18.11.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.689



Цитата(DarkMaster @ 28.12.2019, 17:30) *

если это случается регулярно, то крайне рекомендую переписать функции использующие координаты на
Ну и далее по мотивам. Один раз смещение выставил - и клики пошли в сторону уходить. Кстати подобные фишки могут быть полезны когда изображение снимается с родительского окна (по хендлу), а клики нужно слать в дочерние. Функцию чирканул и больше не задумываешься куда и как шлешь - просто работает. При этом и метод эмуляции очень легко менять.

Не не, они случаются не по причине недосмотра, а для адаптации под другое разрешение окна/экрана.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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