Chocobo
White-Flower
- Reaction score
- 409
I'm trying to create a system (for myself xd) so instead of putting the parametric equation of the graph (that's too long to parse it), I put some checkpoints (that makes a graph closes to what I want).
however, it seems to not to work correctly, it also doesn't show anything.
as there are massive leaks in the trigger, I could notice the function was still running however nothing (no unit, no lightning in the function Calculate and GraphN/B) have shown up in the map (with coordinates -3000, -3000, 3000, 3000).
note : the udg_List1 and udg_List2 contains the checkpoints for the letter "L".
it's supposed to do something like that (done with a calculator)
however, it seems to not to work correctly, it also doesn't show anything.
JASS:
globals
real array udg_List1
real array udg_List2
real array udg_List3
real array udg_List4
integer udg_DimList
endglobals
function GraphB takes integer degree, real duration returns nothing
local integer T = 0
local integer Tpitch = 38-4*degree
local integer Tmax = 1
local integer i = 0
local lightning array Lightning
loop
exitwhen T >= 1
set i = i + 1
set T = T + Tpitch
set Tmax = T + Tpitch
if T+Tmax < 1 then
set Tmax = 1
endif
if degree == 2 then
set Lightning<i> = AddLightning("CLPB", true, udg_List1[1]*T*T-2*udg_List1[2]*T+udg_List1[3], udg_List2[1]*T*T-2*udg_List2[2]*T+udg_List2[3], udg_List3[1]*Tmax*Tmax-2*udg_List3[2]*Tmax+udg_List3[3], udg_List4[1]*Tmax*Tmax-2*udg_List4[2]*Tmax+udg_List4[3])
endif
endloop
call TriggerSleepAction(duration)
loop
exitwhen i == 0
call DestroyLightning(Lightning<i>)
set Lightning<i> = null
set i = i - 1
endloop
endfunction
function GraphN takes integer degree, real duration returns nothing
local integer T = 0
local integer Tpitch = 38-4*degree
local integer Tmax = 1
local integer i = 0
local lightning array Lightning
loop
exitwhen T >= 1
set i = i + 1
set T = T + Tpitch
set Tmax = T + Tpitch
if T+Tmax < 1 then
set Tmax = 1
endif
if degree == 2 then
set Lightning<i> = AddLightning("CLPB", true, udg_List3[1]*T*T+udg_List3[2]*T+udg_List3[3] ,udg_List4[1]*T*T+udg_List4[2]*T+udg_List4[3], udg_List3[1]*Tmax*Tmax+udg_List3[2]*Tmax+udg_List3[3] ,udg_List4[1]*Tmax*Tmax+udg_List4[2]*Tmax+udg_List4[3])
endif
endloop
call TriggerSleepAction(duration)
loop
exitwhen i == 0
call DestroyLightning(Lightning<i>)
set Lightning<i> = null
set i = i - 1
endloop
endfunction
function Calculate takes integer degree, real duration, integer which, real delay returns nothing
local integer Z = 0
loop
set Z = Z + 1
call UnitApplyTimedLife(CreateUnit(Player(0), 039;hfoo039;, udg_List1[Z], udg_List2[Z], 0.0), 039;BTLF039;, duration)
if degree == 2 then
if which == 1 then
set udg_List3[1] = 2*(udg_List1[Z]-2*udg_List1[Z+1]+udg_List1[Z+2])
set udg_List3[2] = -3*udg_List1[Z]+4*udg_List1[Z+1]-udg_List1[Z+2]
set udg_List3[3] = udg_List1[Z]
set udg_List4[1] = 2*(udg_List2[Z]-2*udg_List2[Z+1]+udg_List2[Z+2])
set udg_List4[2] = -3*udg_List2[Z]+4*udg_List2[Z+1]-udg_List2[Z+2]
set udg_List4[3] = udg_List2[Z]
call GraphN(degree, duration)
else
set udg_List3[1] = udg_List1[Z]-2*udg_List1[Z+1]+udg_List1[Z+2]
set udg_List3[2] = -2*udg_List1[Z]-2*udg_List1[Z+2]
set udg_List3[3] = udg_List1[Z]
set udg_List4[1] = udg_List2[Z]-2*udg_List2[Z+1]+udg_List2[Z+2]
set udg_List4[2] = -2*udg_List2[Z]-2*udg_List2[Z+2]
set udg_List4[3] = udg_List2[Z]
call GraphB(degree, duration)
endif
endif
exitwhen Z == udg_DimList - degree
call TriggerSleepAction(delay)
endloop
endfunction
function Setup takes nothing returns nothing
local integer i = 0
set udg_List1[1] = 1
set udg_List2[1] = 3
set udg_List1[2] = 1/3
set udg_List2[2] = 7/3
set udg_List1[3] = 3/2
set udg_List2[3] = 2
set udg_List1[4] = 7/3
set udg_List2[4] = 5/2
set udg_List1[5] = 11/5
set udg_List2[5] = 13/5
set udg_List1[6] = 7/4
set udg_List2[6] = 5/2
set udg_List1[7] = 3/2
set udg_List2[7] = 2
set udg_List1[8] = 3/2
set udg_List2[8] = 5/4
set udg_List1[9] = 6/5
set udg_List2[9] = 2/5
set udg_List1[10] = 1/3
set udg_List2[10] = 0
set udg_List1[11] = 2/3
set udg_List2[11] = 3/4
set udg_List1[12] = 6/5
set udg_List2[12] = 2/4
set udg_List1[13] = 9/5
set udg_List2[13] = 1/5
set udg_List1[14] = 11/4
set udg_List2[14] = 0
set udg_DimList = 14
loop
set i = i + 1
set udg_List1<i> = udg_List1<i> * 1000
exitwhen i == udg_DimList
endloop
call Calculate(2, 10.00, 1, 0.30)
call TriggerSleepAction(10.00 + (udg_DimList-2)*3*0.3)
call Calculate(2, 10.00, 2, 0.30)
endfunction</i></i></i></i></i></i></i></i>
as there are massive leaks in the trigger, I could notice the function was still running however nothing (no unit, no lightning in the function Calculate and GraphN/B) have shown up in the map (with coordinates -3000, -3000, 3000, 3000).
note : the udg_List1 and udg_List2 contains the checkpoints for the letter "L".
it's supposed to do something like that (done with a calculator)