Maybe parkour script
Key RequiredUniversal

Maybe parkour script

Universal Scriptjoaogabrielbds23joaogabrielbds23 714 views 552 executesUpdated Jan 23, 2026
Unrated
00
Lua Script•211 lines (8125 chars)
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local Debris = game:GetService("Debris")

local player = Players.LocalPlayer
local camera = workspace.CurrentCamera

local wingsuitStats = {
    Enabled = false,
    OnCooldown = false,
    Stamina = 100,
    MaxStamina = 100,
    MinSpeed = 40,
    MaxSpeed = 250,
    CurrentSpeed = 60,
    CooldownTime = 5,
    TPWalkSpeed = 1 
}

local grappleForce = 25
local maxDistance = 215
local targetPos = nil
local cooldownGrapple = false
local cooldownDash = false

if not UserInputService.TouchEnabled then return end

local screenGui = Instance.new("ScreenGui")
screenGui.Name = "GrappleGui"
screenGui.ResetOnSpawn = false
screenGui.Parent = player:WaitForChild("PlayerGui")

local staminaBarFrame = Instance.new("Frame")
staminaBarFrame.Size = UDim2.new(0, 15, 0, 200)
staminaBarFrame.Position = UDim2.new(1, -50, 0.5, -100)
staminaBarFrame.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
staminaBarFrame.BackgroundTransparency = 0.5
staminaBarFrame.Visible = false
staminaBarFrame.Parent = screenGui

local staminaFill = Instance.new("Frame")
staminaFill.Size = UDim2.new(1, 0, 1, 0)
staminaFill.BackgroundColor3 = Color3.fromRGB(0, 255, 255)
staminaFill.BorderSizePixel = 0
staminaFill.Parent = staminaBarFrame

local cooldownLabel = Instance.new("TextLabel")
cooldownLabel.Size = UDim2.new(0, 80, 0, 40)
cooldownLabel.BackgroundTransparency = 1
cooldownLabel.TextColor3 = Color3.fromRGB(255, 50, 50)
cooldownLabel.Font = Enum.Font.SourceSansBold
cooldownLabel.TextSize = 25
cooldownLabel.Text = ""
cooldownLabel.Visible = false
cooldownLabel.Parent = screenGui

local function makeDraggable(btn)
    local dragging, dragStart, startPos
    btn.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then
            dragging = true
            dragStart = input.Position
            startPos = btn.Position
        end
    end)
    btn.InputChanged:Connect(function(input)
        if dragging and (input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseMovement) then
            local delta = input.Position - dragStart
            btn.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
        end
    end)
    UserInputService.InputEnded:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then 
            dragging = false 
        end
    end)
end

local function createButton(name, pos, color, text)
    local btn = Instance.new("TextButton")
    btn.Name = name
    btn.Size = UDim2.new(0, 80, 0, 40)
    btn.Position = pos
    btn.BackgroundColor3 = color
    btn.Text = text
    btn.TextColor3 = Color3.new(1,1,1)
    btn.Font = Enum.Font.SourceSansBold
    btn.TextSize = 18
    Instance.new("UICorner", btn).CornerRadius = UDim.new(0,10)
    btn.Parent = screenGui
    makeDraggable(btn)
    return btn
end

local fireBtn = createButton("Fire", UDim2.new(1, -100, 1, -150), Color3.fromRGB(50,50,50), "Fire")
local dashBtn = createButton("Dash", UDim2.new(1, -190, 1, -150), Color3.fromRGB(50,50,50), "Dash")
local wingsuitBtn = createButton("Wingsuit", UDim2.new(1, -280, 1, -150), Color3.fromRGB(50, 150, 50), "Wingsuit OFF")

local crossV = Instance.new("Frame")
crossV.Size = UDim2.new(0, 2, 0, 20); crossV.Position = UDim2.new(0.5, -1, 0.5, -10)
crossV.BackgroundColor3 = Color3.new(1,1,1); crossV.Parent = screenGui
local crossH = Instance.new("Frame")
crossH.Size = UDim2.new(0, 20, 0, 2); crossH.Position = UDim2.new(0.5, -10, 0.5, -1)
crossH.BackgroundColor3 = Color3.new(1,1,1); crossH.Parent = screenGui

fireBtn.Activated:Connect(function()
    if cooldownGrapple or not targetPos then return end
    local char = player.Character
    local hrp = char and char:FindFirstChild("HumanoidRootPart")
    if not hrp then return end

    local direction = (targetPos - hrp.Position).Unit
    local bv = Instance.new("BodyVelocity")
    bv.MaxForce = Vector3.new(50000,50000,50000)
    bv.Velocity = direction * (grappleForce * 6) + Vector3.new(0, 30, 0)
    bv.Parent = hrp
    Debris:AddItem(bv, 0.15)

    cooldownGrapple = true
    task.delay(1, function() cooldownGrapple = false end)
end)

