Здравствуйте.
Уважаемые форумчане, необходима ваша помощь.
Цель данного кода, найти момент касания определенной линии указанной в таблице t_Lev. Для отслеживания данного момента необходимо применить таблицу t_Sys, которая имеет три значения: 1-коснулись нижней линии; 2- не коснулись ни одной линии; 3-коснулись верхней линии. Нужна именно таблица, что бы знать какая линия была достигнута до перехода в состояние 2, это важно.
Условие касание сейчас выставлены заведомо невыполнимые и при этом код не возвращает линии, даже первые значения.
Уважаемые форумчане, необходима ваша помощь.
Цель данного кода, найти момент касания определенной линии указанной в таблице t_Lev. Для отслеживания данного момента необходимо применить таблицу t_Sys, которая имеет три значения: 1-коснулись нижней линии; 2- не коснулись ни одной линии; 3-коснулись верхней линии. Нужна именно таблица, что бы знать какая линия была достигнута до перехода в состояние 2, это важно.
Условие касание сейчас выставлены заведомо невыполнимые и при этом код не возвращает линии, даже первые значения.
| Код |
|---|
function Init() f_LEVEL= LEVEL()
return #Settings.line
end
function OnCalculate(Index)
local S2Down, S1Down, L1Up, L2Up = f_LEVEL(Index)
return S2Down, S1Down, L1Up, L2Up
end
function LEVEL()
t_Sys={}
t_Sys[1]=3
t_Sys[2]=2
return function (I)
local S2Down, S1Down, L1Up, L2Up = nil, nil, nil, nil
if I>2 then
if t_Sys[#t_Sys]==3 then
S2Down, S1Down, L1Up, L2Up = nil, nil, nil, nil
-- t_Sys[#t_Sys+1]=2
end
if t_Sys[#t_Sys]==2 then --пока касание не произошло
local t_Lev=LINE(I)
S2Down, S1Down, L1Up, L2Up = t_Lev[1], t_Lev[2], t_Lev[3], t_Lev[4]
if H(I)>=t_Lev[#t_Lev] then --произошло касание верхней линии
t_Sys[#t_Sys+1]=3
end
if L(I)<=t_Lev[1] then
t_Sys[#t_Sys+1]=1; --произошло касание нижней линии
end
end
if t_Sys[#t_Sys]==1 then
S2Down, S1Down, L1Up, L2Up = nil, nil, nil, nil
-- t_Sys_W[#t_Sys_W+1]=2
end
end
return S2Down, S1Down, L1Up, L2Up
end
end
function LINE(I)
local t_Lev={}
if I>2 then
if t_Sys[#t_Sys-1]==3 then
for i=1, 2 do
t_Lev[i]=C(I-i)*0.78
t_Lev[i+2]=C(I-i)*1.22
end
end
if t_Sys[#t_Sys-1]==1 then
for i=1, 2 do
t_Lev[i]=C(I-i)*0.78
t_Lev[i+2]=C(I-i)*1.22
end
end
if H(I)>=t_Lev[#t_Lev] then -- здесь сравнение указанно как еще один вариант
-- t_Sys[#t_Sys+1]=3
end
if L(I)<=t_Lev[1] then
-- t_Sys[#t_Sys+1]=1;
end
end
return t_Lev
end
|