I made this sprint system with stamina but when I spam my E key a bunch of times it regenerates my stamina super fast, I haven’t scripted in a while so I’m a little rusty
local SPRINTING_SPEED = 20
local MAX_STAMINA = 100
local stamina = MAX_STAMINA
local isSprinting = false
local function sprint(name, inputState)
if inputState == Enum.UserInputState.Begin then
isSprinting = true
if isSprinting and stamina > 0 then
humanoid.WalkSpeed = SPRINTING_SPEED
repeat
stamina -= 1
print(stamina)
task.wait(.1)
until stamina <= 0 or not isSprinting
humanoid.WalkSpeed = 16
end
elseif inputState == Enum.UserInputState.End then
isSprinting = false
if not isSprinting and stamina < MAX_STAMINA then
repeat
stamina += 1
print(stamina)
task.wait(.5)
until stamina >= MAX_STAMINA or isSprinting
end
end
end
ContextActionService:BindAction("Sprint", sprint, false, Enum.KeyCode.E)
local SPRINTING_SPEED = 20
local MAX_STAMINA = 100
local stamina = MAX_STAMINA
local isSprinting = false
local isCoolingDown = false
local function sprint(name, inputState)
if inputState == Enum.UserInputState.Begin then
isSprinting = true
if isSprinting and stamina > 0 then
humanoid.WalkSpeed = SPRINTING_SPEED
repeat
stamina -= 1
print(stamina)
task.wait(.1)
until stamina <= 0 or not isSprinting
humanoid.WalkSpeed = 16
end
elseif inputState == Enum.UserInputState.End then
isSprinting = false
if not isSprinting and not isCoolingDown and stamina < MAX_STAMINA then
isCoolingDown = true
task.wait(3)
isCoolingDown = false
repeat
stamina += 1
print(stamina)
task.wait(.5)
until stamina >= MAX_STAMINA or isSprinting
end
end
end
ContextActionService:BindAction("Sprint", sprint, false, Enum.KeyCode.E)