M
ScriptKeyless
{KEYLESS} Flee the Facility script (SilverHub)
Flee the FacilityDesktop compatibleOpiumWare
Description
I made this script with ai so lmk -not mobile tested
GAMEFlee the Facility
UPDATEDOct 17, 2026
ACCESSKeyless
PLATFORMDesktop
Script source Luau
-- [[ BloxScripts Risk Notice ]]
-- This script has not been verified by BloxScripts.fun. Deal with caution.
--
-- Stay safe:
-- • Never log in on unofficial Roblox sites or lookalike domains.
-- • Real Roblox links use roblox.com (check the .com ending).
-- • Treat fake Roblox login / "claim reward" pages as phishing.
-- [[ End BloxScripts Risk Notice ]]
--[[
Silver HubV2 | Flee the Facility (Pro)
Flow: Flashy Loading Screen -> Welcome Popup -> Main GUI (no key)
NOTE: Game-specific object / remote names are best-effort (see NAMES + CONFIG below).
]]
local HOVER_SFX = "rbxassetid://6895079853"
-- Names the script looks for in the map. Edit if the game changes them.
local NAMES = {
Computer = "ComputerTable",
Pod = "FreezePod",
Exit = "ExitDoor",
Doors = {"SingleDoor", "DoubleDoor"},
}
----------------------------------------------------------------
-- Services
----------------------------------------------------------------
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local Lighting = game:GetService("Lighting")
local SoundService = game:GetService("SoundService")
local Debris = game:GetService("Debris")
local TeleportService = game:GetService("TeleportService")
local VirtualUser = game:GetService("VirtualUser")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local LocalPlayer = Players.LocalPlayer
local Camera = workspace.CurrentCamera
----------------------------------------------------------------
-- State
----------------------------------------------------------------
local Accent = Color3.fromRGB(110, 200, 255)
local accentCallbacks = {}
local ToggleKey = Enum.KeyCode.RightShift
local NoClipKey = Enum.KeyCode.N
local State = {
BeastESP = false, SurvivorESP = false, ComputerESP = false, ExitESP = false, PodESP = false,
AutoSkill = false, NoFail = false, InstantRescue = false, RescueRange = 18,
InteractBoost = false, InteractMult = 2.5,
AutoTie = false, HammerReach = false, HammerScale = 1.6, NoCooldown = false, DoorAura = false,
Speed = false, SpeedValue = 24, FullBright = false, NoClip = false, InfJump = false,
AntiAFK = true,
}
local refreshers = {} -- toggle UI refresh functions, so hotkeys can sync the switches
----------------------------------------------------------------
-- Helpers
----------------------------------------------------------------
local function create(class, props, children)
local inst = Instance.new(class)
for k, v in pairs(props or {}) do inst[k] = v end
for _, c in ipairs(children or {}) do c.Parent = inst end
return inst
end
local function tween(obj, t, props, style, dir)
local tw = TweenService:Create(obj, TweenInfo.new(t, style or Enum.EasingStyle.Quad, dir or Enum.EasingDirection.Out), props)
tw:Play()
return tw
end
local function playHover()
local s = Instance.new("Sound")
s.SoundId = HOVER_SFX
s.Volume = 0.6
s.Parent = SoundService
s:Play()
Debris:AddItem(s, 2)
end
local function onAccent(fn)
table.insert(accentCallbacks, fn)
fn(Accent)
end
local function setAccent(c)
Accent = c
for _, fn in ipairs(accentCallbacks) do pcall(fn, c) end
end
local function hoverable(obj, normal, hover)
obj.MouseEnter:Connect(function()
playHover()
if hover then tween(obj, 0.15, hover) end
end)
obj.MouseLeave:Connect(function()
if normal then tween(obj, 0.15, normal) end
end)
end
local function getParent()
local ok, ui = pcall(function() return (gethui and gethui()) or game:GetService("CoreGui") end)
if ok and ui then return ui end
return LocalPlayer:WaitForChild("PlayerGui")
end
local Gui = create("ScreenGui", {
Name = "SilverHubV2_FTF", ResetOnSpawn = false, IgnoreGuiInset = true,
ZIndexBehavior = Enum.ZIndexBehavior.Sibling, DisplayOrder = 999,
})
Gui.Parent = getParent()
local function gradient(parent, c0, c1, rot)
return create("UIGradient", {Color = ColorSequence.new(c0, c1), Rotation = rot or 90, Parent = parent})
end
local function myRoot()
local c = LocalPlayer.Character
return c and c:FindFirstChild("HumanoidRootPart")
end
local function humanoid()
return LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass("Humanoid")
end
local function remote()
return ReplicatedStorage:FindFirstChild("RemoteEvent")
end
local function statsOf(plr)
return plr:FindFirstChild("TempPlayerStatsModule")
end
local function isBeast(plr)
local c = plr.Character
if c and c:FindFirstChild("Hammer") then return true end
local s = statsOf(plr)
local v = s and s:FindFirstChild("IsBeast")
return v and v.Value or false
end
local function iAmBeast()
return isBeast(LocalPlayer)
end
local function partOf(model)
if model:IsA("BasePart") then return model end
return model.PrimaryPart or model:FindFirstChildWhichIsA("BasePart", true)
end
----------------------------------------------------------------
-- Map scanning
----------------------------------------------------------------
local Map = {Computers = {}, Pods = {}, Exits = {}, Doors = {}}
local function scanMap()
local c, p, e, d = {}, {}, {}, {}
for _, o in ipairs(workspace:GetDescendants()) do
if o:IsA("Model") then
local n = o.Name
if n == NAMES.Computer then
table.insert(c, o)
elseif n == NAMES.Pod then
table.insert(p, o)
elseif n == NAMES.Exit then
table.insert(e, o)
elseif table.find(NAMES.Doors, n) then
table.insert(d, o)
end
end
end
Map.Computers, Map.Pods, Map.Exits, Map.Doors = c, p, e, d
end
task.spawn(function()
while true do
pcall(scanMap)
task.wait(2)
end
end)
-- Computer state: "done" / "progress" / "idle"
local function computerState(pc)
local screen = pc:FindFirstChild("Screen")
if screen and screen:IsA("BasePart") then
local col = screen.Color
if col.G > col.R and col.G > col.B then return "done" end
end
local pp = partOf(pc)
if pp then
for _, plr in ipairs(Players:GetPlayers()) do
local r = plr.Character and plr.Character:FindFirstChild("HumanoidRootPart")
local s = statsOf(plr)
local ap = s and s:FindFirstChild("ActionProgress")
if r and ap and ap.Value > 0 and (r.Position - pp.Position).Magnitude < 10 then
return "progress"
end
end
end
return "idle"
end
local function allComputersDone()
if #Map.Computers == 0 then return false end
for _, pc in ipairs(Map.Computers) do
if computerState(pc) ~= "done" then return false end
end
return true
end
----------------------------------------------------------------
-- ESP
----------------------------------------------------------------
local function setHighlight(target, key, color, on)
local existing = target:FindFirstChild(key)
if on then
if not existing then
existing = Instance.new("Highlight")
existing.Name = key
existing.FillTransparency = 0.55
existing.OutlineTransparency = 0
existing.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
existing.Parent = target
end
existing.FillColor = color
existing.OutlineColor = color
elseif existing then
existing:Destroy()
end
end
local function setTag(adornee, key, text, color, on)
local tag = adornee:FindFirstChild(key)
if on then
if not tag then
tag = create("BillboardGui", {
Name = key, Size = UDim2.fromOffset(170, 34), StudsOffset = Vector3.new(0, 3, 0),
AlwaysOnTop = true, Parent = adornee,
})
create("TextLabel", {
Name = "L", Size = UDim2.fromScale(1, 1), BackgroundTransparency = 1, Font = Enum.Font.GothamBold,
TextSize = 13, TextStrokeTransparency = 0.2, Parent = tag,
})
end
tag.L.Text = text
tag.L.TextColor3 = color
elseif tag then
tag:Destroy()
end
end
local function beastStatus(plr, dist)
local s = statsOf(plr)
local carried = s and s:FindFirstChild("CarriedTorso")
if carried and carried.Value ~= nil then return "Carrying Player" end
local hum = plr.Character and plr.Character:FindFirstChildOfClass("Humanoid")
local rag = s and s:FindFirstChild("Ragdoll")
if (rag and rag.Value) or (hum and hum.WalkSpeed < 2) then return "Stunned" end
if dist < 45 then return "Chasing" end
return "Roaming"
end
task.spawn(function()
while task.wait(0.25) do
pcall(function()
local root = myRoot()
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= LocalPlayer and plr.Character then
local r = plr.Character:FindFirstChild("HumanoidRootPart")
local dist = (root and r) and math.floor((r.Position - root.Position).Magnitude) or 0
if r then
if isBeast(plr) then
setHighlight(plr.Character, "SilverSurv", Color3.new(), false)
setTag(r, "SilverSurvTag", "", Color3.new(), false)
setHighlight(plr.Character, "SilverBeast", Color3.fromRGB(255, 40, 40), State.BeastESP)
setTag(r, "SilverBeastTag",
("BEAST [%dm] %s"):format(dist, beastStatus(plr, dist)),
Color3.fromRGB(255, 90, 90), State.BeastESP)
else
setHighlight(plr.Character, "SilverBeast", Color3.new(), false)
setTag(r, "SilverBeastTag", "", Color3.new(), false)
setHighlight(plr.Character, "SilverSurv", Color3.fromRGB(70, 220, 255), State.SurvivorESP)
setTag(r, "SilverSurvTag", ("%s [%dm]"):format(plr.DisplayName, dist),
Color3.fromRGB(120, 230, 255), State.SurvivorESP)
end
end
end
end
for _, pc in ipairs(Map.Computers) do
if pc.Parent then
local st = computerState(pc)
local col = st == "done" and Color3.fromRGB(70, 255, 110)
or st == "progress" and Color3.fromRGB(255, 220, 60)
or Color3.fromRGB(255, 70, 70)
setHighlight(pc, "SilverPC", col, State.ComputerESP)
local pp = partOf(pc)
if pp then
setTag(pp, "SilverPCTag",
st == "done" and "Completed" or st == "progress" and "In Progress" or "Not Started",
col, State.ComputerESP)
end
end
end
local powered = allComputersDone()
for _, ex in ipairs(Map.Exits) do
if ex.Parent then
local col = powered and Color3.fromRGB(80, 255, 140) or Color3.fromRGB(120, 120, 130)
setHighlight(ex, "SilverExit", col, State.ExitESP)
local pp = partOf(ex)
if pp then
setTag(pp, "SilverExitTag", powered and "EXIT (POWERED)" or "Exit (locked)", col, State.ExitESP)
end
end
end
for _, pod in ipairs(Map.Pods) do
if pod.Parent then
setHighlight(pod, "SilverPod", Color3.fromRGB(190, 120, 255), State.PodESP)
local pp = partOf(pod)
if pp then setTag(pp, "SilverPodTag", "Freeze Pod", Color3.fromRGB(200, 150, 255), State.PodESP) end
end
end
end)
end
end)
----------------------------------------------------------------
-- Survivor automation
----------------------------------------------------------------
-- Auto skill check: only fires while you are near an unfinished computer
task.spawn(function()
while task.wait(0.12) do
if State.AutoSkill then
local root, rem = myRoot(), remote()
if root and rem then
for _, pc in ipairs(Map.Computers) do
local pp = partOf(pc)
if pp and (pp.Position - root.Position).Magnitude < 12 then
pcall(function() rem:FireServer("SetPlayerMinigameResult", true) end)
break
end
end
end
end
end
end)
-- No-fail: rewrite any "failed" skill check result into a success before it is sent
pcall(function()
if hookmetamethod and getnamecallmethod then
local old
old = hookmetamethod(game, "__namecall", function(self, ...)
if State.NoFail and getnamecallmethod() == "FireServer" and typeof(self) == "Instance"
and self.Name == "RemoteEvent" then
local args = {...}
if args[1] == "SetPlayerMinigameResult" and args[2] == false then
args[2] = true
return old(self, unpack(args))
end
end
return old(self, ...)
end)
end
end)
-- Instant rescue: free a captured teammate when you are within range of their pod
local function podTrigger(pod)
return pod:FindFirstChild("PodTrigger", true) or partOf(pod)
end
task.spawn(function()
while task.wait(0.3) do
if State.InstantRescue and not iAmBeast() then
pcall(function()
local root, rem = myRoot(), remote()
if not root then return end
for _, pod in ipairs(Map.Pods) do
local trig = podTrigger(pod)
if trig and (trig.Position - root.Position).Magnitude < State.RescueRange then
for _, plr in ipairs(Players:GetPlayers()) do
local r = plr ~= LocalPlayer and plr.Character and plr.Character:FindFirstChild("HumanoidRootPart")
local s = plr ~= LocalPlayer and statsOf(plr)
local cap = s and s:FindFirstChild("Captured")
if r and cap and cap.Value and (r.Position - trig.Position).Magnitude < 10 then
if firetouchinterest then
firetouchinterest(root, trig, 0)
firetouchinterest(root, trig, 1)
end
if rem then
rem:FireServer("Input", "Trigger", true)
rem:FireServer("Input", "Action", true)
end
end
end
end
end
end)
end
end
end)
-- Interact distance boost (affects ProximityPrompts only)
local promptOrig = setmetatable({}, {__mode = "k"})
task.spawn(function()
while task.wait(1) do
for _, o in ipairs(workspace:GetDescendants()) do
if o:IsA("ProximityPrompt") then
if promptOrig[o] == nil then promptOrig[o] = {o.MaxActivationDistance, o.RequiresLineOfSight} end
if State.InteractBoost then
o.MaxActivationDistance = promptOrig[o][1] * State.InteractMult
o.RequiresLineOfSight = false
else
o.MaxActivationDistance = promptOrig[o][1]
o.RequiresLineOfSight = promptOrig[o][2]
end
end
end
end
end)
----------------------------------------------------------------
-- Beast enhancements
----------------------------------------------------------------
-- Auto tie to pod
local lastTie = 0
task.spawn(function()
while task.wait(0.4) do
if State.AutoTie and iAmBeast() and tick() - lastTie > 1.5 then
pcall(function()
local root = myRoot()
local char = LocalPlayer.Character
local s = statsOf(LocalPlayer)
local carried = s and s:FindFirstChild("CarriedTorso")
local hammer = char and char:FindFirstChild("Hammer")
if not root then return end
-- 1) tie any downed survivor in range
if hammer then
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= LocalPlayer and plr.Character then
local st = statsOf(plr)
local rag = st and st:FindFirstChild("Ragdoll")
local torso = plr.Character:FindFirstChild("Torso") or plr.Character:FindFirstChild("UpperTorso")
if rag and rag.Value and torso and (torso.Position - root.Position).Magnitude < 15 then
hammer.HammerEvent:FireServer("HammerTieUp", torso, torso.Position)
end
end
end
end
-- 2) if carrying someone, go to the nearest pod and trigger it
if carried and carried.Value ~= nil then
local best, bestD
for _, pod in ipairs(Map.Pods) do
local t = podTrigger(pod)
if t then
local d = (t.Position - root.Position).Magnitude
if not bestD or d < bestD then best, bestD = t, d end
end
end
if best then
lastTie = tick()
root.CFrame = best.CFrame * CFrame.new(0, 0, 4)
task.wait(0.15)
local rem = remote()
if firetouchinterest then
firetouchinterest(root, best, 0)
firetouchinterest(root, best, 1)
end
if rem then
rem:FireServer("Input", "Trigger", true)
rem:FireServer("Input", "Action", true)
end
end
end
end)
end
end
end)
-- Extended hammer reach (scales the hammer's parts client-side)
local hammerOrig = setmetatable({}, {__mode = "k"})
RunService.Heartbeat:Connect(function()
local char = LocalPlayer.Character
local hammer = char and char:FindFirstChild("Hammer")
if hammer then
for _, p in ipairs(hammer:GetDescendants()) do
if p:IsA("BasePart") then
if not hammerOrig[p] then hammerOrig[p] = p.Size end
local target = State.HammerReach and hammerOrig[p] * State.HammerScale or hammerOrig[p]
if p.Size ~= target then
p.Size = target
if State.HammerReach then
p.Massless = true
p.CanCollide = false
end
end
end
end
end
end)
-- No attack cooldown: hold your pre-swing speed for a moment after each swing
do
local lastSpeed = 16
local holdUntil = 0
local heldSpeed = 16
local function hookHammer(h)
if h:IsA("Tool") then
h.Activated:Connect(function()
local hum = humanoid()
if hum then heldSpeed = math.max(lastSpeed, hum.WalkSpeed) end
holdUntil = tick() + 1.2
end)
end
end
RunService.Heartbeat:Connect(function()
local hum = humanoid()
if not hum then return end
if tick() > holdUntil then lastSpeed = hum.WalkSpeed end
if State.NoCooldown and tick() < holdUntil and hum.WalkSpeed < heldSpeed then
hum.WalkSpeed = heldSpeed
end
local h = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("Hammer")
if h and not h:GetAttribute("SilverHooked") then
h:SetAttribute("SilverHooked", true)
hookHammer(h)
end
end)
end
-- Beast door aura: triggers doors as you walk past them
task.spawn(function()
while task.wait(0.35) do
if State.DoorAura and iAmBeast() then
pcall(function()
local root, rem = myRoot(), remote()
if not root then return end
for _, door in ipairs(Map.Doors) do
local trig = door:FindFirstChild("DoorTrigger", true) or partOf(door)
if trig and (trig.Position - root.Position).Magnitude < 12 then
if firetouchinterest then
firetouchinterest(root, trig, 0)
firetouchinterest(root, trig, 1)
end
if rem then rem:FireServer("Input", "Trigger", true) end
end
end
end)
end
end
end)
----------------------------------------------------------------
-- Movement & environment
----------------------------------------------------------------
RunService.Heartbeat:Connect(function()
if State.Speed then
local hum = humanoid()
if hum then hum.WalkSpeed = State.SpeedValue end
end
end)
UserInputService.JumpRequest:Connect(function()
if State.InfJump then
local hum = humanoid()
if hum then hum:ChangeState(Enum.HumanoidStateType.Jumping) end
end
end)
RunService.Stepped:Connect(function()
if State.NoClip and LocalPlayer.Character then
for _, p in ipairs(LocalPlayer.Character:GetDescendants()) do
if p:IsA("BasePart") then p.CanCollide = false end
end
end
end)
local origLighting = {
Brightness = Lighting.Brightness, ClockTime = Lighting.ClockTime, FogEnd = Lighting.FogEnd,
FogStart = Lighting.FogStart, GlobalShadows = Lighting.GlobalShadows, Ambient = Lighting.Ambient,
OutdoorAmbient = Lighting.OutdoorAmbient,
}
local origAtmos = {}
RunService.RenderStepped:Connect(function()
if State.FullBright then
Lighting.Brightness = 2
Lighting.ClockTime = 14
Lighting.FogStart = 0
Lighting.FogEnd = 1e6
Lighting.GlobalShadows = false
Lighting.Ambient = Color3.fromRGB(210, 210, 210)
Lighting.OutdoorAmbient = Color3.fromRGB(210, 210, 210)
for _, a in ipairs(Lighting:GetChildren()) do
if a:IsA("Atmosphere") then
if not origAtmos[a] then origAtmos[a] = a.Density end
a.Density = 0
end
end
end
end)
local function restoreLighting()
for k, v in pairs(origLighting) do Lighting[k] = v end
for a, d in pairs(origAtmos) do if a.Parent then a.Density = d end end
end
LocalPlayer.Idled:Connect(function()
if State.AntiAFK then
VirtualUser:CaptureController()
VirtualUser:ClickButton2(Vector2.new())
end
end)
----------------------------------------------------------------
-- MAIN GUI
----------------------------------------------------------------
local function buildMain()
local Main = create("Frame", {
Name = "Main", Size = UDim2.fromOffset(0, 0), Position = UDim2.fromScale(0.5, 0.5),
AnchorPoint = Vector2.new(0.5, 0.5), BackgroundColor3 = Color3.fromRGB(14, 14, 20),
BorderSizePixel = 0, ClipsDescendants = true, Parent = Gui,
}, {create("UICorner", {CornerRadius = UDim.new(0, 14)})})
local mainStroke = create("UIStroke", {Thickness = 2, Parent = Main})
onAccent(function(c) mainStroke.Color = c end)
local bg = gradient(Main, Color3.fromRGB(26, 26, 38), Color3.fromRGB(10, 10, 16), 135)
tween(Main, 0.55, {Size = UDim2.fromOffset(620, 420)}, Enum.EasingStyle.Back)
-- animated glow on the border + background
local t0 = tick()
local conn = RunService.RenderStepped:Connect(function()
local t = tick() - t0
bg.Rotation = 135 + math.sin(t * 0.8) * 25
mainStroke.Transparency = 0.15 + (math.sin(t * 2.5) + 1) * 0.15
end)
Main.Destroying:Connect(function() conn:Disconnect() end)
local Top = create("Frame", {
Size = UDim2.new(1, 0, 0, 44), BackgroundColor3 = Color3.fromRGB(9, 9, 14), BorderSizePixel = 0, Parent = Main,
})
local title = create("TextLabel", {
Size = UDim2.new(1, -20, 1, 0), Position = UDim2.fromOffset(16, 0), BackgroundTransparency = 1,
Text = "SILVER HUB V2 • Flee the Facility", Font = Enum.Font.GothamBlack, TextSize = 17,
TextXAlignment = Enum.TextXAlignment.Left, TextColor3 = Color3.new(1, 1, 1), Parent = Top,
})
local tg = create("UIGradient", {
Color = ColorSequence.new({
ColorSequenceKeypoint.new(0, Color3.fromRGB(140, 140, 160)),
ColorSequenceKeypoint.new(0.5, Color3.new(1, 1, 1)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(140, 140, 160)),
}),
Parent = title,
})
local conn2 = RunService.RenderStepped:Connect(function()
tg.Offset = Vector2.new(((tick() * 0.5) % 2) - 1, 0)
end)
Main.Destroying:Connect(function() conn2:Disconnect() end)
local line = create("Frame", {
Size = UDim2.new(1, 0, 0, 3), Position = UDim2.new(0, 0, 1, -3), BorderSizePixel = 0,
BackgroundColor3 = Color3.new(1, 1, 1), Parent = Top,
})
local lg = create("UIGradient", {Parent = line})
onAccent(function(c) lg.Color = ColorSequence.new(Color3.fromRGB(20, 20, 30), c) end)
local conn3 = RunService.RenderStepped:Connect(function() lg.Offset = Vector2.new(math.sin(tick() * 1.5) * 0.4, 0) end)
Main.Destroying:Connect(function() conn3:Disconnect() end)
do -- dragging
local dragging, startPos, startMouse
Top.InputBegan:Connect(function(i)
if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then
dragging, startMouse, startPos = true, i.Position, Main.Position
end
end)
UserInputService.InputChanged:Connect(function(i)
if dragging and (i.UserInputType == Enum.UserInputType.MouseMovement or i.UserInputType == Enum.UserInputType.Touch) then
local d = i.Position - startMouse
Main.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + d.X, startPos.Y.Scale, startPos.Y.Offset + d.Y)
end
end)
UserInputService.InputEnded:Connect(function(i)
if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then dragging = false end
end)
end
local Side = create("Frame", {
Size = UDim2.new(0, 135, 1, -44), Position = UDim2.fromOffset(0, 44),
BackgroundColor3 = Color3.fromRGB(11, 11, 17), BorderSizePixel = 0, Parent = Main,
}, {
create("UIListLayout", {Padding = UDim.new(0, 6), SortOrder = Enum.SortOrder.LayoutOrder}),
create("UIPadding", {PaddingTop = UDim.new(0, 10), PaddingLeft = UDim.new(0, 8), PaddingRight = UDim.new(0, 8)}),
})
local Content = create("Frame", {
Size = UDim2.new(1, -135, 1, -44), Position = UDim2.fromOffset(135, 44), BackgroundTransparency = 1, Parent = Main,
})
local pages, tabButtons = {}, {}
local function selectTab(name)
for n, p in pairs(pages) do p.Visible = (n == name) end
for n, b in pairs(tabButtons) do
tween(b, 0.2, {BackgroundTransparency = (n == name) and 0.05 or 0.75})
end
end
local function newTab(name, order)
local btn = create("TextButton", {
Size = UDim2.new(1, 0, 0, 36), BackgroundColor3 = Color3.fromRGB(40, 40, 55), BackgroundTransparency = 0.75,
Text = name, Font = Enum.Font.GothamSemibold, TextSize = 14, TextColor3 = Color3.new(1, 1, 1),
AutoButtonColor = false, LayoutOrder = order, Parent = Side,
}, {create("UICorner", {CornerRadius = UDim.new(0, 8)})})
onAccent(function(c)
-- selected tab glows with the accent color
btn.BackgroundColor3 = c
end)
local page = create("ScrollingFrame", {
Size = UDim2.new(1, -16, 1, -16), Position = UDim2.fromOffset(8, 8), BackgroundTransparency = 1,
BorderSizePixel = 0, ScrollBarThickness = 3, CanvasSize = UDim2.new(),
AutomaticCanvasSize = Enum.AutomaticSize.Y, Visible = false, Parent = Content,
}, {
create("UIListLayout", {Padding = UDim.new(0, 8), SortOrder = Enum.SortOrder.LayoutOrder}),
create("UIPadding", {PaddingRight = UDim.new(0, 6)}),
})
pages[name], tabButtons[name] = page, btn
btn.MouseEnter:Connect(playHover)
btn.MouseButton1Click:Connect(function() selectTab(name) end)
return page
end
local function header(page, text)
create("TextLabel", {
Size = UDim2.new(1, 0, 0, 20), BackgroundTransparency = 1, Text = text, Font = Enum.Font.GothamBold,
TextSize = 13, TextColor3 = Color3.fromRGB(170, 170, 190), TextXAlignment = Enum.TextXAlignment.Left, Parent = page,
})
end
local function note(page, text, h)
create("TextLabel", {
Size = UDim2.new(1, 0, 0, h or 32), BackgroundTransparency = 1, Text = text, TextWrapped = true,
Font = Enum.Font.Gotham, TextSize = 12, TextColor3 = Color3.fromRGB(130, 130, 150),
TextXAlignment = Enum.TextXAlignment.Left, TextYAlignment = Enum.TextYAlignment.Top, Parent = page,
})
end
local function toggle(page, text, key, cb)
local row = create("TextButton", {
Size = UDim2.new(1, 0, 0, 38), BackgroundColor3 = Color3.fromRGB(28, 28, 40), Text = "",
AutoButtonColor = false, Parent = page,
}, {create("UICorner", {CornerRadius = UDim.new(0, 8)})})
create("TextLabel", {
Size = UDim2.new(1, -70, 1, 0), Position = UDim2.fromOffset(12, 0), BackgroundTransparency = 1, Text = text,
Font = Enum.Font.Gotham, TextSize = 14, TextColor3 = Color3.new(1, 1, 1),
TextXAlignment = Enum.TextXAlignment.Left, Parent = row,
})
local track = create("Frame", {
Size = UDim2.fromOffset(40, 20), Position = UDim2.new(1, -52, 0.5, -10),
BackgroundColor3 = Color3.fromRGB(55, 55, 70), Parent = row,
}, {create("UICorner", {CornerRadius = UDim.new(1, 0)})})
local knob = create("Frame", {
Size = UDim2.fromOffset(16, 16), Position = UDim2.fromOffset(2, 2), BackgroundColor3 = Color3.new(1, 1, 1), Parent = track,
}, {create("UICorner", {CornerRadius = UDim.new(1, 0)})})
local function refresh()
local on = State[key]
tween(knob, 0.15, {Position = on and UDim2.fromOffset(22, 2) or UDim2.fromOffset(2, 2)})
tween(track, 0.15, {BackgroundColor3 = on and Accent or Color3.fromRGB(55, 55, 70)})
end
refreshers[key] = function() refresh() if cb then cb(State[key]) end end
onAccent(refresh)
hoverable(row, {BackgroundColor3 = Color3.fromRGB(28, 28, 40)}, {BackgroundColor3 = Color3.fromRGB(38, 38, 54)})
row.MouseButton1Click:Connect(function()
State[key] = not State[key]
refresh()
if cb then cb(State[key]) end
end)
end
local function slider(page, text, min, max, default, cb, decimals)
decimals = decimals or 0
local mult = 10 ^ decimals
local row = create("Frame", {
Size = UDim2.new(1, 0, 0, 52), BackgroundColor3 = Color3.fromRGB(28, 28, 40), Parent = page,
}, {create("UICorner", {CornerRadius = UDim.new(0, 8)})})
local label = create("TextLabel", {
Size = UDim2.new(1, -20, 0, 22), Position = UDim2.fromOffset(12, 4), BackgroundTransparency = 1,
Text = text .. ": " .. default, Font = Enum.Font.Gotham, TextSize = 14, TextColor3 = Color3.new(1, 1, 1),
TextXAlignment = Enum.TextXAlignment.Left, Parent = row,
})
local bar = create("TextButton", {
Size = UDim2.new(1, -24, 0, 8), Position = UDim2.fromOffset(12, 33), Text = "", AutoButtonColor = false,
BackgroundColor3 = Color3.fromRGB(55, 55, 70), Parent = row,
}, {create("UICorner", {CornerRadius = UDim.new(1, 0)})})
local fill = create("Frame", {
Size = UDim2.fromScale((default - min) / (max - min), 1), BorderSizePixel = 0, Parent = bar,
}, {create("UICorner", {CornerRadius = UDim.new(1, 0)})})
onAccent(function(c) fill.BackgroundColor3 = c end)
bar.MouseEnter:Connect(playHover)
local dragging = false
local function update(x)
local a = math.clamp((x - bar.AbsolutePosition.X) / bar.AbsoluteSize.X, 0, 1)
local v = math.floor((min + (max - min) * a) * mult + 0.5) / mult
fill.Size = UDim2.fromScale(a, 1)
label.Text = text .. ": " .. v
cb(v)
end
bar.InputBegan:Connect(function(i)
if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then
dragging = true
update(i.Position.X)
end
end)
UserInputService.InputChanged:Connect(function(i)
if dragging and (i.UserInputType == Enum.UserInputType.MouseMovement or i.UserInputType == Enum.UserInputType.Touch) then
update(i.Position.X)
end
end)
UserInputService.InputEnded:Connect(function(i)
if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then dragging = false end
end)
end
local function button(page, text, cb)
local b = create("TextButton", {
Size = UDim2.new(1, 0, 0, 36), BackgroundColor3 = Color3.fromRGB(28, 28, 40), Text = text,
Font = Enum.Font.GothamSemibold, TextSize = 14, TextColor3 = Color3.new(1, 1, 1),
AutoButtonColor = false, Parent = page,
}, {create("UICorner", {CornerRadius = UDim.new(0, 8)})})
hoverable(b, {BackgroundColor3 = Color3.fromRGB(28, 28, 40)}, {BackgroundColor3 = Color3.fromRGB(42, 42, 60)})
b.MouseButton1Click:Connect(function() cb(b) end)
return b
end
local function keybind(page, label, onSet, current)
local b
local function txt(k) return label .. ": " .. k.Name .. " (click to change)" end
b = button(page, txt(current()), function()
b.Text = "Press any key..."
local conn
conn = UserInputService.InputBegan:Connect(function(i)
if i.UserInputType == Enum.UserInputType.Keyboard then
onSet(i.KeyCode)
b.Text = txt(i.KeyCode)
conn:Disconnect()
end
end)
end)
end
-- ESP
local esp = newTab("ESP", 1)
header(esp, "PLAYERS")
toggle(esp, "Beast ESP (distance + status)", "BeastESP")
toggle(esp, "Survivor ESP", "SurvivorESP")
header(esp, "OBJECTIVES")
toggle(esp, "Computer ESP (R / Y / G)", "ComputerESP")
toggle(esp, "Exit Gate ESP", "ExitESP")
toggle(esp, "Freeze Pod ESP", "PodESP")
note(esp, "Computers: red = not started, yellow = in progress, green = completed. Exit turns green once every computer is done.", 44)
-- Survivor
local sv = newTab("Survivor", 2)
header(sv, "HACKING")
toggle(sv, "Auto Skill Check", "AutoSkill")
toggle(sv, "No-Fail Hacking", "NoFail")
header(sv, "TEAMWORK")
toggle(sv, "Instant Rescue", "InstantRescue")
slider(sv, "Rescue Range", 6, 40, State.RescueRange, function(v) State.RescueRange = v end)
header(sv, "INTERACTION")
toggle(sv, "Interact Distance Increaser", "InteractBoost")
slider(sv, "Distance Multiplier", 1, 5, State.InteractMult, function(v) State.InteractMult = v end, 1)
note(sv, "Interact boost only affects objects that use Roblox ProximityPrompts.", 32)
-- Beast
local bs = newTab("Beast", 3)
header(bs, "CAPTURE")
toggle(bs, "Auto-Tie to Pod", "AutoTie")
header(bs, "HAMMER")
toggle(bs, "Extended Hammer Reach", "HammerReach")
slider(bs, "Hammer Scale", 1, 3, State.HammerScale, function(v) State.HammerScale = v end, 1)
toggle(bs, "No Attack Cooldown", "NoCooldown")
header(bs, "DOORS")
toggle(bs, "Beast Door Aura", "DoorAura")
-- Misc
local misc = newTab("Misc", 4)
header(misc, "MOVEMENT")
toggle(misc, "WalkSpeed Customizer", "Speed", function(on)
if not on then local h = humanoid() if h then h.WalkSpeed = 16 end end
end)
slider(misc, "Speed", 8, 100, State.SpeedValue, function(v) State.SpeedValue = v end)
toggle(misc, "Noclip (hotkey in Settings)", "NoClip")
toggle(misc, "Infinite Jump", "InfJump")
header(misc, "WORLD")
toggle(misc, "Full Bright", "FullBright", function(on) if not on then restoreLighting() end end)
-- Settings
local set = newTab("Settings", 5)
header(set, "HOTKEYS")
keybind(set, "GUI Toggle", function(k) ToggleKey = k end, function() return ToggleKey end)
keybind(set, "Noclip Toggle", function(k) NoClipKey = k end, function() return NoClipKey end)
header(set, "GUI COLOR")
local presets = {
Color3.fromRGB(110, 200, 255), Color3.fromRGB(255, 80, 80), Color3.fromRGB(80, 255, 140),
Color3.fromRGB(255, 180, 60), Color3.fromRGB(200, 90, 255), Color3.fromRGB(255, 110, 190),
}
local presetRow = create("Frame", {Size = UDim2.new(1, 0, 0, 38), BackgroundTransparency = 1, Parent = set}, {
create("UIListLayout", {FillDirection = Enum.FillDirection.Horizontal, Padding = UDim.new(0, 8)}),
})
for _, c in ipairs(presets) do
local sw = create("TextButton", {
Size = UDim2.fromOffset(34, 34), BackgroundColor3 = c, Text = "", AutoButtonColor = false, Parent = presetRow,
}, {create("UICorner", {CornerRadius = UDim.new(0, 8)})})
hoverable(sw, {Size = UDim2.fromOffset(34, 34)}, {Size = UDim2.fromOffset(38, 38)})
sw.MouseButton1Click:Connect(function() setAccent(c) end)
end
local rgb = {Accent.R * 255, Accent.G * 255, Accent.B * 255}
local function applyRGB() setAccent(Color3.fromRGB(rgb[1], rgb[2], rgb[3])) end
slider(set, "Red", 0, 255, math.floor(rgb[1]), function(v) rgb[1] = v applyRGB() end)
slider(set, "Green", 0, 255, math.floor(rgb[2]), function(v) rgb[2] = v applyRGB() end)
slider(set, "Blue", 0, 255, math.floor(rgb[3]), function(v) rgb[3] = v applyRGB() end)
header(set, "SERVER")
toggle(set, "Anti AFK", "AntiAFK")
button(set, "Rejoin Server", function()
TeleportService:TeleportToPlaceInstance(game.PlaceId, game.JobId, LocalPlayer)
end)
selectTab("ESP")
UserInputService.InputBegan:Connect(function(i, gpe)
if gpe then return end
if i.KeyCode == ToggleKey then
Main.Visible = not Main.Visible
elseif i.KeyCode == NoClipKey then
State.NoClip = not State.NoClip
if refreshers.NoClip then refreshers.NoClip() end
end
end)
end
----------------------------------------------------------------
-- WELCOME POPUP
----------------------------------------------------------------
local function showWelcome()
local overlay = create("Frame", {
Size = UDim2.fromScale(1, 1), BackgroundColor3 = Color3.new(0, 0, 0), BackgroundTransparency = 1, Parent = Gui,
})
tween(overlay, 0.3, {BackgroundTransparency = 0.4})
local box = create("Frame", {
Size = UDim2.fromOffset(0, 0), Position = UDim2.fromScale(0.5, 0.5), AnchorPoint = Vector2.new(0.5, 0.5),
BackgroundColor3 = Color3.fromRGB(16, 16, 22), ClipsDescendants = true, Parent = overlay,
}, {create("UICorner", {CornerRadius = UDim.new(0, 14)})})
local st = create("UIStroke", {Thickness = 2, Parent = box})
onAccent(function(c) st.Color = c end)
tween(box, 0.45, {Size = UDim2.fromOffset(360, 180)}, Enum.EasingStyle.Back)
create("TextLabel", {
Size = UDim2.new(1, 0, 0, 80), Position = UDim2.fromOffset(0, 20), BackgroundTransparency = 1,
Text = "Welcome To Silver Hub!", Font = Enum.Font.GothamBold, TextSize = 26, TextColor3 = Color3.new(1, 1, 1), Parent = box,
})
local ok = create("TextButton", {
Size = UDim2.fromOffset(120, 38), Position = UDim2.new(0.5, -60, 1, -60), Text = "OK",
Font = Enum.Font.GothamBold, TextSize = 16, TextColor3 = Color3.new(0, 0, 0), AutoButtonColor = false, Parent = box,
}, {create("UICorner", {CornerRadius = UDim.new(0, 8)})})
onAccent(function(c) ok.BackgroundColor3 = c end)
ok.MouseEnter:Connect(function() playHover() tween(ok, 0.15, {Size = UDim2.fromOffset(130, 40)}) end)
ok.MouseLeave:Connect(function() tween(ok, 0.15, {Size = UDim2.fromOffset(120, 38)}) end)
ok.MouseButton1Click:Connect(function()
tween(box, 0.3, {Size = UDim2.fromOffset(0, 0)})
tween(overlay, 0.3, {BackgroundTransparency = 1})
task.wait(0.35)
overlay:Destroy()
buildMain()
end)
end
----------------------------------------------------------------
-- FLASHY LOADING SCREEN
----------------------------------------------------------------
local function showLoading()
local alive = true
local conns = {}
local frame = create("Frame", {
Size = UDim2.fromScale(1, 1), BackgroundColor3 = Color3.new(1, 1, 1), ClipsDescendants = true, Parent = Gui,
})
local bgGrad = create("UIGradient", {
Color = ColorSequence.new({
ColorSequenceKeypoint.new(0, Color3.fromRGB(6, 10, 22)),
ColorSequenceKeypoint.new(0.5, Color3.fromRGB(10, 28, 44)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(14, 8, 28)),
}),
Parent = frame,
})
-- Falling data streaks
local function spawnStreak()
task.spawn(function()
local w = math.random(2, 4)
local h = math.random(40, 120)
local s = create("Frame", {
Size = UDim2.fromOffset(w, h), BackgroundColor3 = Accent, BackgroundTransparency = 0.6,
BorderSizePixel = 0, Parent = frame,
})
create("UIGradient", {Transparency = NumberSequence.new(1, 0), Rotation = 90, Parent = s})
while alive do
local x = math.random()
s.Position = UDim2.new(x, 0, -0.2, 0)
local dur = math.random(12, 30) / 10
tween(s, dur, {Position = UDim2.new(x, 0, 1.2, 0)}, Enum.EasingStyle.Linear)
task.wait(dur + math.random() * 0.5)
end
s:Destroy()
end)
end
for _ = 1, 28 do spawnStreak() task.wait(0.03) end
-- Spinning rings around the core
local function ring(sizePx, thickness, speed)
local r = create("Frame", {
Size = UDim2.fromOffset(sizePx, sizePx), Position = UDim2.fromScale(0.5, 0.36),
AnchorPoint = Vector2.new(0.5, 0.5), BackgroundTransparency = 1, Parent = frame,
}, {create("UICorner", {CornerRadius = UDim.new(1, 0)})})
local s = create("UIStroke", {Thickness = thickness, Color = Accent, Parent = r})
local g = create("UIGradient", {
Transparency = NumberSequence.new({
NumberSequenceKeypoint.new(0, 0), NumberSequenceKeypoint.new(0.5, 1), NumberSequenceKeypoint.new(1, 0),
}),
Parent = s,
})
table.insert(conns, RunService.RenderStepped:Connect(function(dt) g.Rotation = (g.Rotation + speed * dt * 60) % 360 end))
end
ring(200, 4, 4)
ring(160, 3, -7)
ring(240, 2, 2)
-- Pulsing diamond core
local core = create("Frame", {
Size = UDim2.fromOffset(70, 70), Position = UDim2.fromScale(0.5, 0.36), AnchorPoint = Vector2.new(0.5, 0.5),
BackgroundColor3 = Accent, Rotation = 45, Parent = frame,
}, {create("UICorner", {CornerRadius = UDim.new(0, 10)})})
local inner = create("Frame", {
Size = UDim2.fromOffset(34, 34), Position = UDim2.fromScale(0.5, 0.36), AnchorPoint = Vector2.new(0.5, 0.5),
BackgroundColor3 = Color3.new(1, 1, 1), Rotation = 45, Parent = frame,
}, {create("UICorner", {CornerRadius = UDim.new(0, 6)})})
-- Scanline
local scan = create("Frame", {
Size = UDim2.new(1, 0, 0, 3), BackgroundColor3 = Accent, BackgroundTransparency = 0.5, BorderSizePixel = 0, Parent = frame,
})
local title = create("TextLabel", {
Size = UDim2.new(1, 0, 0, 56), Position = UDim2.new(0, 0, 0.56, 0), BackgroundTransparency = 1,
Text = "Loading Silver HubV2", Font = Enum.Font.GothamBlack, TextSize = 42, TextColor3 = Color3.new(1, 1, 1), Parent = frame,
})
local tStroke = create("UIStroke", {Thickness = 2, Color = Accent, Transparency = 0.4, Parent = title})
local tGrad = create("UIGradient", {
Color = ColorSequence.new({
ColorSequenceKeypoint.new(0, Color3.fromRGB(110, 110, 135)),
ColorSequenceKeypoint.new(0.5, Color3.new(1, 1, 1)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(110, 110, 135)),
}),
Parent = title,
})
local status = create("TextLabel", {
Size = UDim2.new(1, 0, 0, 24), Position = UDim2.new(0, 0, 0.56, 62), BackgroundTransparency = 1,
Text = "Initializing...", Font = Enum.Font.Gotham, TextSize = 16, TextColor3 = Color3.fromRGB(190, 200, 215), Parent = frame,
})
local barBG = create("Frame", {
Size = UDim2.fromOffset(440, 12), Position = UDim2.new(0.5, -220, 0.56, 100),
BackgroundColor3 = Color3.fromRGB(30, 36, 52), Parent = frame,
}, {create("UICorner", {CornerRadius = UDim.new(1, 0)})})
local barFill = create("Frame", {
Size = UDim2.fromScale(0, 1), BackgroundColor3 = Color3.new(1, 1, 1), BorderSizePixel = 0, Parent = barBG,
}, {create("UICorner", {CornerRadius = UDim.new(1, 0)})})
create("UIGradient", {Color = ColorSequence.new(Accent, Color3.new(1, 1, 1)), Parent = barFill})
local percent = create("TextLabel", {
Size = UDim2.new(1, 0, 0, 22), Position = UDim2.new(0, 0, 0.56, 120), BackgroundTransparency = 1,
Text = "0%", Font = Enum.Font.GothamBold, TextSize = 18, TextColor3 = Color3.new(1, 1, 1), Parent = frame,
})
local t0 = tick()
table.insert(conns, RunService.RenderStepped:Connect(function()
local t = tick() - t0
bgGrad.Rotation = (t * 25) % 360
tGrad.Offset = Vector2.new(((t * 0.7) % 2) - 1, 0)
local pulse = (math.sin(t * 4) + 1) / 2
core.Size = UDim2.fromOffset(60 + pulse * 22, 60 + pulse * 22)
core.Rotation = 45 + t * 60
inner.Rotation = 45 - t * 120
scan.Position = UDim2.new(0, 0, (t * 0.35) % 1, 0)
tStroke.Transparency = 0.2 + pulse * 0.5
end))
local steps = {
{"Scanning facility layout...", 20}, {"Loading ESP modules...", 42},
{"Loading survivor tools...", 64}, {"Loading beast tools...", 84}, {"Ready. Good luck!", 100},
}
local cur = 0
for _, s in ipairs(steps) do
status.Text = s[1]
tween(barFill, 0.7, {Size = UDim2.fromScale(s[2] / 100, 1)})
local from, startT = cur, tick()
while tick() - startT < 0.8 do
cur = math.floor(from + (s[2] - from) * math.min((tick() - startT) / 0.7, 1))
percent.Text = cur .. "%"
task.wait()
end
cur = s[2]
percent.Text = cur .. "%"
end
task.wait(0.2)
local flash = create("Frame", {
Size = UDim2.fromScale(1, 1), BackgroundColor3 = Color3.new(1, 1, 1), BackgroundTransparency = 1, ZIndex = 50, Parent = frame,
})
tween(flash, 0.2, {BackgroundTransparency = 0})
task.wait(0.25)
alive = false
for _, c in ipairs(conns) do c:Disconnect() end
frame:Destroy()
showWelcome()
end
showLoading()Review the source before using it. Executions count successful copies, capped at 10 per user and network per script in 24 hours.
Community discussion
0Start the conversation.


Your community, in one place