Longjump Script

I’m trying to do a longjump script, I’ve tried way too many methods and yet it doesn’t work. No errors.
[lua]
if (CLIENT) then

local LJA = 0
local Speed = 0.05

function Ljtog()
if LJA == 0 then
LJA = 1
else
LJA = 0
end
end

function Ljcore()
timer.Create( “Shit”, Speed+Speed, 0, function()
if LJA == 1 then
RunConsoleCommand( “+moveleft” )
RunConsoleCommand( “+left” )
RunConsoleCommand( “-right” )
RunConsoleCommand( “-moveright” )
timer.Simple( Speed, function()
RunConsoleCommand( “-moveleft” )
RunConsoleCommand( “-left” )
RunConsoleCommand( “+right” )
RunConsoleCommand( “+moveright” )
end)
end
end)
end
hook.Add( “Think”, “longjump”, Ljcore )
concommand.Add( “ljtog”, Ljtog )
end
[/lua]

Basically it does this:
+moveleft
+left
wait for a split second
+right
+move right

and of course it cancels out the other vars with -left and -moveleft, and it repeats itself.

Any help?

Why are you re-creating the timer in Think?

Because I don’t know what I’m doing, Is it only recreating “Shit”? If that’s the case, should i only add Timer.Remove(“Shit”) before it recreates it again?

This is what I think is happening (but I could be wrong):

  • Ljcore runs, and creates the timer “Shit” to run in 0.1 seconds
  • 0.015 seconds later (for a 66-tick server), the timer is reset so it runs in 0.1 seconds (0.115 seconds since this started)
  • Another 0.015 seconds later, the timer is reset to run in 0.1 seconds (0.130 seconds since it started)
  • etc…
    So it never runs, because you keep resetting it.

So i got it to work but the timing is horribly off, can anyone with good math knowledge help balance the +left and the +right’s?

[lua]
if (CLIENT) then

local LJA = 0
local Speed = 0.05

function Ljon()
LJA = 1
end
concommand.Add( “+lj”, Ljon )

function Ljoff()
LJA = 0
end
concommand.Add( “-lj”, Ljoff )

function Ljcore()
timer.Remove( “Shit” )
timer.Create( “Shit”, Speed+Speed, 0, function()
if LJA == 1 then
RunConsoleCommand( “+moveleft” )
RunConsoleCommand( “+left” )
RunConsoleCommand( “-right” )
RunConsoleCommand( “-moveright” )
timer.Simple( Speed, function()
RunConsoleCommand( “-moveleft” )
RunConsoleCommand( “-left” )
RunConsoleCommand( “+right” )
RunConsoleCommand( “+moveright” )
timer.Simple( Speed+0.01, function()
RunConsoleCommand( “-moveleft” )
RunConsoleCommand( “-left” )
RunConsoleCommand( “-right” )
RunConsoleCommand( “-moveright” )
end)
end)
end
end)
end
timer.Create( “ResetAll”, Speed*2, 0, Ljcore )
concommand.Add( “ljtog”, Ljtog )
end
[/lua]

[editline]20th July 2011[/editline]

It moves to the right more than it does to the left.

[lua]
if (CLIENT) then

local LJA = 0
local Speed = 0.05

function Ljtog()
if LJA == 0 then
LJA = 1
timer.Create( “Shit”, Speed*2, 0, function()
RunConsoleCommand( “+moveleft” )
RunConsoleCommand( “+left” )
RunConsoleCommand( “-right” )
RunConsoleCommand( “-moveright” )
timer.Simple( Speed, function()
RunConsoleCommand( “-moveleft” )
RunConsoleCommand( “-left” )
RunConsoleCommand( “+right” )
RunConsoleCommand( “+moveright” )
end)
else
timer.Remove(“Shit”)
LJA = 0
end
end

concommand.Add( “ljtog”, Ljtog )
end
[/lua]

[lua]
if (CLIENT) then

local LJA = 0
local Speed = 0.05

function Ljtog()
if LJA == 0 then
LJA = 1
timer.Create( “Shit”, Speed*2, 0, function()
RunConsoleCommand( “+moveleft” )
RunConsoleCommand( “+left” )
RunConsoleCommand( “-right” )
RunConsoleCommand( “-moveright” )
timer.Simple( Speed, function()
RunConsoleCommand( “-moveleft” )
RunConsoleCommand( “-left” )
RunConsoleCommand( “+right” )
RunConsoleCommand( “+moveright” )
end)
end)
else
timer.Remove(“Shit”)
LJA = 0
end
end

concommand.Add( “ljtog”, Ljtog )
end
[/lua]

Goes to the left, then goes to the right and doesn’t go back to the left, it just keeps +right and +moveright.