• Binding function to key
    5 replies, posted
Hi! Currently I'm working on my own gamemode and I'm wanting to add super jump but I don't want to overwrite the default jump but I want it blinded to space when you double press, if that makes sense, any help would be awesome! And on another note Im adding an energy system and I would like to know if I could change a variable like this [CODE] local MyVar = 100 MyVar = MyVar - 10[/CODE] Or would I have to use a math clamp
[editline]n[/editline] As for the approach question, try to play around with this; [lua]local variable = 0 local speed = 200 local goal = 720 hook.Add("HUDPaint", "", function() surface.SetDrawColor(255, 255, 255) surface.DrawRect( 0, 0, variable, 128 ) variable = math.Approach( variable, goal, speed * FrameTime() ) end)[/lua] Slowly makes the rectangle grow from 0 (variable) to 720 (goal) in a speed of 200 (speed)
[QUOTE=Author.;47266191]Quickly wrote that up for ya :smile:[/QUOTE] [lua]hook.Add("Think", "flying", function() if(input.IsKeyDown(KEY_SPACE)) then net.Start("superjump!") net.SendToServer() end end)[/lua]
Thanks, quickest response I've had before [editline]6th March 2015[/editline] So would this work [CODE]local time = 0.34 -- X second delay local amount = 250 -- X amount of velocity in jump local energuse = 10 if SERVER then util.AddNetworkString("superjump!") net.Receive("superjump!", function(length, client) if IsValid(client) then client:SetVelocity( Vector(0, 0, amount) ) client.energy = math.Approach( client.energy - energuse ) -- I have a global variable called energy end end) else local SJ_PRESSED = false hook.Add("PlayerBindPress", "super jump", function( ply, bind, pressed ) if (bind == "+jump") and pressed then if SJ_PRESSED then net.Start("superjump!") net.SendToServer() SJ_PRESSED = false else SJ_PRESSED = true timer.Simple( time, function() SJ_PRESSED = false end) end end end) end[/CODE]
don't use his code for double jumping, it's super exploitable (what I posted is one way to do it) [editline]5th March 2015[/editline] here's something from an old abandoned project of mine [lua]function GM:KeyPress(ply, key) if(key == IN_JUMP) then if not(ply:IsOnGround() or ply.DoubleJumped) then ply.DoubleJumped = true ply:SetLocalVelocity(Vector(ply:GetVelocity().x, ply:GetVelocity().y, 300)) end end end function GM:OnPlayerHitGround(ply) ply.DoubleJumped = false end[/lua]
Ok thanks so if I wanted it to deplete energy it would be like this ( I have a global player variable) [CODE] local energuse = 10 -- amount of energy been used function GM:KeyPress(ply, key) if(key == IN_JUMP) then if not(ply:IsOnGround() or ply.DoubleJumped) then ply.DoubleJumped = true if ply.energy < energuse then ply:PrintMessage(HUD_PRINTTALK, "You Need More Energy") else ply:SetLocalVelocity(Vector(ply:GetVelocity().x, ply:GetVelocity().y, 300)) -- going to add sound soon ply.energy = math.Approach( ply.energy - energuse ) end end end function GM:OnPlayerHitGround(ply) -- going to add sound soon ply.DoubleJumped = false end[/CODE] Then in another file I would have [CODE] ply.energy = 30 -- my global variable local speed = 200 local goal = 30 function energyregain ( ply ) if ply.energy == 30 then ply.MsgN("No Energy Regain Needed") else variable = math.Approach( ply.energy, goal, speed * FrameTime() ) -- will add sound end) [/CODE] Just something quick done from my IPad [editline]6th March 2015[/editline] Another quick question, would this be server side of client side or even shared?
Sorry, you need to Log In to post a reply to this thread.