--[[ 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)