SCP 106 GUI
Key RequiredUniversal

SCP 106 GUI

Universal Scriptscrippterrscrippterr 1.2K views 313 executesUpdated Mar 21, 2026
Unrated
00
Lua Script•409 lines (14469 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")

local SCP106_USERNAME = "yournamehere"
local player = Players.LocalPlayer
if player.Name ~= SCP106_USERNAME then return end
if player.PlayerGui:FindFirstChild("SCP106GUI") then return end

local character = player.Character or player.CharacterAdded:Wait()
local hrp = character:WaitForChild("HumanoidRootPart")
local humanoid = character:WaitForChild("Humanoid")

player.CharacterAdded:Connect(function(char)
    character = char
    hrp = char:WaitForChild("HumanoidRootPart")
    humanoid = char:WaitForChild("Humanoid")
end)

local C = {
    bg = Color3.fromRGB(8, 5, 5),
    panel = Color3.fromRGB(18, 10, 10),
    accent = Color3.fromRGB(139, 0, 0),
    accentDark = Color3.fromRGB(60, 0, 0),
    accentGlow = Color3.fromRGB(180, 20, 20),
    green = Color3.fromRGB(0, 120, 30),
    blue = Color3.fromRGB(0, 50, 120),
    orange = Color3.fromRGB(120, 55, 0),
    gold = Color3.fromRGB(200, 160, 0),
    text = Color3.fromRGB(210, 200, 200),
    subtext = Color3.fromRGB(120, 100, 100),
    white = Color3.fromRGB(255, 255, 255),
}

local screenGui = Instance.new("ScreenGui")
screenGui.Name = "SCP106GUI"
screenGui.ResetOnSpawn = false
screenGui.IgnoreGuiInset = true
screenGui.DisplayOrder = 999
screenGui.Parent = player.PlayerGui

local glow = Instance.new("Frame")
glow.Size = UDim2.new(0, 234, 0, 320)
glow.Position = UDim2.new(0, 9, 0.5, -160)
glow.BackgroundColor3 = C.accent
glow.BackgroundTransparency = 0.7
glow.BorderSizePixel = 0
glow.Parent = screenGui
Instance.new("UICorner", glow).CornerRadius = UDim.new(0, 12)

local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 224, 0, 314)
frame.Position = UDim2.new(0, 12, 0.5, -157)
frame.BackgroundColor3 = C.bg
frame.BackgroundTransparency = 0
frame.BorderSizePixel = 0
frame.Parent = screenGui
Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 10)

local stripe = Instance.new("Frame")
stripe.Size = UDim2.new(1, 0, 0, 3)
stripe.BackgroundColor3 = C.accentGlow
stripe.BorderSizePixel = 0
stripe.Parent = frame
Instance.new("UICorner", stripe).CornerRadius = UDim.new(0, 10)

local header = Instance.new("Frame")
header.Size = UDim2.new(1, 0, 0, 70)
header.Position = UDim2.new(0, 0, 0, 3)
header.BackgroundColor3 = C.panel
header.BorderSizePixel = 0
header.Parent = frame

local scpTag = Instance.new("TextLabel")
scpTag.Size = UDim2.new(1, -20, 0, 18)
scpTag.Position = UDim2.new(0, 10, 0, 8)
scpTag.BackgroundTransparency = 1
scpTag.TextColor3 = C.accent
scpTag.Text = "ITEM #: SCP-106 // CLASS: KETER"
scpTag.Font = Enum.Font.Code
scpTag.TextSize = 10
scpTag.TextXAlignment = Enum.TextXAlignment.Left
scpTag.Parent = header

local titleLabel = Instance.new("TextLabel")
titleLabel.Size = UDim2.new(1, -20, 0, 32)
titleLabel.Position = UDim2.new(0, 10, 0, 24)
titleLabel.BackgroundTransparency = 1
titleLabel.TextColor3 = C.white
titleLabel.Text = "THE OLD MAN"
titleLabel.Font = Enum.Font.GothamBold
titleLabel.TextSize = 24
titleLabel.TextXAlignment = Enum.TextXAlignment.Left
titleLabel.Parent = header

local skullLabel = Instance.new("TextLabel")
skullLabel.Size = UDim2.new(0, 40, 0, 60)
skullLabel.Position = UDim2.new(1, -50, 0, 5)
skullLabel.BackgroundTransparency = 1
skullLabel.TextColor3 = C.accentGlow
skullLabel.Text = "💀"
skullLabel.Font = Enum.Font.GothamBold
skullLabel.TextSize = 21
skullLabel.Parent = header

local divider = Instance.new("Frame")
divider.Size = UDim2.new(0.9, 0, 0, 1)
divider.Position = UDim2.new(0.05, 0, 0, 75)
divider.BackgroundColor3 = C.accentDark
divider.BorderSizePixel = 0
divider.Parent = frame

local statusLabel = Instance.new("TextLabel")
statusLabel.Size = UDim2.new(1, -20, 0, 18)
statusLabel.Position = UDim2.new(0, 10, 0, 82)
statusLabel.BackgroundTransparency = 1
statusLabel.TextColor3 = C.accentGlow
statusLabel.Text = ""
statusLabel.Font = Enum.Font.Code
statusLabel.TextSize = 11
statusLabel.TextXAlignment = Enum.TextXAlignment.Left
statusLabel.Parent = frame

local function makeButton(icon, label, keybind, yOffset, color)
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(0.9, 0, 0, 52)
    btn.Position = UDim2.new(0.05, 0, 0, yOffset)
    btn.BackgroundColor3 = C.panel
    btn.TextColor3 = C.text
    btn.Text = ""
    btn.BorderSizePixel = 0
    btn.AutoButtonColor = false
    btn.Parent = frame
    Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 8)

    local bar = Instance.new("Frame")
    bar.Size = UDim2.new(0, 3, 0.7, 0)
    bar.Position = UDim2.new(0, 8, 0.15, 0)
    bar.BackgroundColor3 = color or C.accent
    bar.BorderSizePixel = 0
    bar.Parent = btn
    Instance.new("UICorner", bar).CornerRadius = UDim.new(0, 4)

    local iconLbl = Instance.new("TextLabel")
    iconLbl.Size = UDim2.new(0, 30, 1, 0)
    iconLbl.Position = UDim2.new(0, 16, 0, 0)
    iconLbl.BackgroundTransparency = 1
    iconLbl.TextColor3 = color or C.accent
    iconLbl.Text = icon
    iconLbl.Font = Enum.Font.GothamBold
    iconLbl.TextSize = 20
    iconLbl.Parent = btn

    local mainLbl = Instance.new("TextLabel")
    mainLbl.Size = UDim2.new(0, 120, 0, 28)
    mainLbl.Position = UDim2.new(0, 50, 0, 6)
    mainLbl.BackgroundTransparency = 1
    mainLbl.TextColor3 = C.text
    mainLbl.Text = label
    mainLbl.Font = Enum.Font.GothamSemibold
    mainLbl.TextSize = 13
    mainLbl.TextXAlignment = Enum.TextXAlignment.Left
    mainLbl.Parent = btn

    local keyLbl = Instance.new("TextLabel")
    keyLbl.Size = UDim2.new(0, 28, 0, 20)
    keyLbl.Position = UDim2.new(0, 50, 0, 28)
    keyLbl.BackgroundColor3 = C.accentDark
    keyLbl.TextColor3 = C.subtext
    keyLbl.Text = keybind
    keyLbl.Font = Enum.Font.Code
    keyLbl.TextSize = 10
    keyLbl.BorderSizePixel = 0
    keyLbl.Parent = btn
    Instance.new("UICorner", keyLbl).CornerRadius = UDim.new(0, 4)

    btn.MouseEnter:Connect(function()
        TweenService:Create(btn, TweenInfo.new(0.15), {BackgroundColor3 = C.accentDark}):Play()
    end)
    btn.MouseLeave:Connect(function()
        TweenService:Create(btn, TweenInfo.new(0.15), {BackgroundColor3 = C.panel}):Play()
    end)

    return btn, mainLbl, bar
end

local btnNoclip, noclipLbl, noclipBar = makeButton("👻", "NOCLIP", "[N]", 106, C.accent)
local btnUnderground, undergroundLbl, undergroundBar = makeButton("🕳", "GO UNDERGROUND", "[U]", 168, C.accent)
local btnEmerge, emergeLbl, emergeBar = makeButton("⬆", "EMERGE HERE", "[E]", 230, C.accent)

local bottomBar = Instance.new("Frame")
bottomBar.Size = UDim2.new(1, 0, 0, 24)
bottomBar.Position = UDim2.new(0, 0, 1, -24)
bottomBar.BackgroundColor3 = C.panel
bottomBar.BorderSizePixel = 0
bottomBar.Parent = frame
Instance.new("UICorner", bottomBar).CornerRadius = UDim.new(0, 10)

local bottomText = Instance.new("TextLabel")
bottomText.Size = UDim2.new(1, 0, 1, 0)
bottomText.BackgroundTransparency = 1
bottomText.TextColor3 = C.subtext
bottomText.Text = "DRAG TO MOVE // SCP FOUNDATION"
bottomText.Font = Enum.Font.Code
bottomText.TextSize = 9
bottomText.Parent = bottomBar

local dragging, dragStart, startGlowPos, startFramePos
header.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 then
        dragging = true
        dragStart = input.Position
        startGlowPos = glow.Position
        startFramePos = frame.Position
    end
end)

header.InputEnded:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 then
        dragging = false
    end
end)

UserInputService.InputChanged:Connect(function(input)
    if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then
        local delta = input.Position - dragStart
        glow.Position = UDim2.new(startGlowPos.X.Scale, startGlowPos.X.Offset + delta.X, startGlowPos.Y.Scale, startGlowPos.Y.Offset + delta.Y)
        frame.Position = UDim2.new(startFramePos.X.Scale, startFramePos.X.Offset + delta.X, startFramePos.Y.Scale, startFramePos.Y.Offset + delta.Y)
    end
end)

local noclipOn = false
local underground = false
local transitioning = false
local flySpeed = 35
local noclipConn, flyConn, bodyVel, bodyGyr = nil, nil, nil, nil

local espHighlights = {}
local function applyUndergroundESP()
    for _, h in pairs(espHighlights) do
        if h and h.Parent then h:Destroy() end
    end
    espHighlights = {}
    for _, p in ipairs(Players:GetPlayers()) do
        if p ~= player and p.Character then
            local h = Instance.new("Highlight")
            h.FillColor = Color3.fromRGB(200, 160, 0)
            h.OutlineColor = Color3.fromRGB(255, 220, 0)
            h.FillTransparency = 0.45
            h.OutlineTransparency = 0
            h.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
            h.Parent = p.Character
            espHighlights[p.Name] = h
        end
    end
end

local function clearUndergroundESP()
    for _, h in pairs(espHighlights) do
        if h and h.Parent then h:Destroy() end
    end
    espHighlights = {}
end

local function setNoclip(enabled)
    noclipOn = enabled
    if enabled then
        noclipLbl.Text = "NOCLIP: ON"
        noclipBar.BackgroundColor3 = C.green
        noclipConn = RunService.Stepped:Connect(function()
            if not character then return end
            for _, p in ipairs(character:GetDescendants()) do
                if p:IsA("BasePart") then p.CanCollide = false end
            end
        end)
    else
        noclipLbl.Text = "NOCLIP: OFF"
        noclipBar.BackgroundColor3 = C.accent
        if noclipConn then noclipConn:Disconnect(); noclipConn = nil end
        if character then
            for _, p in ipairs(character:GetDescendants()) do
                if p:IsA("BasePart") then p.CanCollide = true end
            end
        end
    end
end

local function enableFly()
    humanoid.PlatformStand = true
    bodyVel = Instance.new("BodyVelocity")
    bodyVel.Velocity = Vector3.zero
    bodyVel.MaxForce = Vector3.new(1e5, 1e5, 1e5)
    bodyVel.Parent = hrp
    bodyGyr = Instance.new("BodyGyro")
    bodyGyr.MaxTorque = Vector3.new(1e5, 1e5, 1e5)
    bodyGyr.D = 100
    bodyGyr.Parent = hrp
    local cam = workspace.CurrentCamera
    flyConn = RunService.Heartbeat:Connect(function()
        if not hrp then return end
        local dir = Vector3.zero
        local flatLook = Vector3.new(cam.CFrame.LookVector.X, 0, cam.CFrame.LookVector.Z).Unit
        local flatRight = Vector3.new(cam.CFrame.RightVector.X, 0, cam.CFrame.RightVector.Z).Unit
        if UserInputService:IsKeyDown(Enum.KeyCode.W) then dir += flatLook end
        if UserInputService:IsKeyDown(Enum.KeyCode.S) then dir -= flatLook end
        if UserInputService:IsKeyDown(Enum.KeyCode.A) then dir -= flatRight end
        if UserInputService:IsKeyDown(Enum.KeyCode.D) then dir += flatRight end
        if UserInputService:IsKeyDown(Enum.KeyCode.Space) then dir += Vector3.new(0, 1, 0) end
        if UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then dir -= Vector3.new(0, 1, 0) end
        bodyVel.Velocity = dir.Magnitude > 0 and dir.Unit * flySpeed or Vector3.zero
        bodyGyr.CFrame = cam.CFrame
    end)
