Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local playerSettings = {
- SprintSpeed = 22,
- WalkSpeed = 16,
- MaxStamina = 100,
- DrainRate = 20,
- RegenRate = 15,
- RegenDelay = 1,
- JumpCost = 25,
- SprintKey = Enum.KeyCode.LeftShift
- }
- local Players = game:GetService("Players")
- local RunService = game:GetService("RunService")
- local UserInputService = game:GetService("UserInputService")
- local player = Players.LocalPlayer
- local character = player.Character or player.CharacterAdded:Wait()
- local humanoid = character:WaitForChild("Humanoid")
- local currentStamina = playerSettings.MaxStamina
- local isSprinting = false
- local lastStaminaUse = tick()
- ------------------------------------------------------------
- -- GUI Setup
- ------------------------------------------------------------
- local screenGui = Instance.new("ScreenGui")
- screenGui.Name = "StaminaGUI"
- screenGui.Parent = player:WaitForChild("PlayerGui")
- local frame = Instance.new("Frame", screenGui)
- frame.Size = UDim2.new(0, 250, 0, 30)
- frame.Position = UDim2.new(0.5, -125, 0.9, 0)
- frame.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
- frame.BorderSizePixel = 0
- local bar = Instance.new("Frame", frame)
- bar.Size = UDim2.new(1, 0, 1, 0)
- bar.BackgroundColor3 = Color3.fromRGB(0, 255, 0)
- bar.BorderSizePixel = 0
- local staminaText = Instance.new("TextLabel", frame)
- staminaText.Size = UDim2.new(1, 0, 1, 0)
- staminaText.BackgroundTransparency = 1
- staminaText.TextScaled = true
- staminaText.TextColor3 = Color3.new(1, 1, 1)
- staminaText.Font = Enum.Font.SourceSansBold
- staminaText.Text = currentStamina .. "/" .. playerSettings.MaxStamina
- local function updateGUI()
- bar.Size = UDim2.new(currentStamina / playerSettings.MaxStamina, 0, 1, 0)
- staminaText.Text = math.floor(currentStamina) .. "/" .. playerSettings.MaxStamina
- -- Change bar color based on stamina level
- if currentStamina < playerSettings.MaxStamina * 0.3 then
- bar.BackgroundColor3 = Color3.fromRGB(255, 0, 0)
- elseif currentStamina < playerSettings.MaxStamina * 0.6 then
- bar.BackgroundColor3 = Color3.fromRGB(255, 255, 0)
- else
- bar.BackgroundColor3 = Color3.fromRGB(0, 255, 0)
- end
- end
- ------------------------------------------------------------
- -- Sprinting & Stamina Mechanics
- ------------------------------------------------------------
- UserInputService.InputBegan:Connect(function(input, gameProcessed)
- if gameProcessed then return end
- if input.KeyCode == playerSettings.SprintKey then
- if currentStamina > 0 then
- isSprinting = true
- humanoid.WalkSpeed = playerSettings.SprintSpeed
- end
- end
- end)
- UserInputService.InputEnded:Connect(function(input, gameProcessed)
- if gameProcessed then return end
- if input.KeyCode == playerSettings.SprintKey then
- isSprinting = false
- humanoid.WalkSpeed = playerSettings.WalkSpeed
- end
- end)
- -- Deduct stamina when jumping; prevent jump if insufficient stamina
- humanoid.Jumping:Connect(function(isActive)
- if isActive then
- if currentStamina >= playerSettings.JumpCost then
- currentStamina = currentStamina - playerSettings.JumpCost
- lastStaminaUse = tick()
- else
- humanoid.Jump = false
- end
- end
- end)
- RunService.Heartbeat:Connect(function(deltaTime)
- if isSprinting then
- if currentStamina > 0 then
- currentStamina = math.max(0, currentStamina - playerSettings.DrainRate * deltaTime)
- lastStaminaUse = tick()
- if currentStamina == 0 then
- isSprinting = false
- humanoid.WalkSpeed = playerSettings.WalkSpeed
- end
- else
- isSprinting = false
- humanoid.WalkSpeed = playerSettings.WalkSpeed
- end
- elseif currentStamina < playerSettings.MaxStamina and tick() - lastStaminaUse > playerSettings.RegenDelay then
- currentStamina = math.min(playerSettings.MaxStamina, currentStamina + playerSettings.RegenRate * deltaTime)
- end
- updateGUI()
- end)
- player.CharacterAdded:Connect(function(newCharacter)
- character = newCharacter
- humanoid = character:WaitForChild("Humanoid")
- currentStamina = playerSettings.MaxStamina
- isSprinting = false
- humanoid.WalkSpeed = playerSettings.WalkSpeed
- end)
- print("Stamina system loaded.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement