var pos = []
function hsv2rgb(h,s,v){
    var r, g, b, i, f, p, q, t;
    if (arguments.length === 1) {
        s = h.s, v = h.v, h = h.h;
    }
    i = Math.floor(h * 6);
    f = h * 6 - i;
    p = v * (1 - s);
    q = v * (1 - f * s);
    t = v * (1 - (1 - f) * s);
    switch (i % 6) {
        case 0: r = v, g = t, b = p; break;
        case 1: r = q, g = v, b = p; break;
        case 2: r = p, g = v, b = t; break;
        case 3: r = p, g = q, b = v; break;
        case 4: r = t, g = p, b = v; break;
        case 5: r = v, g = p, b = q; break;
    }
    return [
        Math.round(r * 255),
        Math.round(g * 255),
        Math.round(b * 255),
        255
    ]
}
UI.AddLabel("-----------------------------------")
UI.AddSliderInt("Length", 0, 1000) 
UI.AddLabel("gradient line by serj#7334");
UI.AddLabel("-----------------------------------");
function cm(){
    var local = Entity.GetLocalPlayer()
    pos.unshift(Entity.GetRenderOrigin(local))
    var length = UI.GetValue("Misc", "JAVASCRIPT", "Script items", "Length")
    if(pos.length > length)
    {
        pos.pop()
    }
}
function draw(){
    var local = Entity.GetLocalPlayer()
    if(!Entity.IsAlive(local))
        return
    var first = true

    var last = []
    if(pos.length < 1)
        return
    for(i in pos)
    {
        var w2s = Render.WorldToScreen(pos[i])
        if(!first)
        {
            //Cheat.Print([w2s,last] + "\n")
            Render.Line(w2s[0],w2s[1],last[0],last[1],hsv2rgb((Globals.Realtime() + (i/200)) % 1, 1, 1))
           
        }
        first = false
        last = w2s
    }
}
function reset(){
    pos = []
}
Cheat.RegisterCallback("round_start", "reset")
Cheat.RegisterCallback("Draw", "draw")
Cheat.RegisterCallback("CreateMove", "cm")