Spectra Noclip Panel
Key RequiredUniversal

Spectra Noclip Panel

Universal ScriptDanyltharDanylthar 1.6K views 1.3K executesUpdated Dec 1, 2025
5.0/ 5(2 votes)
20100% Positive
Lua Script•396 lines (12008 chars)
--// SERVICES
local Players = game:GetService("Players")
local UIS = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")

local player = Players.LocalPlayer

if game.CoreGui:FindFirstChild("NoclipGui") then
    return
end

local noclipEnabled = false
local guiVisible = true
local destroyed = false

--// SCREEN GUI
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "NoclipGui"
screenGui.ResetOnSpawn = false
screenGui.IgnoreGuiInset = true
screenGui.Parent = game.CoreGui

--// MAIN PANEL
local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 260, 0, 110)
mainFrame.Position = UDim2.new(0, 20, 0, 100)
mainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
mainFrame.BorderSizePixel = 0
mainFrame.Active = true
mainFrame.Parent = screenGui

local mainCorner = Instance.new("UICorner")
mainCorner.CornerRadius = UDim.new(0, 8)
mainCorner.Parent = mainFrame

local stroke = Instance.new("UIStroke")
stroke.Thickness = 1.4
stroke.Color = Color3.fromRGB(120, 140, 255)
stroke.Transparency = 0.25
stroke.Parent = mainFrame

local gradient = Instance.new("UIGradient")
gradient.Color = ColorSequence.new({
    ColorSequenceKeypoint.new(0, Color3.fromRGB(35, 35, 60)),
    ColorSequenceKeypoint.new(1, Color3.fromRGB(15, 15, 25))
})
gradient.Rotation = 135
gradient.Parent = mainFrame

local uiScale = Instance.new("UIScale")
uiScale.Scale = 1
uiScale.Parent = mainFrame

local padding = Instance.new("UIPadding")
padding.PaddingTop = UDim.new(0, 6)
padding.PaddingLeft = UDim.new(0, 8)
padding.PaddingRight = UDim.new(0, 8)
padding.PaddingBottom = UDim.new(0, 6)
padding.Parent = mainFrame

local listLayout = Instance.new("UIListLayout")
listLayout.FillDirection = Enum.FillDirection.Vertical
listLayout.SortOrder = Enum.SortOrder.LayoutOrder
listLayout.Padding = UDim.new(0, 4)
listLayout.Parent = mainFrame

--// HEADER ROW: TITLE + X
local titleRow = Instance.new("Frame")
titleRow.Size = UDim2.new(1, -16, 0, 24)
titleRow.BackgroundTransparency = 1
titleRow.LayoutOrder = 1
titleRow.Parent = mainFrame

local titleRowLayout = Instance.new("UIListLayout")
titleRowLayout.FillDirection = Enum.FillDirection.Horizontal
titleRowLayout.HorizontalAlignment = Enum.HorizontalAlignment.Left
titleRowLayout.VerticalAlignment = Enum.VerticalAlignment.Center
titleRowLayout.Padding = UDim.new(0, 4)
titleRowLayout.Parent = titleRow

local titleLabel = Instance.new("TextLabel")
titleLabel.Size = UDim2.new(1, -40, 1, 0)
titleLabel.BackgroundTransparency = 1
titleLabel.Text = "Noclip Panel"
titleLabel.Font = Enum.Font.GothamBold
titleLabel.TextScaled = true
titleLabel.TextColor3 = Color3.fromRGB(235, 235, 255)
titleLabel.TextXAlignment = Enum.TextXAlignment.Left
titleLabel.LayoutOrder = 1
titleLabel.Parent = titleRow

local closeBtn = Instance.new("TextButton")
closeBtn.Size = UDim2.new(0, 24, 0, 24)
closeBtn.BackgroundColor3 = Color3.fromRGB(90, 25, 25)
closeBtn.TextColor3 = Color3.new(1, 1, 1)
closeBtn.Text = "X"
closeBtn.Font = Enum.Font.GothamBold
closeBtn.TextScaled = true
closeBtn.AutoButtonColor = false
closeBtn.LayoutOrder = 2
closeBtn.Parent = titleRow

local closeCorner = Instance.new("UICorner")
closeCorner.CornerRadius = UDim.new(1, 0)
closeCorner.Parent = closeBtn

local closeStroke = Instance.new("UIStroke")
closeStroke.Thickness = 1
closeStroke.Color = Color3.fromRGB(230, 120, 120)
closeStroke.Transparency = 0.2
closeStroke.Parent = closeBtn

-- LINE
local divider = Instance.new("Frame")
divider.Size = UDim2.new(1, -16, 0, 1)
divider.BackgroundColor3 = Color3.fromRGB(80, 90, 140)
divider.BorderSizePixel = 0
divider.LayoutOrder = 2
divider.Parent = mainFrame

