• Cooldown on hook KeyPress
    4 replies, posted
I have an achievement for jumping 250000 times on my server but when too many players jump at once, it seems to cause lag and make the timer not work properly. I put a cooldown because I don't want to make every actual keypress add to the achievement. The timer is accurate(ish) to when a player lands and is ready to jump again. Has anybody got a alternative solution that would work better than this? : [CODE] if SERVER then local jumpcool = 0 hook.Add( "KeyPress", "ACV " .. "Keypress" .. ACVMT.LuaName, function( ply, key ) if (key == IN_JUMP) and jumpcool == 0 then ply:ACV_Increase(ACVMT.LuaName,1) jumpcool = 1 timer.Simple(0.55, function() jumpcool = 0 end) end end) end [/CODE] Thanks is advance.
Don't increase the achievement when the player is in air ( Player:IsOnGround() )
[QUOTE=Robotboy655;43681655]Don't increase the achievement when the player is in air ( Player:IsOnGround() )[/QUOTE] Thank you sir! Much appreciated.
Also, you want to change this code:[code] jumpcool = 1 timer.Simple(0.55, function() jumpcool = 0 end)[/code] Into this: [code]ply.jumpcool = 1 timer.Create("mytimer" .. ply:EntIndex(), 0.55, 1, function() ply.jumpcool = 0 end)[/code] So the variables and timers won't get overridden by other players jumping and such.
Why not just call it when the player has landed? Can be done Server side: This allows you to track when they land instead of using think hook to detect key-presses... If they land, they either jumped, or fell... [lua]hook.Add( "OnPlayerHitGround", "Stamina:SlowDownOnLang", function( _p, bInWater, bOnFloater, flFallSpeed ) end );[/lua] Edit: If you want to disable jump key after they land to prevent excessive jumping: [lua]// // Disable jump key while out of breath. // hook.Add( "CreateMove", "Stamina:DisableJumpKey", function( input ) if ( LocalPlayer( ):IsAdmin( ) ) then return; end if ( input:KeyDown( IN_JUMP ) ) then if ( LocalPlayer( ):GetJumpPower( ) < PLAYER_JUMP_POWER_MIN ) then local _buttons = input:GetButtons(); input:SetButtons( _buttons - IN_JUMP ) end end end )[/lua] Change the jump-power to the timer system and you should be good to go.
Sorry, you need to Log In to post a reply to this thread.