dashBtn.Activated:Connect(function()
    if cooldownDash then return end
    local char = player.Character
    local hrp = char and char:FindFirstChild("HumanoidRootPart")
    if not hrp then return end

    local bv = Instance.new("BodyVelocity")
    bv.MaxForce = Vector3.new(40000,40000,40000)
    bv.Velocity = camera.CFrame.LookVector * 60 + Vector3.new(0, 20, 0)
    bv.Parent = hrp
    Debris:AddItem(bv, 0.1)

    cooldownDash = true
    task.delay(2, function() cooldownDash = false end)
end)

wingsuitBtn.Activated:Connect(function()
    if wingsuitStats.OnCooldown then return end
    wingsuitStats.Enabled = not wingsuitStats.Enabled
    wingsuitBtn.Text = "Wingsuit " .. (wingsuitStats.Enabled and "ON" or "OFF")
    wingsuitBtn.BackgroundColor3 = wingsuitStats.Enabled and Color3.fromRGB(50, 200, 50) or Color3.fromRGB(50, 150, 50)
    staminaBarFrame.Visible = wingsuitStats.Enabled
end)

RunService.Heartbeat:Connect(function()
    local char = player.Character
    local hrp = char and char:FindFirstChild("HumanoidRootPart")
    local hum = char and char:FindFirstChild("Humanoid")
    if not hrp or not hum then return end

    local rayParams = RaycastParams.new()
    rayParams.FilterDescendantsInstances = {char}
    local ray = workspace:Raycast(camera.CFrame.Position, camera.CFrame.LookVector * maxDistance, rayParams)
    if ray then
        targetPos = ray.Position
        crossV.BackgroundColor3 = Color3.new(1,0,0)
        crossH.BackgroundColor3 = Color3.new(1,0,0)
    else
        targetPos = nil
        crossV.BackgroundColor3 = Color3.new(1,1,1)
        crossH.BackgroundColor3 = Color3.new(1,1,1)
    end

    if hum.MoveDirection.Magnitude > 0 then
        hrp.CFrame = hrp.CFrame + (hum.MoveDirection * wingsuitStats.TPWalkSpeed)
    end

    if wingsuitStats.Enabled then
        local camLook = camera.CFrame.LookVector
        
        if camLook.Y < -0.1 then 
            wingsuitStats.CurrentSpeed = math.min(wingsuitStats.CurrentSpeed + 2, wingsuitStats.MaxSpeed)
            wingsuitStats.Stamina = math.min(wingsuitStats.Stamina + 0.4, wingsuitStats.MaxStamina)
        elseif camLook.Y > 0.1 then 
            wingsuitStats.CurrentSpeed = math.max(wingsuitStats.CurrentSpeed - 1.8, wingsuitStats.MinSpeed)
            wingsuitStats.Stamina = math.max(wingsuitStats.Stamina - 1.5, 0)
        end

        hrp.AssemblyLinearVelocity = camLook * wingsuitStats.CurrentSpeed
        staminaFill.Size = UDim2.new(1, 0, wingsuitStats.Stamina / wingsuitStats.MaxStamina, 0)
        staminaFill.Position = UDim2.new(0, 0, 1 - (wingsuitStats.Stamina / wingsuitStats.MaxStamina), 0)

        if wingsuitStats.Stamina <= 0 then
            wingsuitStats.Enabled = false
            wingsuitStats.OnCooldown = true
            staminaBarFrame.Visible = false
            wingsuitBtn.Text = "COOLDOWN"
            wingsuitBtn.BackgroundColor3 = Color3.fromRGB(150, 50, 50)
            cooldownLabel.Visible = true
            cooldownLabel.Position = UDim2.new(wingsuitBtn.Position.X.Scale, wingsuitBtn.Position.X.Offset, wingsuitBtn.Position.Y.Scale, wingsuitBtn.Position.Y.Offset - 45)
            
            task.spawn(function()
                for i = 5, 1, -1 do
                    cooldownLabel.Text = i .. "s"
                    task.wait(1)
                end
                wingsuitStats.OnCooldown = false
                wingsuitStats.Stamina = 100
                cooldownLabel.Visible = false
                wingsuitBtn.Text = "Wingsuit OFF"
                wingsuitBtn.BackgroundColor3 = Color3.fromRGB(50, 150, 50)
            end)
        end
    end
    
    hum.WalkSpeed = 16
    workspace.Gravity = 40
end)

Features & Information

Wingsuit, dash, fire "grapple" Trash script by ai

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts