
KeylessUniversal

--[[
NOCLIP + SPEED CONTROL
- Toggle switch: NOCLIP (walk through walls) vs CLIP (normal collision)
- Textbox + button to set and enforce a custom WalkSpeed
Mobile + desktop compatible.
Place this as a LocalScript in StarterPlayerScripts.
]]
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
----------------------------------------------------------------
-- CONFIG
----------------------------------------------------------------
local THEME = {
Background = Color3.fromRGB(18, 18, 24),
Panel = Color3.fromRGB(26, 26, 34),
Card = Color3.fromRGB(32, 32, 42),
Accent1 = Color3.fromRGB(0, 200, 255),
Accent2 = Color3.fromRGB(170, 0, 255),
Text = Color3.fromRGB(240, 240, 245),
SubText = Color3.fromRGB(160, 160, 175),
Danger = Color3.fromRGB(255, 70, 90),
On = Color3.fromRGB(0, 220, 130),
}
local IS_MOBILE = UserInputService.TouchEnabled and not UserInputService.MouseEnabled
local noclipEnabled = false
local enforcedSpeed = nil
local noclipConnection = nil
----------------------------------------------------------------
-- CHARACTER HELPERS
----------------------------------------------------------------
local function getCharacter()
return player.Character or player.CharacterAdded:Wait()
end
local function getHumanoid()
local char = getCharacter()
return char:FindFirstChildOfClass("Humanoid") or char:WaitForChild("Humanoid", 5)
end
----------------------------------------------------------------
-- GUI SETUP
----------------------------------------------------------------
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "NoclipSpeedUI"
screenGui.ResetOnSpawn = false
screenGui.IgnoreGuiInset = true
screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
screenGui.Parent = player:WaitForChild("PlayerGui")
-- Toggle button (opens panel)
local toggleSize = IS_MOBILE and 60 or 50
local openBtn = Instance.new("TextButton")
openBtn.Name = "OpenButton"
openBtn.Size = UDim2.new(0, toggleSize, 0, toggleSize)
openBtn.Position = UDim2.new(0, 16, 0.6, -toggleSize / 2)
openBtn.BackgroundColor3 = THEME.Panel
openBtn.Text = "๐ป"
openBtn.TextScaled = true
openBtn.AutoButtonColor = false
openBtn.Parent = screenGui
Instance.new("UICorner", openBtn).CornerRadius = UDim.new(1, 0)
local openStroke = Instance.new("UIStroke", openBtn)
openStroke.Thickness = 2
openStroke.Color = THEME.Accent1
-- Main panel
local mainWidth = IS_MOBILE and 250 or 270
local mainHeight = 380
local main = Instance.new("Frame")
main.Name = "Main"
main.Size = UDim2.new(0, mainWidth, 0, mainHeight)
main.Position = UDim2.new(0, 16 + toggleSize + 10, 0.6, -mainHeight / 2)
main.BackgroundColor3 = THEME.Background
main.BorderSizePixel = 0
main.ClipsDescendants = true
main.Visible = false
main.Parent = screenGui
Instance.new("UICorner", main).CornerRadius = UDim.new(0, 14)
local mainStroke = Instance.new("UIStroke", main)
mainStroke.Thickness = 1.5
mainStroke.Color = THEME.Accent1
mainStroke.Transparency = 0.3
local gradient = Instance.new("UIGradient", mainStroke)
gradient.Color = ColorSequence.new(THEME.Accent1, THEME.Accent2)
-- Title bar (draggable)
local titleBar = Instance.new("Frame")
titleBar.Name = "TitleBar"
titleBar.Size = UDim2.new(1, 0, 0, 42)
titleBar.BackgroundColor3 = THEME.Panel
titleBar.BorderSizePixel = 0
titleBar.Parent = main
Instance.new("UICorner", titleBar).CornerRadius = UDim.new(0, 14)
local titleFix = Instance.new("Frame")
titleFix.Size = UDim2.new(1, 0, 0, 14)
titleFix.Position = UDim2.new(0, 0, 1, -14)
titleFix.BackgroundColor3 = THEME.Panel
titleFix.BorderSizePixel = 0
titleFix.ZIndex = 0
titleFix.Parent = titleBar
local titleLabel = Instance.new("TextLabel")
titleLabel.Size = UDim2.new(1, -40, 1, 0)
titleLabel.Position = UDim2.new(0, 14, 0, 0)
titleLabel.BackgroundTransparency = 1
titleLabel.Text = "NOCLIP ยท SPEED ยท TP"
titleLabel.TextColor3 = THEME.Text
titleLabel.Font = Enum.Font.GothamBold
titleLabel.TextSize = 12
titleLabel.TextXAlignment = Enum.TextXAlignment.Left
titleLabel.Parent = titleBar
local closeBtn = Instance.new("TextButton")
closeBtn.Size = UDim2.new(0, 32, 0, 32)
closeBtn.Position = UDim2.new(1, -38, 0.5, -16)
closeBtn.BackgroundColor3 = THEME.Panel
closeBtn.Text = "ร"
closeBtn.TextColor3 = THEME.SubText
closeBtn.Font = Enum.Font.GothamBold
closeBtn.TextSize = 20
closeBtn.AutoButtonColor = false
closeBtn.Parent = titleBar
Instance.new("UICorner", closeBtn).CornerRadius = UDim.new(1, 0)
----------------------------------------------------------------
-- NOCLIP SECTION
----------------------------------------------------------------
local noclipLabel = Instance.new("TextLabel")
noclipLabel.Size = UDim2.new(1, -24, 0, 16)
noclipLabel.Position = UDim2.new(0, 12, 0, 52)
noclipLabel.BackgroundTransparency = 1
noclipLabel.Font = Enum.Font.GothamBold
noclipLabel.TextSize = 11
noclipLabel.TextColor3 = THEME.SubText
noclipLabel.TextXAlignment = Enum.TextXAlignment.Left
noclipLabel.Text = "COLLISION"
noclipLabel.Parent = main
-- Switch track
local switchTrack = Instance.new("TextButton")
switchTrack.Size = UDim2.new(1, -24, 0, 50)
switchTrack.Position = UDim2.new(0, 12, 0, 72)
switchTrack.BackgroundColor3 = THEME.Card
switchTrack.Text = ""
switchTrack.AutoButtonColor = false
switchTrack.Parent = main
Instance.new("UICorner", switchTrack).CornerRadius = UDim.new(0, 12)
local switchStroke = Instance.new("UIStroke", switchTrack)
switchStroke.Thickness = 1.5
switchStroke.Color = THEME.Accent1
switchStroke.Transparency = 0.5
-- the sliding knob (half width, slides left = CLIP, right = NOCLIP)
local knob = Instance.new("Frame")
knob.Size = UDim2.new(0.5, -4, 1, -8)
knob.Position = UDim2.new(0, 4, 0, 4)
knob.BackgroundColor3 = THEME.Danger
knob.Parent = switchTrack
Instance.new("UICorner", knob).CornerRadius = UDim.new(0, 9)
local clipLabel = Instance.new("TextLabel")
clipLabel.Size = UDim2.new(0.5, 0, 1, 0)
clipLabel.Position = UDim2.new(0, 0, 0, 0)
clipLabel.BackgroundTransparency = 1
clipLabel.Text = "CLIP"
clipLabel.Font = Enum.Font.GothamBlack
clipLabel.TextSize = 13
clipLabel.TextColor3 = THEME.Text
clipLabel.ZIndex = 2
clipLabel.Parent = switchTrack
local noclipTextLabel = Instance.new("TextLabel")
noclipTextLabel.Size = UDim2.new(0.5, 0, 1, 0)
noclipTextLabel.Position = UDim2.new(0.5, 0, 0, 0)
noclipTextLabel.BackgroundTransparency = 1
noclipTextLabel.Text = "NOCLIP"
noclipTextLabel.Font = Enum.Font.GothamBlack
noclipTextLabel.TextSize = 13
noclipTextLabel.TextColor3 = THEME.SubText
noclipTextLabel.ZIndex = 2
noclipTextLabel.Parent = switchTrack
----------------------------------------------------------------
-- SPEED SECTION
----------------------------------------------------------------
local speedLabel = Instance.new("TextLabel")
speedLabel.Size = UDim2.new(1, -24, 0, 16)
speedLabel.Position = UDim2.new(0, 12, 0, 136)
speedLabel.BackgroundTransparency = 1
speedLabel.Font = Enum.Font.GothamBold
speedLabel.TextSize = 11
speedLabel.TextColor3 = THEME.SubText
speedLabel.TextXAlignment = Enum.TextXAlignment.Left
speedLabel.Text = "WALK SPEED"
speedLabel.Parent = main
local inputBox = Instance.new("TextBox")
inputBox.Size = UDim2.new(1, -24, 0, 42)
inputBox.Position = UDim2.new(0, 12, 0, 156)
inputBox.BackgroundColor3 = THEME.Card
inputBox.Text = ""
inputBox.PlaceholderText = "Enter speed (e.g. 50)"
inputBox.PlaceholderColor3 = THEME.SubText
inputBox.TextColor3 = THEME.Text
inputBox.Font = Enum.Font.GothamBold
inputBox.TextSize = 14
inputBox.ClearTextOnFocus = false
inputBox.Parent = main
Instance.new("UICorner", inputBox).CornerRadius = UDim.new(0, 10)
local inputStroke = Instance.new("UIStroke", inputBox)
inputStroke.Thickness = 1.2
inputStroke.Color = THEME.Accent1
inputStroke.Transparency = 0.5
local inputPadding = Instance.new("UIPadding", inputBox)
inputPadding.PaddingLeft = UDim.new(0, 12)
inputPadding.PaddingRight = UDim.new(0, 12)
local enableSpeedBtn = Instance.new("TextButton")
enableSpeedBtn.Size = UDim2.new(1, -24, 0, 42)
enableSpeedBtn.Position = UDim2.new(0, 12, 0, 206)
enableSpeedBtn.BackgroundColor3 = THEME.Accent1
enableSpeedBtn.Text = "ENABLE SPEED"
enableSpeedBtn.TextColor3 = Color3.new(1, 1, 1)
enableSpeedBtn.Font = Enum.Font.GothamBold
enableSpeedBtn.TextSize = 14
enableSpeedBtn.AutoButtonColor = false
enableSpeedBtn.Parent = main
Instance.new("UICorner", enableSpeedBtn).CornerRadius = UDim.new(0, 10)
local enableGradient = Instance.new("UIGradient", enableSpeedBtn)
enableGradient.Color = ColorSequence.new(THEME.Accent1, THEME.Accent2)
enableGradient.Rotation = 20
local statusLabel = Instance.new("TextLabel")
statusLabel.Size = UDim2.new(1, -24, 0, 16)
statusLabel.Position = UDim2.new(0, 12, 0, 258)
statusLabel.BackgroundTransparency = 1
statusLabel.Font = Enum.Font.Gotham
statusLabel.TextSize = 11
statusLabel.TextColor3 = THEME.SubText
statusLabel.TextXAlignment = Enum.TextXAlignment.Left
statusLabel.Text = "Speed: default | Noclip: off"
statusLabel.Parent = main
----------------------------------------------------------------
-- TELEPORT SECTION
----------------------------------------------------------------
local TARGET_POSITION = Vector3.new(565, 1136, 83432) -- Y is only used as a last-resort fallback
local tpLabel = Instance.new("TextLabel")
tpLabel.Size = UDim2.new(1, -24, 0, 16)
tpLabel.Position = UDim2.new(0, 12, 0, 282)
tpLabel.BackgroundTransparency = 1
tpLabel.Font = Enum.Font.GothamBold
tpLabel.TextSize = 11
tpLabel.TextColor3 = THEME.SubText
tpLabel.TextXAlignment = Enum.TextXAlignment.Left
tpLabel.Text = "TELEPORT"
tpLabel.Parent = main
local tpBtn = Instance.new("TextButton")
tpBtn.Size = UDim2.new(1, -24, 0, 44)
tpBtn.Position = UDim2.new(0, 12, 0, 302)
tpBtn.BackgroundColor3 = THEME.Card
tpBtn.Text = "๐ TELEPORT TO SAVED SPOT"
tpBtn.TextColor3 = THEME.Text
tpBtn.Font = Enum.Font.GothamBold
tpBtn.TextSize = 13
tpBtn.AutoButtonColor = false
tpBtn.Parent = main
Instance.new("UICorner", tpBtn).CornerRadius = UDim.new(0, 10)
local tpStroke = Instance.new("UIStroke", tpBtn)
tpStroke.Thickness = 1.5
tpStroke.Color = THEME.Accent1
tpStroke.Transparency = 0.3
local tpGrad = Instance.new("UIGradient", tpStroke)
tpGrad.Color = ColorSequence.new(THEME.Accent1, THEME.Accent2)
task.spawn(function()
while tpBtn.Parent do
tpGrad.Rotation = (tpGrad.Rotation + 2) % 360
task.wait(0.02)
end
end)
----------------------------------------------------------------
-- NOTIFICATION
----------------------------------------------------------------
local function notify(text, color)
local note = Instance.new("TextLabel")
note.Size = UDim2.new(0, 220, 0, 34)
note.Position = UDim2.new(0.5, -110, 0, -50)
note.BackgroundColor3 = THEME.Panel
note.TextColor3 = color or THEME.Accent1
note.Font = Enum.Font.GothamBold
note.TextSize = 13
note.Text = text
note.ZIndex = 10
note.Parent = screenGui
Instance.new("UICorner", note).CornerRadius = UDim.new(0, 8)
local stroke = Instance.new("UIStroke", note)
stroke.Color = color or THEME.Accent1
stroke.Thickness = 1.2
TweenService:Create(note, TweenInfo.new(0.35, Enum.EasingStyle.Back, Enum.EasingDirection.Out),
{Position = UDim2.new(0.5, -110, 0, 20)}):Play()
task.delay(1.4, function()
local t = TweenService:Create(note, TweenInfo.new(0.3), {Position = UDim2.new(0.5, -110, 0, -50), TextTransparency = 1})
t:Play()
t.Completed:Wait()
note:Destroy()
end)
end
local function updateStatus()
local speedText = enforcedSpeed and tostring(enforcedSpeed) or "default"
statusLabel.Text = string.format("Speed: %s | Noclip: %s", speedText, noclipEnabled and "on" or "off")
end
----------------------------------------------------------------
-- TELEPORT LOGIC (progressive stream-ahead + ground detection)
----------------------------------------------------------------
local function streamAndTweenTo(hrp, targetXZ)
local startPosition = hrp.Position
local targetGuess = Vector3.new(targetXZ.X, startPosition.Y, targetXZ.Z)
local totalDistance = (targetGuess - startPosition).Magnitude
local waypointCount = math.clamp(math.floor(totalDistance / 2500), 2, 6)
local params = RaycastParams.new()
params.FilterType = Enum.RaycastFilterType.Exclude
if hrp.Parent then
params.FilterDescendantsInstances = {hrp.Parent}
end
local function findGround(x, z, fallbackY)
local origin = Vector3.new(x, 10000, z)
local result = workspace:Raycast(origin, Vector3.new(0, -100000, 0), params)
if result then
return result.Position + Vector3.new(0, 3, 0)
end
return Vector3.new(x, fallbackY, z)
end
for i = 1, waypointCount do
local alpha = i / waypointCount
local waypointXZ = Vector3.new(
startPosition.X + (targetXZ.X - startPosition.X) * alpha,
0,
startPosition.Z + (targetXZ.Z - startPosition.Z) * alpha
)
if workspace.StreamingEnabled then
pcall(function()
player:RequestStreamAroundAsync(waypointXZ)
end)
end
task.wait(0.15)
local waypoint = findGround(waypointXZ.X, waypointXZ.Z, hrp.Position.Y)
local segmentTween = TweenService:Create(
hrp,
TweenInfo.new(0.4, Enum.EasingStyle.Linear),
{CFrame = CFrame.new(waypoint)}
)
segmentTween:Play()
segmentTween.Completed:Wait()
end
if workspace.StreamingEnabled then
pcall(function()
player:RequestStreamAroundAsync(targetXZ)
end)
task.wait(0.2)
end
local finalPos = findGround(targetXZ.X, targetXZ.Z, targetXZ.Y)
hrp.CFrame = CFrame.new(finalPos)
end
local function teleportToSavedSpot()
local char = player.Character
local hrp = char and char:FindFirstChild("HumanoidRootPart")
if not hrp then
notify("No character found", THEME.Danger)
return
end
hrp.Anchored = false -- safety: undo any leftover freeze from a previous attempt
hrp.AssemblyLinearVelocity = Vector3.zero
hrp.AssemblyAngularVelocity = Vector3.zero
local humanoid = char:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid:ChangeState(Enum.HumanoidStateType.Landed)
humanoid.PlatformStand = true
end
hrp.Anchored = true
notify("Traveling...", THEME.Accent2)
streamAndTweenTo(hrp, TARGET_POSITION)
if hrp and hrp.Parent then
hrp.Anchored = false
hrp.AssemblyLinearVelocity = Vector3.zero
if humanoid then
humanoid.PlatformStand = false
end
notify("Teleported!", THEME.Accent1)
end
end
tpBtn.MouseButton1Click:Connect(teleportToSavedSpot)
----------------------------------------------------------------
-- NOCLIP LOGIC
----------------------------------------------------------------
local function setNoclip(state)
noclipEnabled = state
if noclipConnection then
noclipConnection:Disconnect()
noclipConnection = nil
end
if noclipEnabled then
noclipConnection = RunService.Stepped:Connect(function()
local char = player.Character
if not char then return end
for _, part in ipairs(char:GetDescendants()) do
if part:IsA("BasePart") and part.CanCollide then
part.CanCollide = false
end
end
end)
notify("Noclip ON", THEME.Danger)
else
local char = player.Character
if char then
for _, part in ipairs(char:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = true
end
end
-- keep HumanoidRootPart non-colliding (Roblox default) to avoid getting stuck
local hrp = char:FindFirstChild("HumanoidRootPart")
if hrp then
hrp.CanCollide = false
end
end
notify("Clip ON (normal collision)", THEME.On)
end
-- animate the switch knob
local knobTarget = noclipEnabled and UDim2.new(0.5, 0, 0, 4) or UDim2.new(0, 4, 0, 4)
TweenService:Create(knob, TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out),
{Position = knobTarget, BackgroundColor3 = noclipEnabled and THEME.Danger or THEME.On}):Play()
clipLabel.TextColor3 = noclipEnabled and THEME.SubText or THEME.Text
noclipTextLabel.TextColor3 = noclipEnabled and THEME.Text or THEME.SubText
updateStatus()
end
switchTrack.MouseButton1Click:Connect(function()
setNoclip(not noclipEnabled)
end)
-- re-apply noclip collision state whenever the character respawns
player.CharacterAdded:Connect(function()
task.wait(0.5)
if noclipEnabled then
setNoclip(true)
end
end)
----------------------------------------------------------------
-- SPEED LOGIC
----------------------------------------------------------------
local function setSpeed()
local humanoid = getHumanoid()
if not humanoid then
notify("No character found", THEME.Danger)
return
end
local value = tonumber(inputBox.Text)
if not value then
notify("Enter a valid number", THEME.Danger)
return
end
value = math.clamp(value, 0, 500)
humanoid.WalkSpeed = value
enforcedSpeed = value
updateStatus()
notify("Speed set to " .. value .. "!", THEME.Accent2)
enableSpeedBtn.Size = UDim2.new(1, -20, 0, 40)
TweenService:Create(enableSpeedBtn, TweenInfo.new(0.15, Enum.EasingStyle.Back, Enum.EasingDirection.Out),
{Size = UDim2.new(1, -24, 0, 42)}):Play()
end
enableSpeedBtn.MouseButton1Click:Connect(setSpeed)
inputBox.FocusLost:Connect(function(enterPressed)
if enterPressed then setSpeed() end
end)
-- enforcement loop: keeps re-applying set speed every frame
RunService.Heartbeat:Connect(function()
if enforcedSpeed == nil then return end
local char = player.Character
local humanoid = char and char:FindFirstChildOfClass("Humanoid")
if humanoid and humanoid.WalkSpeed ~= enforcedSpeed then
humanoid.WalkSpeed = enforcedSpeed
end
end)
----------------------------------------------------------------
-- HOVER FEEDBACK
----------------------------------------------------------------
local function feedback(button, baseColor, hoverColor)
button.MouseEnter:Connect(function()
TweenService:Create(button, TweenInfo.new(0.15), {BackgroundColor3 = hoverColor}):Play()
end)
button.MouseLeave:Connect(function()
TweenService:Create(button, TweenInfo.new(0.15), {BackgroundColor3 = baseColor}):Play()
end)
end
feedback(closeBtn, THEME.Panel, Color3.fromRGB(45, 45, 55))
feedback(openBtn, THEME.Panel, Color3.fromRGB(40, 40, 50))
feedback(tpBtn, THEME.Card, Color3.fromRGB(40, 40, 55))
----------------------------------------------------------------
-- OPEN / CLOSE ANIMATION
----------------------------------------------------------------
local open = false
local function setOpen(state)
open = state
if open then
main.Visible = true
main.Size = UDim2.new(0, mainWidth, 0, 0)
main.BackgroundTransparency = 1
TweenService:Create(main, TweenInfo.new(0.35, Enum.EasingStyle.Back, Enum.EasingDirection.Out),
{Size = UDim2.new(0, mainWidth, 0, mainHeight), BackgroundTransparency = 0}):Play()
else
local t = TweenService:Create(main, TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.In),
{Size = UDim2.new(0, mainWidth, 0, 0), BackgroundTransparency = 1})
t:Play()
t.Completed:Wait()
if not open then main.Visible = false end
end
end
openBtn.MouseButton1Click:Connect(function() setOpen(not open) end)
closeBtn.MouseButton1Click:Connect(function() setOpen(false) end)
----------------------------------------------------------------
-- DRAGGING (title bar) โ mouse + touch
----------------------------------------------------------------
local dragging, dragStart, startPos
titleBar.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = main.Position
local conn
conn = input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
dragging = false
conn:Disconnect()
end
end)
end
end)
UserInputService.InputChanged:Connect(function(input)
if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
local delta = input.Position - dragStart
main.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 then
dragging = false
end
end)
----------------------------------------------------------------
-- BORDER GRADIENT ROTATION
----------------------------------------------------------------
task.spawn(function()
while main.Parent do
gradient.Rotation = (gradient.Rotation + 1) % 360
task.wait(0.03)
end
end)No comments yet for this script.