--// ROW: BUTTON + STATUS
local btnRow = Instance.new("Frame")
btnRow.Size = UDim2.new(1, -16, 0, 32)
btnRow.BackgroundTransparency = 1
btnRow.LayoutOrder = 3
btnRow.Parent = mainFrame

local btnRowLayout = Instance.new("UIListLayout")
btnRowLayout.FillDirection = Enum.FillDirection.Horizontal
btnRowLayout.HorizontalAlignment = Enum.HorizontalAlignment.Left
btnRowLayout.VerticalAlignment = Enum.VerticalAlignment.Center
btnRowLayout.Padding = UDim.new(0, 4) -- БЫЛА ОШИБКА, ТУТ ИСПРАВЛЕНО
btnRowLayout.Parent = btnRow

local noclipBtn = Instance.new("TextButton")
noclipBtn.Size = UDim2.new(0, 130, 1, 0)
noclipBtn.BackgroundColor3 = Color3.fromRGB(120, 40, 40)
noclipBtn.TextColor3 = Color3.new(1, 1, 1)
noclipBtn.Text = "Noclip : OFF"
noclipBtn.Font = Enum.Font.GothamBold
noclipBtn.TextScaled = true
noclipBtn.AutoButtonColor = false
noclipBtn.LayoutOrder = 1
noclipBtn.Parent = btnRow

local noclipCorner = Instance.new("UICorner")
noclipCorner.CornerRadius = UDim.new(0, 6)
noclipCorner.Parent = noclipBtn

local noclipStroke = Instance.new("UIStroke")
noclipStroke.Thickness = 1.2
noclipStroke.Color = Color3.fromRGB(220, 80, 80)
noclipStroke.Transparency = 0.15
noclipStroke.Parent = noclipBtn

local statusLabel = Instance.new("TextLabel")
statusLabel.Size = UDim2.new(1, -135, 1, 0)
statusLabel.BackgroundTransparency = 1
statusLabel.Text = "Status: OFF"
statusLabel.Font = Enum.Font.Gotham
statusLabel.TextScaled = true
statusLabel.TextColor3 = Color3.fromRGB(210, 210, 230)
statusLabel.TextXAlignment = Enum.TextXAlignment.Left
statusLabel.LayoutOrder = 2
statusLabel.Parent = btnRow

--// BOTTOM HINT
local hintLabel = Instance.new("TextLabel")
hintLabel.Size = UDim2.new(1, -16, 0, 24)
hintLabel.BackgroundTransparency = 1
hintLabel.TextColor3 = Color3.fromRGB(175, 180, 210)
hintLabel.TextXAlignment = Enum.TextXAlignment.Left
hintLabel.Font = Enum.Font.Gotham
hintLabel.TextScaled = true
hintLabel.Text = "Toggle menu: M   |   Exit script: RightCtrl or X"
hintLabel.LayoutOrder = 4
hintLabel.Parent = mainFrame

--// DRAGGING
local function enableDragging(gui)
    local dragging = false
    local dragInput, dragStart, startPos

    gui.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 then
            dragging = true
            dragStart = input.Position
            startPos = gui.Position
            input.Changed:Connect(function()
                if input.UserInputState == Enum.UserInputState.End then
                    dragging = false
                end
            end)
        end
    end)

    gui.InputChanged:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseMovement then
            dragInput = input
        end
    end)

    UIS.InputChanged:Connect(function(input)
        if input == dragInput and dragging then
            local delta = input.Position - dragStart
            gui.Position = UDim2.new(
                startPos.X.Scale,
                startPos.X.Offset + delta.X,
                startPos.Y.Scale,
                startPos.Y.Offset + delta.Y
            )
        end
    end)
end

enableDragging(mainFrame)

--// TWEEN HELPER
local function tween(obj, props, t)
    TweenService:Create(
        obj,
        TweenInfo.new(t or 0.15, Enum.EasingStyle.Quad, Enum.EasingDirection.Out),
        props
    ):Play()
end

-- BUTTON ANIMS
local defaultBtnColor = noclipBtn.BackgroundColor3

noclipBtn.MouseEnter:Connect(function()
    tween(noclipBtn, {BackgroundColor3 = defaultBtnColor:Lerp(Color3.fromRGB(255,255,255),0.18)}, 0.12)
    tween(noclipStroke, {Thickness = 2}, 0.12)
end)

noclipBtn.MouseLeave:Connect(function()
    tween(noclipBtn, {BackgroundColor3 = defaultBtnColor}, 0.12)
    tween(noclipStroke, {Thickness = 1.2}, 0.12)
end)

noclipBtn.MouseButton1Down:Connect(function()
    tween(noclipBtn, {Size = UDim2.new(0, 125, 1, 0)}, 0.07)
end)

noclipBtn.MouseButton1Up:Connect(function()
    tween(noclipBtn, {Size = UDim2.new(0, 130, 1, 0)}, 0.07)
end)

