Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- util.AddNetworkString( "HUD_Stamina" )
- util.AddNetworkString( "HUD_MaxStamina" )
- local defaultRunSpeed = 240
- local defaultWalkSpeed = 160
- local playerMeta = FindMetaTable("Player")
- function playerMeta:SetStamina( amount )
- self.Stamina = math.Clamp(amount, 1, self.MaxStamina)
- net.Start("HUD_Stamina")
- net.WriteUInt(self.Stamina, 8)
- net.Send(self)
- end
- function playerMeta:SetMaxStamina( amount )
- self.MaxStamina = amount
- net.Start("HUD_MaxStamina")
- net.WriteUInt(self.MaxStamina, 8)
- net.Send(self)
- end
- hook.Add("PlayerSpawn", "SPRINTING_PlayerSpawn", function(ply)
- ply.RunSpeed = ply.RunSpeed or defaultRunSpeed
- ply.WalkSpeed = ply.WalkSpeed or defaultWalkSpeed
- ply:SetRunSpeed(ply.RunSpeed)
- ply:SetWalkSpeed(ply.WalkSpeed)
- ply:SetMaxStamina( ply.MaxStamina or 100 )
- ply:SetStamina( ply.MaxStamina )
- ply.SprintTime = 0
- ply.Sprinting = false
- end)
- hook.Add("KeyPress", "SPRINTING_KeyPress", function(ply, key)
- if !ply:Alive() then return end
- if(key == IN_SPEED) then
- if(ply.Stamina > 10) then
- ply:SetRunSpeed(ply.RunSpeed)
- else
- ply:SetRunSpeed(ply.WalkSpeed)
- end
- ply.Sprinting = true
- elseif(key == IN_JUMP and ply:IsOnGround()) then
- if(ply.Stamina < 10) then
- ply:SetJumpPower(0)
- else
- ply:SetJumpPower(200)
- ply:SetStamina(ply.Stamina - 10)
- end
- end
- end)
- hook.Add("KeyRelease", "SPRINTING_KeyRelease", function(ply, key)
- if(key != IN_SPEED) then return end
- ply.Sprinting = false
- end)
- local lastTime
- hook.Add("Tick", "SPRINTING_Tick", function()
- if lastTime and lastTime > CurTime() then return end
- for k,v in pairs(player.GetAll()) do
- if !v.Sprinting or !(v:KeyDown(IN_FORWARD) or v:KeyDown(IN_BACK) or v:KeyDown(IN_MOVELEFT) or v:KeyDown(IN_MOVERIGHT)) then
- if(v.Stamina < v.MaxStamina) then
- v:SetStamina(v.Stamina + 2)
- end
- continue
- end
- if(v.Stamina <= 0) then
- v:SetRunSpeed(v.WalkSpeed)
- v.Sprinting = false
- else
- v:SetStamina(v.Stamina - 4)
- end
- end
- lastTime = CurTime() + 1
- end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement