Advertisement
pogh10

Untitled

May 25th, 2015
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.03 KB | None | 0 0
  1. util.AddNetworkString( "HUD_Stamina" )
  2. util.AddNetworkString( "HUD_MaxStamina" )
  3.  
  4. local defaultRunSpeed = 240
  5. local defaultWalkSpeed = 160
  6.  
  7. local playerMeta = FindMetaTable("Player")
  8.  
  9. function playerMeta:SetStamina( amount )
  10. self.Stamina = math.Clamp(amount, 1, self.MaxStamina)
  11.  
  12. net.Start("HUD_Stamina")
  13. net.WriteUInt(self.Stamina, 8)
  14. net.Send(self)
  15. end
  16.  
  17. function playerMeta:SetMaxStamina( amount )
  18. self.MaxStamina = amount
  19.  
  20. net.Start("HUD_MaxStamina")
  21. net.WriteUInt(self.MaxStamina, 8)
  22. net.Send(self)
  23. end
  24.  
  25.  
  26. hook.Add("PlayerSpawn", "SPRINTING_PlayerSpawn", function(ply)
  27. ply.RunSpeed = ply.RunSpeed or defaultRunSpeed
  28. ply.WalkSpeed = ply.WalkSpeed or defaultWalkSpeed
  29.  
  30. ply:SetRunSpeed(ply.RunSpeed)
  31. ply:SetWalkSpeed(ply.WalkSpeed)
  32.  
  33. ply:SetMaxStamina( ply.MaxStamina or 100 )
  34. ply:SetStamina( ply.MaxStamina )
  35.  
  36. ply.SprintTime = 0
  37. ply.Sprinting = false
  38. end)
  39.  
  40. hook.Add("KeyPress", "SPRINTING_KeyPress", function(ply, key)
  41. if !ply:Alive() then return end
  42.  
  43. if(key == IN_SPEED) then
  44. if(ply.Stamina > 10) then
  45. ply:SetRunSpeed(ply.RunSpeed)
  46. else
  47. ply:SetRunSpeed(ply.WalkSpeed)
  48. end
  49. ply.Sprinting = true
  50. elseif(key == IN_JUMP and ply:IsOnGround()) then
  51. if(ply.Stamina < 10) then
  52. ply:SetJumpPower(0)
  53. else
  54. ply:SetJumpPower(200)
  55. ply:SetStamina(ply.Stamina - 10)
  56. end
  57. end
  58. end)
  59.  
  60. hook.Add("KeyRelease", "SPRINTING_KeyRelease", function(ply, key)
  61. if(key != IN_SPEED) then return end
  62.  
  63. ply.Sprinting = false
  64. end)
  65.  
  66. local lastTime
  67. hook.Add("Tick", "SPRINTING_Tick", function()
  68. if lastTime and lastTime > CurTime() then return end
  69.  
  70. for k,v in pairs(player.GetAll()) do
  71. if !v.Sprinting or !(v:KeyDown(IN_FORWARD) or v:KeyDown(IN_BACK) or v:KeyDown(IN_MOVELEFT) or v:KeyDown(IN_MOVERIGHT)) then
  72. if(v.Stamina < v.MaxStamina) then
  73. v:SetStamina(v.Stamina + 2)
  74. end
  75.  
  76. continue
  77. end
  78.  
  79. if(v.Stamina <= 0) then
  80. v:SetRunSpeed(v.WalkSpeed)
  81. v.Sprinting = false
  82. else
  83. v:SetStamina(v.Stamina - 4)
  84. end
  85. end
  86.  
  87. lastTime = CurTime() + 1
  88. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement