Допустим я назначил в скрипте некоторые координаты, много разных точек.
А потом сдвинул весь массив в сторону. Как по одной первой координате быстро рассчитать новые координаты всех остальных точек и заменить их в скрипте?
Допустим у меня есть
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" найдены другие координаты, они бы автоматически прибавляли разницу между старыми и вставляли бы новые значения на место их
--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)
Так, настало время с этим разобраться
Спасибо, работает
--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)
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} --
}
{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
и так далее
--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
если это случается регулярно, то крайне рекомендую переписать функции использующие координаты на пользовательские. Их, подозрвеваю, вы используете не так много:
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
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)