Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local playerSettings = {
- SprintSpeed = 21,
- DefaultSpeed = 10,
- StaminaMax = 100,
- StaminaDrainRate = 10,
- StaminaRegenRate = 10,
- StaminaRegenDelay = 0.5,
- StaminaPerJump = 20,
- SprintToggle = true,
- SprintKey = Enum.KeyCode.LeftShift,
- EnableSounds = true,
- EnableStaminaGui = true,
- PreventJumpWhenNoStamina = true
- }
- local Players = game:GetService("Players")
- local RunService = game:GetService("RunService")
- local UserInputService = game:GetService("UserInputService")
- local localPlayer = Players.LocalPlayer
- local character = localPlayer.Character or localPlayer.CharacterAdded:Wait()
- local humanoid = character:WaitForChild("Humanoid")
- local isSprinting = false
- local currentStamina = playerSettings.StaminaMax
- local lastStaminaUseTime = 0
- local sprintSound
- local jumpConnection
- if playerSettings.EnableSounds then
- sprintSound = Instance.new("Sound")
- sprintSound.Name = "SprintSound"
- sprintSound.SoundId = "rbxassetid://"
- sprintSound.Volume = 0.5
- sprintSound.Looped = true
- sprintSound.Parent = character:WaitForChild("HumanoidRootPart")
- end
- local staminaGui
- local staminaBar
- if playerSettings.EnableStaminaGui then
- staminaGui = Instance.new("ScreenGui")
- staminaGui.Name = "StaminaGui"
- staminaGui.ResetOnSpawn = false
- staminaGui.Parent = localPlayer.PlayerGui
- local frame = Instance.new("Frame")
- frame.Name = "StaminaFrame"
- frame.Size = UDim2.new(0, 200, 0, 20)
- frame.Position = UDim2.new(0.5, -100, 0.9, 0)
- frame.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
- frame.BorderSizePixel = 0
- frame.Parent = staminaGui
- staminaBar = Instance.new("Frame")
- staminaBar.Name = "StaminaBar"
- staminaBar.Size = UDim2.new(1, 0, 1, 0)
- staminaBar.BackgroundColor3 = Color3.fromRGB(58, 165, 255)
- staminaBar.BorderSizePixel = 0
- staminaBar.Parent = frame
- local staminaText = Instance.new("TextLabel")
- staminaText.Name = "StaminaText"
- staminaText.Size = UDim2.new(1, 0, 1, 0)
- staminaText.BackgroundTransparency = 1
- staminaText.TextColor3 = Color3.fromRGB(255, 255, 255)
- staminaText.Font = Enum.Font.GothamBold
- staminaText.Text = "100/100"
- staminaText.TextSize = 14
- staminaText.Parent = frame
- local function updateStaminaText()
- staminaText.Text = math.floor(currentStamina) .. "/" .. playerSettings.StaminaMax
- end
- RunService.RenderStepped:Connect(updateStaminaText)
- end
- local function toggleSprint()
- if isSprinting and currentStamina > 0 then
- humanoid.WalkSpeed = playerSettings.SprintSpeed
- if playerSettings.EnableSounds and not sprintSound.IsPlaying then
- sprintSound:Play()
- end
- else
- humanoid.WalkSpeed = playerSettings.DefaultSpeed
- if playerSettings.EnableSounds and sprintSound.IsPlaying then
- sprintSound:Stop()
- end
- end
- end
- local function setupJumpHandler()
- if jumpConnection then
- jumpConnection:Disconnect()
- end
- jumpConnection = humanoid.Jumping:Connect(function(isJumping)
- if isJumping then
- if currentStamina >= playerSettings.StaminaPerJump then
- currentStamina = currentStamina - playerSettings.StaminaPerJump
- lastStaminaUseTime = tick()
- -- Play jump sound effect if desired
- -- Add your jump sound code here
- elseif playerSettings.PreventJumpWhenNoStamina then
- -- Cancel the jump if not enough stamina
- humanoid:ChangeState(Enum.HumanoidStateType.Landing)
- local jumpFailedEffect = Instance.new("Sound")
- jumpFailedEffect.SoundId = "rbxassetid://4612375502"
- jumpFailedEffect.Volume = 0.5
- jumpFailedEffect.Parent = character.HumanoidRootPart
- jumpFailedEffect:Play()
- game.Debris:AddItem(jumpFailedEffect, 1)
- end
- end
- end)
- end
- setupJumpHandler()
- UserInputService.InputBegan:Connect(function(input, gameProcessed)
- if gameProcessed then return end
- if input.KeyCode == playerSettings.SprintKey then
- if playerSettings.SprintToggle then
- if currentStamina > 0 then
- isSprinting = not isSprinting
- toggleSprint()
- end
- else
- if currentStamina > 0 then
- isSprinting = true
- toggleSprint()
- end
- end
- end
- end)
- if not playerSettings.SprintToggle then
- UserInputService.InputEnded:Connect(function(input, gameProcessed)
- if gameProcessed then return end
- if input.KeyCode == playerSettings.SprintKey then
- isSprinting = false
- toggleSprint()
- end
- end)
- end
- RunService.Heartbeat:Connect(function(deltaTime)
- if isSprinting and currentStamina > 0 then
- currentStamina = math.max(0, currentStamina - (playerSettings.StaminaDrainRate * deltaTime))
- lastStaminaUseTime = tick()
- if currentStamina == 0 then
- isSprinting = false
- toggleSprint()
- end
- elseif not isSprinting and currentStamina < playerSettings.StaminaMax and (tick() - lastStaminaUseTime) > playerSettings.StaminaRegenDelay then
- currentStamina = math.min(playerSettings.StaminaMax, currentStamina + (playerSettings.StaminaRegenRate * deltaTime))
- end
- if playerSettings.EnableStaminaGui and staminaBar then
- staminaBar.Size = UDim2.new(currentStamina / playerSettings.StaminaMax, 0, 1, 0)
- if currentStamina < 25 then
- staminaBar.BackgroundColor3 = Color3.fromRGB(255, 50, 50)
- elseif currentStamina < 50 then
- staminaBar.BackgroundColor3 = Color3.fromRGB(255, 165, 0)
- else
- staminaBar.BackgroundColor3 = Color3.fromRGB(22, 109, 0)
- end
- end
- end)
- localPlayer.CharacterAdded:Connect(function(newCharacter)
- character = newCharacter
- humanoid = character:WaitForChild("Humanoid")
- humanoid.WalkSpeed = playerSettings.DefaultSpeed
- if playerSettings.EnableSounds then
- sprintSound = Instance.new("Sound")
- sprintSound.Name = "SprintSound"
- sprintSound.SoundId = "rbxassetid://5426815016" --
- sprintSound.Volume = 0.5
- sprintSound.Looped = true
- sprintSound.Parent = character:WaitForChild("HumanoidRootPart")
- end
- isSprinting = false
- currentStamina = playerSettings.StaminaMax
- setupJumpHandler()
- end)
- print("Sprinting and Jumping Stamina Script Loaded")
- print("Press " .. playerSettings.SprintKey.Name .. " to sprint")
- print("Each jump costs " .. playerSettings.StaminaPerJump .. " stamina")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement