
KeylessUniversal

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)No comments yet for this script.