-- CLOSE BUTTON ANIMS
closeBtn.MouseEnter:Connect(function()
    tween(closeBtn, {BackgroundColor3 = Color3.fromRGB(130, 30, 30)}, 0.12)
end)

closeBtn.MouseLeave:Connect(function()
    tween(closeBtn, {BackgroundColor3 = Color3.fromRGB(90, 25, 25)}, 0.12)
end)

--// NOCLIP LOGIC
local function setNoclip(state)
    if destroyed then return end
    noclipEnabled = state

    noclipBtn.Text = "Noclip : " .. (state and "ON" or "OFF")
    statusLabel.Text = state and "Status: ON" or "Status: OFF"

    defaultBtnColor = state and Color3.fromRGB(40,120,60) or Color3.fromRGB(120,40,40)
    noclipBtn.BackgroundColor3 = defaultBtnColor
    noclipStroke.Color = state and Color3.fromRGB(120,230,150) or Color3.fromRGB(220,80,80)

    local char = player.Character
    if char then
        for _, part in ipairs(char:GetDescendants()) do
            if part:IsA("BasePart") then
                part.CanCollide = not state
            end
        end
    end
end

local steppedConnection = RunService.Stepped:Connect(function()
    if destroyed or not noclipEnabled then return end
    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)

noclipBtn.MouseButton1Click:Connect(function()
    setNoclip(not noclipEnabled)
end)

local charAddedConnection = player.CharacterAdded:Connect(function(char)
    if destroyed then return end
    char:WaitForChild("HumanoidRootPart",5)
    for _, part in ipairs(char:GetDescendants()) do
        if part:IsA("BasePart") then
            part.CanCollide = not noclipEnabled
        end
    end
end)

--// MENU ANIM (M)
local function playOpenAnim()
    mainFrame.Visible = true
    uiScale.Scale = 0.85
    mainFrame.BackgroundTransparency = 1
    stroke.Transparency = 1
    tween(uiScale, {Scale = 1}, 0.18)
    tween(mainFrame, {BackgroundTransparency = 0}, 0.18)
    tween(stroke, {Transparency = 0.25}, 0.18)
end

local function playCloseAnim(callback)
    tween(uiScale, {Scale = 0.85}, 0.18)
    tween(mainFrame, {BackgroundTransparency = 1}, 0.18)
    tween(stroke, {Transparency = 1}, 0.18)
    task.delay(0.19, function()
        mainFrame.Visible = false
        if callback then callback() end
    end)
end

local function setGuiVisible(state)
    if destroyed then return end
    guiVisible = state
    if state then
        playOpenAnim()
    else
        playCloseAnim()
    end
end

local inputConnection
inputConnection = UIS.InputBegan:Connect(function(input,gp)
    if gp or destroyed then return end

    if input.KeyCode == Enum.KeyCode.M then
        setGuiVisible(not guiVisible)

    elseif input.KeyCode == Enum.KeyCode.RightControl then
        -- silent hotkey exit
        if not destroyed then
            destroyed = true
            noclipEnabled = false

            local char = player.Character
            if char then
                for _, part in ipairs(char:GetDescendants()) do
                    if part:IsA("BasePart") then
                        part.CanCollide = true
                    end
                end
            end

            if steppedConnection then steppedConnection:Disconnect() end
            if charAddedConnection then charAddedConnection:Disconnect() end
            if inputConnection then inputConnection:Disconnect() end

            playCloseAnim(function()
                if screenGui then screenGui:Destroy() end
            end)
        end
    end
end)

-- стартовая анимация
playOpenAnim()

--// FULL DESTROY BY X
local function destroyScriptByButton()
    if destroyed then return end
    destroyed = true
    noclipEnabled = false

    local char = player.Character
    if char then
        for _, part in ipairs(char:GetDescendants()) do
            if part:IsA("BasePart") then
                part.CanCollide = true
            end
        end
    end

    if steppedConnection then steppedConnection:Disconnect() end
    if charAddedConnection then charAddedConnection:Disconnect() end
    if inputConnection then inputConnection:Disconnect() end

    playCloseAnim(function()
        if screenGui then screenGui:Destroy() end
    end)
end

closeBtn.MouseButton1Click:Connect(destroyScriptByButton)

Features & Information

- Clean animated noclip GUI panel - Toggle noclip on/off with button - Smooth hover and click animations - Menu toggle hotkey (M) - Full script exit hotkey (RightCtrl) - Close button (X) that fully destroys GUI - Restores character collisions on disable/exit - Draggable panel, compact modern design

Community Comments (2)

DeathHubRealDeathHubRealDec 1, 2025

Working?

Replying to @DeathHubReal
DanyltharDanyltharDec 2, 2025

@DeathHubReal Yes

More Scripts for Universal Scripts