Stamina System

I’m looking for a stamina system, if someone can make or post one i would be rather grateful

i realised i wasnt very clear - by stamina system, i mean that you can sprint for only a short period, say 30 seconds than find yourself unable to sprint until it is recharged.

Isn’t that already included with Garry’s Mod?

No, it’s explicitly disabled.

Hrm, would there be a way to enable it, ill actually go look at some of the lua functions, probably wont find much >.<

Nope, it’s disabled in a not-so-convenient fashion within the SDK. You’d have to recreate it entirely in Lua.

I have the code for this. I’ll upload it when I get off my mac. lol

Holy crap, Thankyou :D, if you made it, its got to be good. (not being a suckup but you’re great with lua, used to play on BB when you were a dev.)

Kogitsune made one a while ago but then it disappeared.

…and then he made it again!

http://www.garrysmod.org/img/?t=dll&id=85659

Here’s my version,

[lua]
local LastThink = 0

function StartingStamina( ply )
ply.Energy = 30
ply.Flash = 60
end
hook.Add(“PlayerSpawn”,“StartingStamina”,StartingStamina)

function AddPlyEnergy( ply, num )
if !ply:Alive() then return end
ply.Energy = math.Clamp( ply.Energy + num, 0, 30 )
end
– I know we can just do -num, but this is easier for me
function TakePlyEnergy( ply, num )
if !ply:Alive() then return end
ply.Energy = math.Clamp( ply.Energy - num, 0, 30 )
end

function FlashlightOnOrOff(ply, status)
if status then
return ply.Flash > 15
end
end
hook.Add(“PlayerSwitchFlashlight”,“FlashlightOnOrOff?”,FlashlightOnOrOff)

function Stankeypress( ply, key )
if key == IN_SPEED and ply.Energy < 5 then
ply:ConCommand( “-speed” )
end
if key == IN_JUMP and ply.Energy >= 5 then
TakePlyEnergy( ply, 5 )
end
end
hook.Add(“KeyPress”,“staminakeypress”,Stankeypress)

function ThinkOfDisShiz()
local now = CurTime()
local delta = now - LastThink

for k, ply in pairs( player.GetAll() ) do
	
	if ply:Alive() and ply:FlashlightIsOn() and !ply:GetNWBool("sleep") then
		ply.Flash = math.Clamp( ply.Flash - (delta / 2), 0, 60 )
	else
		ply.Flash = math.Clamp( ply.Flash + delta, 0, 60 )
	end
	
	if ply:KeyDown( IN_SPEED ) and ply:Alive() and ply:GetVelocity():Length() &gt; 10 and !ply:Crouching() then
		TakePlyEnergy( ply, (delta / 2) )
	else
		AddPlyEnergy( ply, delta )
	end
	
	if ply.Flash &lt;= 0 then
		ply:Flashlight( false )
	end
	
	if ply.Energy &lt;= 1 then
		ply:ConCommand( "-speed" )
	end
	
	if ply.Energy &gt;= 5 then
		ply:SetJumpPower( 175 )
	else
		ply:SetJumpPower( 0 )
	end
	
	if ply.Energy != 30 then
		umsg.Start("GetStamina", ply)
			umsg.Float( ply.Energy )
		umsg.End()
	end
	
	if ply.Flash != 60 then
		umsg.Start("GetFlash", ply)
			umsg.Float( ply.Flash )
		umsg.End()
	end
	
end
LastThink = now

end
hook.Add(“Think”,“ThinkOfDisShiz”,ThinkOfDisShiz)
[/lua]

It does stamina for running and jumping and has batteries for the flashlight.

Personally, I’d much rather prefer the HEV battery/sprint/oxygen system to look pixel perfect like HL2’s, but hey, just an opinion. Nice work PC Camp, and kudos to Kogitsune as well. :smile:

Thanks to all, i’ll have a muck around with both of them