Stamina Bar
Key RequiredUniversal

Stamina Bar

Universal Scriptjoaogabrielbds23joaogabrielbds23 2.8K views 25 executesUpdated Jun 24, 2025
Unrated
00
Lua Script•147 lines (5325 chars)
-- LocalScript (dentro de StarterPlayer.StarterPlayerScripts)

local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")

local Player = Players.LocalPlayer
local Character = Player.Character or Player.CharacterAdded:Wait()
local Humanoid = Character:WaitForChild("Humanoid")
local Camera = workspace.CurrentCamera

-- Configurações
local MAX_STAMINA = 100
local RUN_SPEED = 20
local WALK_SPEED = 16 -- Velocidade padrão do Roblox
local RUN_FOV = 85
local NORMAL_FOV = 70 -- FOV padrão do Roblox
local STAMINA_DECREASE_AMOUNT = 8
local STAMINA_DECREASE_INTERVAL = 2 -- segundos
local STAMINA_REGEN_AMOUNT = 5
local STAMINA_REGEN_INTERVAL = 1 -- segundo

-- Variáveis de estado
local currentStamina = MAX_STAMINA
local isRunning = false
local lastStaminaDecreaseTime = 0
local lastStaminaRegenTime = 0

-- Criar a UI
local playerGui = Player:WaitForChild("PlayerGui")

-- ScreenGui
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "StaminaUI"
screenGui.Parent = playerGui

-- Frame da barra de stamina (fundo)
local staminaFrame = Instance.new("Frame")
staminaFrame.Name = "StaminaFrame"
staminaFrame.Size = UDim2.new(0.3, 0, 0.03, 0) -- 30% da largura da tela, 3% da altura
staminaFrame.Position = UDim2.new(0.35, 0, 0.05, 0) -- Centralizado na parte superior
staminaFrame.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
staminaFrame.BorderSizePixel = 0
staminaFrame.Parent = screenGui

-- Barra de stamina (preenchimento)
local staminaBar = Instance.new("Frame")
staminaBar.Name = "StaminaBar"
staminaBar.Size = UDim2.new(1, 0, 1, 0) -- Começa cheia dentro do Frame
staminaBar.Position = UDim2.new(0, 0, 0, 0)
staminaBar.BackgroundColor3 = Color3.fromRGB(0, 255, 0) -- Cor verde
staminaBar.BorderSizePixel = 0
staminaBar.Parent = staminaFrame

-- Botão de correr
local runButton = Instance.new("TextButton")
runButton.Name = "RunButton"
runButton.Size = UDim2.new(0.08, 0, 0.08, 0) -- Pequeno quadrado
runButton.Position = UDim2.new(0.85, 0, 0.8, 0) -- Canto inferior direito
runButton.BackgroundColor3 = Color3.fromRGB(0, 0, 0) -- Preto
runButton.TextColor3 = Color3.fromRGB(255, 255, 255) -- Texto branco
runButton.Text = "Correr"
runButton.Font = Enum.Font.SourceSansBold
runButton.TextSize = 18
runButton.BorderSizePixel = 0
runButton.Parent = screenGui

-- Função para atualizar a barra de stamina
local function updateStaminaBar()
    local percentage = currentStamina / MAX_STAMINA
    staminaBar:TweenSize(UDim2.new(percentage, 0, 1, 0), "Out", "Quad", 0.1, true)

    -- Mudar a cor da barra dependendo da stamina
    if currentStamina > MAX_STAMINA / 2 then
        staminaBar.BackgroundColor3 = Color3.fromRGB(0, 255, 0) -- Verde
    elseif currentStamina > MAX_STAMINA / 4 then
        staminaBar.BackgroundColor3 = Color3.fromRGB(255, 255, 0) -- Amarelo
    else
        staminaBar.BackgroundColor3 = Color3.fromRGB(255, 0, 0) -- Vermelho
    end
end

-- Função para iniciar a corrida
local function startRunning()
    if currentStamina > 0 then
        isRunning = true
        Humanoid.WalkSpeed = RUN_SPEED
        Camera.FieldOfView = RUN_FOV
        runButton.Text = "Walk" -- Mudar texto do botão
        lastStaminaDecreaseTime = os.time() -- Resetar tempo para começar a diminuir
    end
end

-- Função para parar de correr
local function stopRunning()
    isRunning = false
    Humanoid.WalkSpeed = WALK_SPEED
    Camera.FieldOfView = NORMAL_FOV
    runButton.Text = "Run" -- Mudar texto do botão
    lastStaminaRegenTime = os.time() -- Resetar tempo para começar a regenerar
end

-- Conectar o botão de correr
runButton.MouseButton1Click:Connect(function()
    if isRunning then
        stopRunning()
    else
        startRunning()
    end
end)

-- Loop principal do jogo (rodando a cada frame)
RunService.RenderStepped:Connect(function()
    if Humanoid.Health > 0 then -- Apenas se o personagem estiver vivo
        if isRunning then
            -- Diminuir stamina se o personagem estiver andando e correndo
            if Humanoid.MoveDirection.Magnitude > 0 then -- Verifica se o personagem está se movendo
                local currentTime = os.time()
                if currentTime - lastStaminaDecreaseTime >= STAMINA_DECREASE_INTERVAL then
                    currentStamina = math.max(0, currentStamina - STAMINA_DECREASE_AMOUNT)
                    updateStaminaBar()
                    lastStaminaDecreaseTime = currentTime

                    if currentStamina == 0 then
                        stopRunning() -- Parar de correr se a stamina acabar
                    end
                end
            else
                -- Se estiver parado enquanto correndo, não diminui stamina, mas também não regenera automaticamente aqui
                -- A regeneração só acontece quando isRunning é falso
            end
        else
            -- Regenerar stamina
            local currentTime = os.time()
            if currentTime - lastStaminaRegenTime >= STAMINA_REGEN_INTERVAL then
                currentStamina = math.min(MAX_STAMINA, currentStamina + STAMINA_REGEN_AMOUNT)
                updateStaminaBar()
                lastStaminaRegenTime = currentTime
            end
        end
    end
end)

-- Inicializar a barra de stamina
updateStaminaBar()

print("Funcionou")

Features & Information

It's a stamina bar with a sprint or stop sprint button :/ I don't know why you would use that (ALL MY SCRIPT'S ARE MADE BY AI, I USED GEMINI FOR THAT)

Community Comments (2)

joaogabrielbds23joaogabrielbds23Jun 24, 2025

Why would you use this script? I use for fun :/

notenoughjacknotenoughjackJun 24, 2025

It seems useless Especially when you're just limiting yourself

More Scripts for Universal Scripts