local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local stamina = 100
local maxStamina = 100
local staminaDrain = 1
local staminaRegen = 0.5
local isSprinting = false
local normalspeed = 16
local sprintspeed = 32
local staminaGui = player.PlayerGui:WaitForChild("StaminaGui")
local staminaBackground = staminaGui:WaitForChild("StaminaBackground")
local staminaFill = staminaBackground:WaitForChild("StaminaFill")
staminaFill.Size = UDim2.new(stamina / maxStamina, 0, 1, 0)
local function regenerateStamina()
if stamina < maxStamina then
stamina = math.min(stamina + staminaRegen, maxStamina)
staminaFill.Size = UDim2.new(stamina / maxStamina, 0, 1, 0)
end
end
local function toggleSprint()
if stamina > 0 and humanoid.WalkSpeed > 0 then
isSprinting = true
humanoid.WalkSpeed = sprintspeed
else
isSprinting = false
humanoid.WalkSpeed = normalspeed
end
end
local function onInputBegan(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
if input.KeyCode == Enum.KeyCode.LeftShift then
if stamina > 0 and humanoid.WalkSpeed > 0 then
toggleSprint()
end
end
end
end
local function onInputEnded(input)
if input.UserInputType == Enum.UserInputType.Keyboard then
if input.KeyCode == Enum.KeyCode.LeftShift then
isSprinting = false
humanoid.WalkSpeed = normalspeed
end
end
end
game:GetService("UserInputService").InputBegan:Connect(onInputBegan)
game:GetService("UserInputService").InputEnded:Connect(onInputEnded)
game:GetService("RunService").Heartbeat:Connect(function()
if isSprinting and stamina > 0 then
stamina = math.max(stamina - staminaDrain, 0)
staminaFill.Size = UDim2.new(stamina / maxStamina, 0, 1, 0)
else
regenerateStamina()
end
if stamina == 0 and isSprinting then
isSprinting = false
humanoid.WalkSpeed = normalspeed
end
end)