Здравствуйте.
Уважаемые форумчане, необходима ваша помощь.
Цель данного кода, найти момент касания определенной линии указанной в таблице 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 |