```lua local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local TweenService = game:GetService("TweenService") local player = Players.LocalPlayer local Settings = { NoclipKey = Enum.KeyCode.Q, MenuKey = Enum.KeyCode.P, NoclipSpeed = 50, } local noclipEnabled = false local menuOpen = false local character local humanoid local rootPart local function updateCharacter() character = player.Character or player.CharacterAdded:Wait() humanoid = character:WaitForChild("Humanoid") rootPart = character:WaitForChild("HumanoidRootPart") end updateCharacter() player.CharacterAdded:Connect(function() task.wait(0.2) updateCharacter() if noclipEnabled then for _, part in ipairs(character:GetDescendants()) do if part:IsA("BasePart") then part.CanCollide = false end end end end) local noclipConnection local function setNoclip(state) noclipEnabled = state if noclipConnection then noclipConnection:Disconnect() noclipConnection = nil end if state then noclipConnection = RunService.Stepped:Connect(function() if character then for _, part in ipairs(character:GetDescendants()) do if part:IsA("BasePart") then part.CanCollide = false end end end end) else if character then for _, part in ipairs(character:GetDescendants()) do if part:IsA("BasePart") and part.Name ~= "HumanoidRootPart" then part.CanCollide = true end end end end end local gui = Instance.new("ScreenGui") gui.Name = "ModernNoclipUI" gui.ResetOnSpawn = false gui.IgnoreGuiInset = true gui.Parent = player:WaitForChild("PlayerGui") local function addCorner(object, radius) local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, radius) corner.Parent = object return corner end local function addStroke(object, color, transparency, thickness) local stroke = Instance.new("UIStroke") stroke.Color = color or Color3.fromRGB(255,255,255) stroke.Transparency = transparency or 0 stroke.Thickness = thickness or 1 stroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border stroke.Parent = object return stroke end local function tween(object, time, properties) local info = TweenInfo.new( time, Enum.EasingStyle.Quint, Enum.EasingDirection.Out ) return TweenService:Create(object, info, properties) end local notification = Instance.new("Frame") notification.Name = "Notification" notification.Size = UDim2.fromOffset(270, 62) notification.Position = UDim2.new(0.5, -135, 0, -80) notification.BackgroundColor3 = Color3.fromRGB(22, 22, 25) notification.BackgroundTransparency = 0.03 notification.Visible = true notification.Parent = gui addCorner(notification, 12) addStroke(notification, Color3.fromRGB(70,70,75), 0.25, 1) local notifAccent = Instance.new("Frame") notifAccent.Size = UDim2.fromOffset(4, 38) notifAccent.Position = UDim2.fromOffset(10, 12) notifAccent.BackgroundColor3 = Color3.fromRGB(235,235,235) notifAccent.Parent = notification addCorner(notifAccent, 3) local notifTitle = Instance.new("TextLabel") notifTitle.BackgroundTransparency = 1 notifTitle.Position = UDim2.fromOffset(25, 8) notifTitle.Size = UDim2.new(1, -35, 0, 22) notifTitle.Font = Enum.Font.GothamBold notifTitle.TextSize = 15 notifTitle.TextColor3 = Color3.fromRGB(245,245,245) notifTitle.TextXAlignment = Enum.TextXAlignment.Left notifTitle.Text = "Noclip" notifTitle.Parent = notification local notifStatus = Instance.new("TextLabel") notifStatus.BackgroundTransparency = 1 notifStatus.Position = UDim2.fromOffset(25, 29) notifStatus.Size = UDim2.new(1, -35, 0, 20) notifStatus.Font = Enum.Font.Gotham notifStatus.TextSize = 12 notifStatus.TextColor3 = Color3.fromRGB(155,155,160) notifStatus.TextXAlignment = Enum.TextXAlignment.Left notifStatus.Text = "Disabled" notifStatus.Parent = notification local notificationId = 0 local function showNotification(enabled) notificationId += 1 local id = notificationId notifTitle.Text = "Noclip" notifStatus.Text = enabled and "Enabled • Q to toggle" or "Disabled • Q to toggle" notification.Position = UDim2.new(0.5, -135, 0, -80) tween(notification, 0.45, { Position = UDim2.new(0.5, -135, 0, 25) }):Play() task.delay(2.2, function() if id ~= notificationId then return end tween(notification, 0.4, { Position = UDim2.new(0.5, -135, 0, -80) }):Play() end) end local menu = Instance.new("Frame") menu.Name = "SettingsMenu" menu.Size = UDim2.fromOffset(430, 330) menu.Position = UDim2.new(0.5, -215, 0.5, -165) menu.BackgroundColor3 = Color3.fromRGB(18,18,20) menu.BackgroundTransparency = 0.02 menu.Visible = false menu.Parent = gui addCorner(menu, 16) addStroke(menu, Color3.fromRGB(75,75,80), 0.2, 1) local topLine = Instance.new("Frame") topLine.Size = UDim2.new(1, -40, 0, 1) topLine.Position = UDim2.fromOffset(20, 58) topLine.BackgroundColor3 = Color3.fromRGB(55,55,60) topLine.BorderSizePixel = 0 topLine.Parent = menu local title = Instance.new("TextLabel") title.BackgroundTransparency = 1 title.Position = UDim2.fromOffset(24, 17) title.Size = UDim2.new(1, -80, 0, 25) title.Font = Enum.Font.GothamBold title.TextSize = 19 title.TextColor3 = Color3.fromRGB(245,245,245) title.TextXAlignment = Enum.TextXAlignment.Left title.Text = "Noclip Settings" title.Parent = menu local subtitle = Instance.new("TextLabel") subtitle.BackgroundTransparency = 1 subtitle.Position = UDim2.fromOffset(25, 39) subtitle.Size = UDim2.new(1, -80, 0, 18) subtitle.Font = Enum.Font.Gotham subtitle.TextSize = 10 subtitle.TextColor3 = Color3.fromRGB(120,120,125) subtitle.TextXAlignment = Enum.TextXAlignment.Left subtitle.Text = "Customize your controls" subtitle.Parent = menu local closeButton = Instance.new("TextButton") closeButton.Size = UDim2.fromOffset(30,30) closeButton.Position = UDim2.new(1, -43, 0, 17) closeButton.BackgroundColor3 = Color3.fromRGB(30,30,33) closeButton.Text = "×" closeButton.TextColor3 = Color3.fromRGB(180,180,185) closeButton.TextSize = 20 closeButton.Font = Enum.Font.Gotham closeButton.AutoButtonColor = false closeButton.Parent = menu addCorner(closeButton, 8) addStroke(closeButton, Color3.fromRGB(65,65,70), 0.3, 1) closeButton.MouseEnter:Connect(function() tween(closeButton, 0.15, { BackgroundColor3 = Color3.fromRGB(45,45,48) }):Play() end) closeButton.MouseLeave:Connect(function() tween(closeButton, 0.15, { BackgroundColor3 = Color3.fromRGB(30,30,33) }):Play() end) local waitingForKey = nil local function createKeybindRow(y, labelText, description, currentKey, callback) local row = Instance.new("Frame") row.Size = UDim2.new(1, -40, 0, 65) row.Position = UDim2.fromOffset(20, y) row.BackgroundColor3 = Color3.fromRGB(24,24,27) row.Parent = menu addCorner(row, 10) addStroke(row, Color3.fromRGB(55,55,60), 0.4, 1) local label = Instance.new("TextLabel") label.BackgroundTransparency = 1 label.Position = UDim2.fromOffset(15, 10) label.Size = UDim2.new(1, -125, 0, 20) label.Font = Enum.Font.GothamMedium label.TextSize = 13 label.TextColor3 = Color3.fromRGB(230,230,233) label.TextXAlignment = Enum.TextXAlignment.Left label.Text = labelText label.Parent = row local desc = Instance.new("TextLabel") desc.BackgroundTransparency = 1 desc.Position = UDim2.fromOffset(15, 31) desc.Size = UDim2.new(1, -125, 0, 17) desc.Font = Enum.Font.Gotham desc.TextSize = 10 desc.TextColor3 = Color3.fromRGB(110,110,115) desc.TextXAlignment = Enum.TextXAlignment.Left desc.Text = description desc.Parent = row local button = Instance.new("TextButton") button.Size = UDim2.fromOffset(90, 36) button.Position = UDim2.new(1, -105, 0.5, -18) button.BackgroundColor3 = Color3.fromRGB(32,32,35) button.Text = currentKey.Name button.TextColor3 = Color3.fromRGB(235,235,238) button.TextSize = 12 button.Font = Enum.Font.GothamBold button.AutoButtonColor = false button.Parent = row addCorner(button, 8) addStroke(button, Color3.fromRGB(75,75,80), 0.2, 1) button.MouseEnter:Connect(function() tween(button, 0.15, { BackgroundColor3 = Color3.fromRGB(45,45,48) }):Play() end) button.MouseLeave:Connect(function() if waitingForKey ~= button then tween(button, 0.15, { BackgroundColor3 = Color3.fromRGB(32,32,35) }):Play() end end) button.MouseButton1Click:Connect(function() if waitingForKey then return end waitingForKey = button button.Text = "Press key..." button.BackgroundColor3 = Color3.fromRGB(55,55,60) local connection connection = UserInputService.InputBegan:Connect(function(input, processed) if processed then return end if input.UserInputType == Enum.UserInputType.Keyboard then local newKey = input.KeyCode if newKey ~= Enum.KeyCode.Unknown then button.Text = newKey.Name button.BackgroundColor3 = Color3.fromRGB(32,32,35) waitingForKey = nil connection:Disconnect() callback(newKey) end end end) end) return button end noclipButton = createKeybindRow( 78, "Noclip Toggle", "Key used to enable or disable noclip", Settings.NoclipKey, function(newKey) Settings.NoclipKey = newKey end ) menuButton = createKeybindRow( 151, "Menu Toggle", "Key used to open or close this menu", Settings.MenuKey, function(newKey) Settings.MenuKey = newKey end ) local speedRow = Instance.new("Frame") speedRow.Size = UDim2.new(1, -40, 0, 65) speedRow.Position = UDim2.fromOffset(20, 224) speedRow.BackgroundColor3 = Color3.fromRGB(24,24,27) speedRow.Parent = menu addCorner(speedRow, 10) addStroke(speedRow, Color3.fromRGB(55,55,60), 0.4, 1) local speedLabel = Instance.new("TextLabel") speedLabel.BackgroundTransparency = 1 speedLabel.Position = UDim2.fromOffset(15, 10) speedLabel.Size = UDim2.new(1, -130, 0, 20) speedLabel.Font = Enum.Font.GothamMedium speedLabel.TextSize = 13 speedLabel.TextColor3 = Color3.fromRGB(230,230,233) speedLabel.TextXAlignment = Enum.TextXAlignment.Left speedLabel.Text = "Noclip Speed" speedLabel.Parent = speedRow local speedDesc = Instance.new("TextLabel") speedDesc.BackgroundTransparency = 1 speedDesc.Position = UDim2.fromOffset(15, 31) speedDesc.Size = UDim2.new(1, -130, 0, 17) speedDesc.Font = Enum.Font.Gotham speedDesc.TextSize = 10 speedDesc.TextColor3 = Color3.fromRGB(110,110,115) speedDesc.TextXAlignment = Enum.TextXAlignment.Left speedDesc.Text = "Movement speed while noclipping" speedDesc.Parent = speedRow local speedBox = Instance.new("TextBox") speedBox.Size = UDim2.fromOffset(90, 36) speedBox.Position = UDim2.new(1, -105, 0.5, -18) speedBox.BackgroundColor3 = Color3.fromRGB(32,32,35) speedBox.Text = tostring(Settings.NoclipSpeed) speedBox.TextColor3 = Color3.fromRGB(235,235,238) speedBox.TextSize = 12 speedBox.Font = Enum.Font.GothamBold speedBox.ClearTextOnFocus = false speedBox.Parent = speedRow addCorner(speedBox, 8) addStroke(speedBox, Color3.fromRGB(75,75,80), 0.2, 1) speedBox.FocusLost:Connect(function() local value = tonumber(speedBox.Text) if value then Settings.NoclipSpeed = math.clamp(value, 1, 200) end speedBox.Text = tostring(Settings.NoclipSpeed) end) local menuScale = Instance.new("UIScale") menuScale.Scale = 0.85 menuScale.Parent = menu local function toggleMenu() menuOpen = not menuOpen if menuOpen then menu.Visible = true menuScale.Scale = 0.85 tween(menuScale, 0.25, { Scale = 1 }):Play() else local closeTween = tween(menuScale, 0.18, { Scale = 0.85 }) closeTween:Play() closeTween.Completed:Connect(function() if not menuOpen then menu.Visible = false end end) end end closeButton.MouseButton1Click:Connect(toggleMenu) UserInputService.InputBegan:Connect(function(input, processed) if processed then return end if input.UserInputType ~= Enum.UserInputType.Keyboard then return end if input.KeyCode == Settings.NoclipKey then setNoclip(not noclipEnabled) showNotification(noclipEnabled) end if input.KeyCode == Settings.MenuKey then toggleMenu() end end) setNoclip(false) ```