local Players = game:GetService("Players") local player = Players.LocalPlayer local gui = Instance.new("ScreenGui", player.PlayerGui) gui.ResetOnSpawn = true local Button = Instance.new("TextButton", gui) Button.Position = UDim2.new(0.62, 0, 0.051, 0) Button.Size = UDim2.new(0, 80, 0, 50) local isNoclipping = false local function setNoclip(character, state) if not character then return end for _, part in ipairs(character:GetDescendants()) do if part:IsA("BasePart") then part.CanCollide = not state end end end local function onButtonClick() local character = player.Character if not character then warn("Player character not found.") return end isNoclipping = not isNoclipping setNoclip(character, isNoclipping) if isNoclipping then print("Noclip enabled") Button.Text = "Noclip: ON" Button.BackgroundColor3 = Color3.fromRGB(0, 255, 0) -- Green else print("Noclip disabled") Button.Text = "Noclip: OFF" Button.BackgroundColor3 = Color3.fromRGB(255, 0, 0) -- Red end end local function onCharacterAdded(character) -- Wait for humanoid to exist character:WaitForChild("Humanoid") -- Reset noclip state on respawn if isNoclipping then print("Character respawned, reapplying noclip.") -- Small delay to ensure parts are loaded task.wait(0.1) setNoclip(character, false) -- Re-enable if it was on else Button.Text = "Noclip: OFF" Button.BackgroundColor3 = Color3.fromRGB(255, 0, 0) -- Red end -- Also reset humanoid state if needed, though just CanCollide is simpler -- local humanoid = character:FindFirstChildOfClass("Humanoid") -- if humanoid then -- humanoid:SetStateEnabled(Enum.HumanoidStateType.Climbing, true) -- humanoid:SetStateEnabled(Enum.HumanoidStateType.FallingDown, true) -- humanoid:SetStateEnabled(Enum.HumanoidStateType.GettingUp, true) -- humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, true) -- humanoid:SetStateEnabled(Enum.HumanoidStateType.Landed, true) -- humanoid:SetStateEnabled(Enum.HumanoidStateType.Running, true) -- humanoid:SetStateEnabled(Enum.HumanoidStateType.Seated, true) -- humanoid:SetStateEnabled(Enum.HumanoidStateType.Swimming, true) -- humanoid:ChangeState(Enum.HumanoidStateType.Running) -- Or appropriate state -- end end -- Initial button state Button.Text = "Noclip: OFF" Button.BackgroundColor3 = Color3.fromRGB(255, 0, 0) -- Red Button.MouseButton1Click:Connect(onButtonClick) player.CharacterAdded:Connect(onCharacterAdded) -- Handle initial character if already loaded if player.Character then onCharacterAdded(player.Character) end print("Noclip toggle script added to button:", Button:GetFullName())