end

local function disableFly()
    humanoid.PlatformStand = false
    if flyConn then flyConn:Disconnect(); flyConn = nil end
    if bodyVel then bodyVel:Destroy(); bodyVel = nil end
    if bodyGyr then bodyGyr:Destroy(); bodyGyr = nil end
end

local function sinkIntoGround(callback)
    transitioning = true
    statusLabel.Text = "[ PHASE SHIFT: ENTERING SUBSTRATE... ]"
    undergroundLbl.Text = "SINKING..."
    undergroundBar.BackgroundColor3 = C.orange
    humanoid.WalkSpeed = 0
    humanoid.JumpPower = 0
    setNoclip(true)
    local bv = Instance.new("BodyVelocity")
    bv.Velocity = Vector3.zero
    bv.MaxForce = Vector3.new(1e5, 0, 1e5)
    bv.Parent = hrp
    local targetCFrame = hrp.CFrame * CFrame.new(0, -10, 0)
    local tween = TweenService:Create(hrp, TweenInfo.new(2, Enum.EasingStyle.Quad, Enum.EasingDirection.In), {CFrame = targetCFrame})
    tween:Play()
    tween.Completed:Wait()
    bv:Destroy()
    statusLabel.Text = ""
    transitioning = false
    if callback then callback() end
end

local function emergeFromGround(callback)
    transitioning = true
    statusLabel.Text = "[ PHASE SHIFT: EXITING SUBSTRATE... ]"
    undergroundLbl.Text = "EMERGING..."
    undergroundBar.BackgroundColor3 = C.orange
    disableFly()
    setNoclip(true)
    humanoid.WalkSpeed = 0
    humanoid.JumpPower = 0
    local bv = Instance.new("BodyVelocity")
    bv.Velocity = Vector3.zero
    bv.MaxForce = Vector3.new(1e5, 0, 1e5)
    bv.Parent = hrp
    local targetCFrame = hrp.CFrame * CFrame.new(0, 10, 0)
    local tween = TweenService:Create(hrp, TweenInfo.new(2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {CFrame = targetCFrame})
    tween:Play()
    tween.Completed:Wait()
    bv:Destroy()
    humanoid.WalkSpeed = 16
    humanoid.JumpPower = 50
    setNoclip(false)
    statusLabel.Text = ""
    transitioning = false
    if callback then callback() end
end

local function goUnderground()
    if underground or transitioning then return end
    underground = true
    sinkIntoGround(function()
        humanoid.WalkSpeed = 16
        humanoid.JumpPower = 50
        enableFly()
        undergroundLbl.Text = "UNDERGROUND: ON"
        undergroundBar.BackgroundColor3 = C.blue
        applyUndergroundESP()
        statusLabel.Text = "[ SUBSTRATE ACTIVE — SUBJECTS HIGHLIGHTED ]"
        task.delay(2, function()
            if underground then statusLabel.Text = "" end
        end)
    end)
end

local function emerge()
    if not underground or transitioning then return end
    underground = false
    emergeFromGround(function()
        undergroundLbl.Text = "GO UNDERGROUND"
        undergroundBar.BackgroundColor3 = C.accent
        clearUndergroundESP()
    end)
end

btnNoclip.MouseButton1Click:Connect(function() setNoclip(not noclipOn) end)
btnUnderground.MouseButton1Click:Connect(function() goUnderground() end)
btnEmerge.MouseButton1Click:Connect(function() emerge() end)

UserInputService.InputBegan:Connect(function(input, gameProcessed)
    if gameProcessed then return end
    if input.KeyCode == Enum.KeyCode.N then setNoclip(not noclipOn) end
    if input.KeyCode == Enum.KeyCode.U then goUnderground() end
    if input.KeyCode == Enum.KeyCode.E then emerge() end
end)

print("SCP-106 GUI loaded!")

Features & Information

For it to work, you must replace "yournamehere" with your username.

Community Comments (1)

scrippterrscrippterrMar 21, 2026

@strawiiwebbr do you have a script i should make next? i have no ideas rn

More Scripts for Universal Scripts