|
|
|
Coordinats, смена координат скриптом |
|
|
Levo222 |
7.11.2019, 16:19
|
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" найдены другие координаты, они бы автоматически прибавляли разницу между старыми и вставляли бы новые значения на место их
|
|
|
|
cirus |
8.11.2019, 1:38
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26744
Пользователь №: 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)
|
|
|
|
Levo222 |
28.12.2019, 2:50
|
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 Даже если эту приписку после из скрипта можно будет удалить, просто кусок скрипта заменяющий одну комбинацию координат на другую: Но их очень много?
|
|
|
|
DarkMaster |
28.12.2019, 13:30
|
Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27724
Пользователь №: 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____
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|