
Keyless

-- ██████╗ ██████╗ ██╗ ██╗██╗ ██╗██╗ ██████╗ ███╗ ██╗
-- ██╔═══██╗██╔══██╗██║ ██║██║ ██║██║██╔═══██╗████╗ ██║
-- ██║ ██║██████╔╝██║ ██║██║ ██║██║██║ ██║██╔██╗ ██║
-- ██║ ██║██╔══██╗██║ ██║╚██╗ ██╔╝██║██║ ██║██║╚██╗██║
-- ╚██████╔╝██████╔╝███████╗██║ ╚████╔╝ ██║╚██████╔╝██║ ╚████║
-- v 0.0.1
local TweenService = game:GetService("TweenService")
local Players = game:GetService("Players")
local ReplicatedFirst = game:GetService("ReplicatedFirst")
local Workspace = game:GetService("Workspace")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Lighting = game:GetService("Lighting")
local Player = Players.LocalPlayer
local PlayerGui = Player:WaitForChild("PlayerGui")
if PlayerGui:FindFirstChild("OblivionFramework") then
return
end
local UI_CONFIG = {
Primary = Color3.fromRGB(10, 10, 10),
CardBg = Color3.fromRGB(18, 18, 18),
Border = Color3.fromRGB(32, 32, 32),
Highlight = Color3.fromRGB(255, 255, 255),
Text = Color3.fromRGB(245, 245, 245),
Muted = Color3.fromRGB(120, 120, 125),
Destructive = Color3.fromRGB(255, 80, 80),
SidebarWidth = 72
}
local THEMES = {
Neutral = Color3.fromRGB(150, 150, 150),
Amber = Color3.fromRGB(255, 170, 0),
Blue = Color3.fromRGB(0, 120, 255),
Cyan = Color3.fromRGB(0, 200, 255),
Emerald = Color3.fromRGB(0, 200, 120),
Fuchsia = Color3.fromRGB(200, 0, 255),
Green = Color3.fromRGB(100, 200, 0),
Indigo = Color3.fromRGB(80, 100, 255),
Lime = Color3.fromRGB(150, 255, 0),
Orange = Color3.fromRGB(255, 100, 0),
Pink = Color3.fromRGB(255, 80, 150)
}
local STATES = {
Fly = {Active = false, Speed = 50},
Noclip = false,
HubVisible = true,
CommandPrefix = "ob/",
Settings = {
Appearance = {
UIScale = 1.0,
FontSize = 14,
BlurStrength = 0,
Transparency = 0,
AnimationsEnabled = true,
AccentColor = "Neutral"
},
Notifications = {
Duration = 4,
SoundEnabled = true,
Position = "BottomRight",
SeverityFilter = "All"
},
Controls = {
FlySpeed = 50,
Sensitivity = 1.0,
Keybinds = {
ToggleHub = Enum.KeyCode.RightControl,
Fly = Enum.KeyCode.F,
Noclip = Enum.KeyCode.N
}
},
Performance = {
FPSLimit = 60,
RenderDistance = 1000,
ParticlesEnabled = true,
LowGraphicsMode = false
},
Audio = {
MasterVolume = 0.5,
MusicVolume = 0.5,
Muted = false
},
Privacy = {
ChatVisible = true,
JoinLeaveAlerts = true,
ScreenshotWatermark = false
},
Advanced = {
DebugMode = false,
ExperimentalFeatures = false,
CommandPrefix = "ob/"
},
Accessibility = {
ReducedMotion = false,
HighContrast = false
}
}
}
-- [ Core Systems ] --
local ThemeManager = {}
local Listeners = {}
function ThemeManager.Subscribe(object, property, colorKey)
if not Listeners[colorKey] then Listeners[colorKey] = {} end
table.insert(Listeners[colorKey], {Obj = object, Prop = property})
-- Apply immediately
if colorKey == "Highlight" then object[property] = UI_CONFIG.Highlight
elseif colorKey == "Border" then object[property] = UI_CONFIG.Border end
end
function ThemeManager.Update(key, newColor)
if key == "Highlight" then UI_CONFIG.Highlight = newColor end
if Listeners[key] then
for _, item in ipairs(Listeners[key]) do
if item.Obj then item.Obj[item.Prop] = newColor end
end
end
end
local NotificationSystem = {}
function NotificationSystem.Show(titleText, descText)
local screenGui = PlayerGui:FindFirstChild("OblivionNotifications") or Instance.new("ScreenGui", PlayerGui)
screenGui.Name, screenGui.ResetOnSpawn, screenGui.DisplayOrder = "OblivionNotifications", false, 10
local function updateStack()
local frames = {}
for _, v in ipairs(screenGui:GetChildren()) do
if v:IsA("Frame") and v.Name == "Alert" then table.insert(frames, v) end
end
for i, v in ipairs(frames) do
local targetY = -(20 + ((#frames - i) * 80))
TweenService:Create(v, TweenInfo.new(0.4, Enum.EasingStyle.Quart), {Position = UDim2.new(1, -20, 1, targetY)}):Play()
end
end
local alert = Instance.new("Frame", screenGui)
alert.Name, alert.Size, alert.BackgroundColor3, alert.AnchorPoint = "Alert", UDim2.new(0, 340, 0, 70), Color3.fromRGB(15, 15, 15), Vector2.new(1, 1)
alert.Position, alert.BorderSizePixel = UDim2.new(1, 400, 1, -20), 0
Instance.new("UICorner", alert).CornerRadius = UDim.new(0, 8)
local stroke = Instance.new("UIStroke", alert)
stroke.Color, stroke.Thickness = UI_CONFIG.Border, 1
ThemeManager.Subscribe(stroke, "Color", "Border")
local title = Instance.new("TextLabel", alert)
title.Text, title.Size, title.Position = titleText:upper(), UDim2.new(1, -30, 0, 18), UDim2.new(0, 15, 0, 15)
title.BackgroundTransparency, title.TextColor3, title.TextSize = 1, UI_CONFIG.Text, 13
title.Font, title.TextXAlignment = Enum.Font.BuilderSansBold, Enum.TextXAlignment.Left
local desc = Instance.new("TextLabel", alert)
desc.Text, desc.Size, desc.Position = descText, UDim2.new(1, -30, 0, 30), UDim2.new(0, 15, 0, 30)
desc.BackgroundTransparency, desc.TextColor3, desc.TextSize = 1, UI_CONFIG.Muted, 13
desc.Font, desc.TextXAlignment = Enum.Font.BuilderSans, Enum.TextXAlignment.Left
desc.TextWrapped = true
updateStack()
task.delay(4, function()
if alert and alert.Parent then
local shrink = TweenService:Create(alert, TweenInfo.new(0.4, Enum.EasingStyle.Quart), {Position = UDim2.new(1, 400, 1, alert.Position.Y.Offset), BackgroundTransparency = 1})
shrink:Play()
shrink.Completed:Connect(function()
alert:Destroy()
updateStack()
end)
end
end)
end
-- [ Command Registry ] --
local EXE = {}
local noclipConnection = nil
function EXE.Speed(val)
local char = Player.Character
if char and char:FindFirstChildOfClass("Humanoid") then
char:FindFirstChildOfClass("Humanoid").WalkSpeed = tonumber(val) or 16
NotificationSystem.Show("Performance", "Speed set to " .. (tonumber(val) or 16))
end
end
function EXE.Jump(val)
local char = Player.Character
if char and char:FindFirstChildOfClass("Humanoid") then
local hum = char:FindFirstChildOfClass("Humanoid")
hum.UseJumpPower = true
hum.JumpPower = tonumber(val) or 50
NotificationSystem.Show("Performance", "JumpPower set to " .. (tonumber(val) or 50))
end
end
function EXE.Fly()
STATES.Fly.Active = not STATES.Fly.Active
NotificationSystem.Show("Movement", "Flight Mode: " .. (STATES.Fly.Active and "Enabled" or "Disabled"))
if STATES.Fly.Active then
task.spawn(function()
local char = Player.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
if not root then STATES.Fly.Active = false return end
local att = Instance.new("Attachment", root)
att.Name = "OblivionFlyAtt"
local lv = Instance.new("LinearVelocity", root)
lv.Name = "OblivionFlyLV"
lv.Attachment0 = att
lv.MaxForce = 1e6
lv.VectorVelocity = Vector3.new(0, 0, 0)
lv.VelocityConstraintMode = Enum.VelocityConstraintMode.Vector
lv.RelativeTo = Enum.ActuatorRelativeTo.World
local ao = Instance.new("AlignOrientation", root)
ao.Name = "OblivionFlyAO"
ao.Attachment0 = att
ao.Mode = Enum.OrientationAlignmentMode.OneAttachment
ao.MaxTorque = 1e6
ao.Responsiveness = 200
while STATES.Fly.Active and char and char.Parent do
local camera = Workspace.CurrentCamera
local move = Vector3.new(0, 0, 0)
if UserInputService:IsKeyDown(Enum.KeyCode.W) then move = move + camera.CFrame.LookVector end
if UserInputService:IsKeyDown(Enum.KeyCode.S) then move = move - camera.CFrame.LookVector end
if UserInputService:IsKeyDown(Enum.KeyCode.A) then move = move - camera.CFrame.RightVector end
if UserInputService:IsKeyDown(Enum.KeyCode.D) then move = move + camera.CFrame.RightVector end
if UserInputService:IsKeyDown(Enum.KeyCode.Space) then move = move + Vector3.new(0, 1, 0) end
if UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) then move = move - Vector3.new(0, 1, 0) end
lv.VectorVelocity = move * STATES.Fly.Speed
ao.CFrame = camera.CFrame
RunService.RenderStepped:Wait()
end
if att then att:Destroy() end
if lv then lv:Destroy() end
if ao then ao:Destroy() end
end)
end
end
function EXE.Noclip()
STATES.Noclip = not STATES.Noclip
NotificationSystem.Show("Physics", "Noclip: " .. (STATES.Noclip and "Enabled" or "Disabled"))
if STATES.Noclip then
local function setNoclip(char)
for _, v in pairs(char:GetDescendants()) do
if v:IsA("BasePart") then v.CanCollide = false end
end
if noclipConnection then noclipConnection:Disconnect() end
noclipConnection = char.DescendantAdded:Connect(function(v)
if v:IsA("BasePart") then v.CanCollide = false end
end)
end
if Player.Character then setNoclip(Player.Character) end
task.spawn(function()
while STATES.Noclip do
if Player.Character then
for _, v in pairs(Player.Character:GetDescendants()) do
if v:IsA("BasePart") then v.CanCollide = false end
end
end
RunService.Stepped:Wait()
end
end)
else
if noclipConnection then noclipConnection:Disconnect(); noclipConnection = nil end
end
end
function EXE.PlayMusic(id)
local remote = ReplicatedStorage:FindFirstChild("PlayRemote") or ReplicatedStorage:FindFirstChild("MusicRemote") or ReplicatedStorage:FindFirstChild("Music")
if remote and remote:IsA("RemoteEvent") then
remote:FireServer("Play", id)
NotificationSystem.Show("Audio", "Requesting playback ID: " .. id)
else
NotificationSystem.Show("Error", "No music remote detected")
end
end
function EXE.GiveTool(name)
local tool = ReplicatedStorage:FindFirstChild(name, true) or Lighting:FindFirstChild(name, true)
if tool and tool:IsA("Tool") then
local clone = tool:Clone()
clone.Parent = Player.Backpack
clone.Parent = Player.Character
NotificationSystem.Show("Inventory", "Obtained " .. name)
else
NotificationSystem.Show("Error", "Tool not found: " .. name)
end
end
function EXE.Fling(targetName)
local char = Player.Character
if not char then
NotificationSystem.Show("Error", "Character not found")
return
end
local handle = char:FindFirstChildOfClass("Tool")
if not handle or not handle:FindFirstChild("Handle") then
NotificationSystem.Show("Error", "Equip a tool with a handle first!")
return
end
handle = handle.Handle
local function GetPlayerFromPartialName(partial)
partial = partial:lower()
local matches = {}
for _, player in ipairs(Players:GetPlayers()) do
if player.Name:lower():sub(1, #partial) == partial then
table.insert(matches, player)
end
end
if #matches == 1 then
return matches[1]
else
return nil
end
end
local targetPlayer = GetPlayerFromPartialName(targetName)
if not targetPlayer or not targetPlayer.Character or not targetPlayer.Character:FindFirstChild("HumanoidRootPart") then
NotificationSystem.Show("Error", "Player not found or multiple matches")
return
end
NotificationSystem.Show("Fling", "Flinging " .. targetPlayer.DisplayName .. "...")
if char.Humanoid.RigType == Enum.HumanoidRigType.R15 then
if char:FindFirstChild("RightHand") then
char.RightHand:Destroy()
end
else
if char:FindFirstChild("Right Arm") then
char["Right Arm"]:Destroy()
end
end
if handle:FindFirstChild("Mesh") then
handle.Mesh:Destroy()
end
handle.RotVelocity = Vector3.new(0, 999999, 0)
Workspace.CurrentCamera.CameraSubject = targetPlayer.Character
local tp = coroutine.create(function()
while task.wait() do
handle.CFrame = targetPlayer.Character.HumanoidRootPart.CFrame
end
end)
coroutine.resume(tp)
task.wait(2)
coroutine.close(tp)
Workspace.CurrentCamera.CameraSubject = char.Humanoid
NotificationSystem.Show("Fling", "Flung " .. targetPlayer.DisplayName)
end
function EXE.Kill(targetName)
local char = Player.Character
if not char then
NotificationSystem.Show("Error", "Character not found")
return
end
if not Player.Backpack:FindFirstChildOfClass("Tool") and not char:FindFirstChildOfClass("Tool") then
NotificationSystem.Show("Error", "Need a tool in inventory!")
return
end
local function findPlayer(name)
name = name:lower()
for _, p in pairs(Players:GetPlayers()) do
if p ~= Player and p.Name:lower():sub(1, #name) == name then
return p
end
end
return nil
end
local targetPlayer = findPlayer(targetName)
if not targetPlayer or not targetPlayer.Character then
NotificationSystem.Show("Error", "Player not found")
return
end
local tchar = targetPlayer.Character
local thrp = tchar:FindFirstChild("HumanoidRootPart")
if not thrp then
NotificationSystem.Show("Error", "Target HumanoidRootPart not found")
return
end
NotificationSystem.Show("Kill", "Eliminating " .. targetPlayer.DisplayName .. "...")
local hum = char:FindFirstChildOfClass("Humanoid")
local hrp = char:FindFirstChild("HumanoidRootPart")
local cam = Workspace.CurrentCamera
local anim = char:FindFirstChild("Animate")
if not hum or not hrp or not anim then
NotificationSystem.Show("Error", "Missing character components")
return
end
local clone = hum:Clone()
clone.Parent = char
hum:Destroy()
cam.CameraSubject = char
anim.Disabled = true
anim.Disabled = false
if Player.Backpack:FindFirstChildOfClass("Tool") then
clone:EquipTool(Player.Backpack:FindFirstChildOfClass("Tool"))
else
clone:UnequipTools()
if Player.Backpack:FindFirstChildOfClass("Tool") then
clone:EquipTool(Player.Backpack:FindFirstChildOfClass("Tool"))
end
end
local tool = char:FindFirstChildOfClass("Tool")
if not tool or not tool:FindFirstChild("Handle") then
NotificationSystem.Show("Error", "Tool handle not found")
return
end
task.wait(0.2)
thrp.CFrame = tool.Handle.CFrame
tool.AncestryChanged:Wait()
hrp.CFrame = CFrame.new(Vector3.new(0, Workspace.FallenPartsDestroyHeight + 1, 0))
NotificationSystem.Show("Kill", "Eliminated " .. targetPlayer.DisplayName)
end
-- [ Handlers ] --
local function onRespawn(char)
STATES.Fly.Active = false
STATES.Noclip = false
if noclipConnection then noclipConnection:Disconnect(); noclipConnection = nil end
end
Player.CharacterAdded:Connect(onRespawn)
Player.Chatted:Connect(function(msg)
local args = msg:split(" ")
local cmd = args[1]:lower()
local prefix = STATES.CommandPrefix
if cmd == prefix .. "reset" then
if Player.Character then Player.Character:BreakJoints() end
elseif cmd == prefix .. "speed" then
EXE.Speed(args[2])
elseif cmd == prefix .. "jumpower" then
EXE.Jump(args[2])
elseif cmd == prefix .. "fly" then
EXE.Fly()
elseif cmd == prefix .. "noclip" then
EXE.Noclip()
elseif cmd == prefix .. "fling" then
if args[2] then
EXE.Fling(args[2])
else
NotificationSystem.Show("Error", "Usage: " .. prefix .. "fling <playername>")
end
elseif cmd == prefix .. "kill" then
if args[2] then
EXE.Kill(args[2])
else
NotificationSystem.Show("Error", "Usage: " .. prefix .. "kill <playername>")
end
elseif cmd == prefix .. "prefix" then
if args[2] and args[2] ~= "" then
STATES.CommandPrefix = args[2]
STATES.Settings.Advanced.CommandPrefix = args[2]
NotificationSystem.Show("Settings", "Command prefix changed to: " .. args[2])
else
NotificationSystem.Show("Info", "Current prefix: " .. prefix)
end
end
end)
-- [ UI Construction ] --
local function makeDraggable(obj)
local dragging, dragInput, dragStart, startPos
obj.InputBegan:Connect(function(input)
if (input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch) and not UserInputService:GetFocusedTextBox() then
dragging = true
dragStart = input.Position
startPos = obj.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then dragging = false end
end)
end
end)
obj.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then dragInput = input end
end)
UserInputService.InputChanged:Connect(function(input)
if input == dragInput and dragging then
local delta = input.Position - dragStart
obj.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end
end)
end
local function createHub()
local screen = Instance.new("ScreenGui", PlayerGui)
screen.Name, screen.ResetOnSpawn = "OblivionFramework", false
screen.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
local main = Instance.new("Frame", screen)
main.Name, main.BackgroundColor3, main.Position = "Main", UI_CONFIG.Primary, UDim2.new(0.5, -283, 0.5, -165)
main.Size, main.BorderSizePixel = UDim2.new(0, 567, 0, 331), 0
Instance.new("UICorner", main).CornerRadius = UDim.new(0, 12)
local mainStroke = Instance.new("UIStroke", main)
mainStroke.Color, mainStroke.Thickness = UI_CONFIG.Border, 1
ThemeManager.Subscribe(mainStroke, "Color", "Border")
makeDraggable(main)
local sidebar = Instance.new("Frame", main)
sidebar.Name, sidebar.Size, sidebar.BackgroundTransparency = "Sidebar", UDim2.new(0, UI_CONFIG.SidebarWidth, 1, 0), 1
local sep = Instance.new("Frame", main)
sep.Size, sep.Position, sep.BackgroundColor3 = UDim2.new(0, 1, 1, 0), UDim2.new(0, UI_CONFIG.SidebarWidth, 0, 0), UI_CONFIG.Border
sep.BorderSizePixel = 0
ThemeManager.Subscribe(sep, "BackgroundColor3", "Border")
local container = Instance.new("Frame", main)
container.Name, container.Size, container.Position = "Content", UDim2.new(1, -UI_CONFIG.SidebarWidth, 1, 0), UDim2.new(0, UI_CONFIG.SidebarWidth, 0, 0)
container.BackgroundTransparency = 1
local navItems = {}
local function createNav(name, iconId, rectOffset, rectSize, pos)
local btn = Instance.new("ImageButton", sidebar)
btn.Name, btn.BackgroundTransparency, btn.Size, btn.Position = name, 1, UDim2.new(0, 38, 0, 38), pos
btn.Image, btn.ImageRectOffset, btn.ImageRectSize, btn.ImageTransparency = iconId, rectOffset, rectSize, 0.6
local page = Instance.new("Frame", container)
page.Name, page.Size, page.BackgroundTransparency, page.Visible = name, UDim2.new(1, 0, 1, 0), 1, false
btn.MouseEnter:Connect(function() TweenService:Create(btn, TweenInfo.new(0.2), {ImageTransparency = 0}):Play() end)
btn.MouseLeave:Connect(function() if not page.Visible then TweenService:Create(btn, TweenInfo.new(0.2), {ImageTransparency = 0.6}):Play() end end)
btn.MouseButton1Click:Connect(function()
for _, item in pairs(navItems) do item.Page.Visible = false; TweenService:Create(item.Btn, TweenInfo.new(0.3), {ImageTransparency = 0.6}):Play() end
page.Visible = true; TweenService:Create(btn, TweenInfo.new(0.3), {ImageTransparency = 0}):Play()
end)
navItems[name] = {Btn = btn, Page = page}
return page
end
local home = createNav("Home", "rbxassetid://6764432408", Vector2.new(150, 800), Vector2.new(50, 50), UDim2.new(0.5, -19, 0.08, 0))
local cmdPage = createNav("Commands", "rbxassetid://8445470189", Vector2.new(404, 604), Vector2.new(96, 96), UDim2.new(0.5, -19, 0.38, 0))
local setPage = createNav("Settings", "rbxassetid://8445471332", Vector2.new(604, 404), Vector2.new(96, 96), UDim2.new(0.5, -19, 0.68, 0))
-- [ Components ] --
local UI = {}
function UI.Header(parent, text)
local h = Instance.new("TextLabel", parent)
h.Text, h.Size, h.Name = text:upper(), UDim2.new(1, 0, 0, 25), "Header"
h.BackgroundTransparency, h.TextColor3, h.TextSize, h.Font = 1, UI_CONFIG.Muted, 11, Enum.Font.BuilderSansBold
h.TextXAlignment = Enum.TextXAlignment.Left
local pad = Instance.new("UIPadding", h)
pad.PaddingLeft = UDim.new(0, 10)
end
function UI.Toggle(parent, name, default, fn)
local frame = Instance.new("Frame", parent)
frame.Size, frame.BackgroundColor3 = UDim2.new(1, 0, 0, 50), UI_CONFIG.CardBg
Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 8)
local stroke = Instance.new("UIStroke", frame)
stroke.Color, stroke.Thickness = UI_CONFIG.Border, 1
ThemeManager.Subscribe(stroke, "Color", "Border")
local t = Instance.new("TextLabel", frame)
t.Text, t.Size, t.Position = name, UDim2.new(1, -70, 0, 50), UDim2.new(0, 15, 0, 0)
t.BackgroundTransparency, t.TextColor3, t.TextSize, t.Font = 1, UI_CONFIG.Text, 14, Enum.Font.BuilderSansBold
t.TextXAlignment = Enum.TextXAlignment.Left
local pill = Instance.new("TextButton", frame)
pill.Name, pill.Text, pill.Size, pill.Position = "Pill", "", UDim2.new(0, 42, 0, 22), UDim2.new(1, -57, 0.5, -11)
pill.BackgroundColor3 = default and Color3.fromRGB(45, 45, 45) or Color3.fromRGB(30, 30, 30)
pill.AutoButtonColor = false
Instance.new("UICorner", pill).CornerRadius = UDim.new(1, 0)
local knob = Instance.new("Frame", pill)
knob.Name, knob.Size, knob.Position = "Knob", UDim2.new(0, 16, 0, 16), UDim2.new(0, default and 23 or 3, 0.5, -8)
knob.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
Instance.new("UICorner", knob).CornerRadius = UDim.new(1, 0)
local active = default
pill.MouseButton1Click:Connect(function()
active = not active
local targetPos = active and UDim2.new(0, 23, 0.5, -8) or UDim2.new(0, 3, 0.5, -8)
local targetColor = active and Color3.fromRGB(45, 45, 45) or Color3.fromRGB(30, 30, 30)
TweenService:Create(knob, TweenInfo.new(0.25, Enum.EasingStyle.Quart), {Position = targetPos}):Play()
TweenService:Create(pill, TweenInfo.new(0.25, Enum.EasingStyle.Quart), {BackgroundColor3 = targetColor}):Play()
fn(active)
end)
end
function UI.ThemeOption(parent, name, color, isSelect, fn)
local btn = Instance.new("TextButton", parent)
btn.Name, btn.Text, btn.Size = name, "", UDim2.new(1, 0, 0, 45)
btn.BackgroundTransparency = 1
local circ = Instance.new("Frame", btn)
circ.Size, circ.Position = UDim2.new(0, 18, 0, 18), UDim2.new(0, 10, 0.5, -9)
circ.BackgroundColor3 = color
Instance.new("UICorner", circ).CornerRadius = UDim.new(1, 0)
local t = Instance.new("TextLabel", btn)
t.Text, t.Size, t.Position = name, UDim2.new(1, -80, 1, 0), UDim2.new(0, 40, 0, 0)
t.BackgroundTransparency, t.TextColor3, t.TextSize, t.Font = 1, UI_CONFIG.Text, 14, Enum.Font.BuilderSansBold
t.TextXAlignment = Enum.TextXAlignment.Left
if isSelect then
local check = Instance.new("TextLabel", btn)
check.Text, check.Size, check.Position = "✓", UDim2.new(0, 30, 1, 0), UDim2.new(1, -40, 0, 0)
check.BackgroundTransparency, check.TextColor3, check.TextSize, check.Font = 1, UI_CONFIG.Highlight, 16, Enum.Font.BuilderSansBold
check.TextXAlignment = Enum.TextXAlignment.Right
ThemeManager.Subscribe(check, "TextColor3", "Highlight")
end
btn.MouseButton1Click:Connect(fn)
end
function UI.ProgressBar(parent, text)
local container = Instance.new("Frame", parent)
container.Name, container.Size, container.BackgroundTransparency = "ProgressCont", UDim2.new(1, 0, 0, 45), 1
local lbl = Instance.new("TextLabel", container)
lbl.Text, lbl.Size, lbl.Position = text, UDim2.new(1, 0, 0, 15), UDim2.new(0, 5, 0, 0)
lbl.BackgroundTransparency, lbl.TextColor3, lbl.TextSize, lbl.Font = 1, UI_CONFIG.Muted, 11, Enum.Font.BuilderSansBold
lbl.TextXAlignment = Enum.TextXAlignment.Left
local track = Instance.new("Frame", container)
track.Name, track.Size, track.Position = "Track", UDim2.new(1, -10, 0, 4), UDim2.new(0, 5, 0, 25)
track.BackgroundColor3 = UI_CONFIG.Border
Instance.new("UICorner", track).CornerRadius = UDim.new(1, 0)
ThemeManager.Subscribe(track, "BackgroundColor3", "Border")
local bar = Instance.new("Frame", track)
bar.Name, bar.Size, bar.BackgroundColor3 = "Bar", UDim2.new(0.5, 0, 1, 0), UI_CONFIG.Highlight
Instance.new("UICorner", bar).CornerRadius = UDim.new(1, 0)
ThemeManager.Subscribe(bar, "BackgroundColor3", "Highlight")
return bar
end
function UI.Slider(parent, name, min, max, default, fn)
local frame = Instance.new("Frame", parent)
frame.Size, frame.BackgroundColor3 = UDim2.new(1, 0, 0, 60), UI_CONFIG.CardBg
Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 8)
local stroke = Instance.new("UIStroke", frame)
stroke.Color, stroke.Thickness = UI_CONFIG.Border, 1
ThemeManager.Subscribe(stroke, "Color", "Border")
local t = Instance.new("TextLabel", frame)
t.Text, t.Size, t.Position = name, UDim2.new(1, -80, 0, 20), UDim2.new(0, 15, 0, 8)
t.BackgroundTransparency, t.TextColor3, t.TextSize, t.Font = 1, UI_CONFIG.Text, 14, Enum.Font.BuilderSansBold
t.TextXAlignment = Enum.TextXAlignment.Left
local valueLabel = Instance.new("TextLabel", frame)
valueLabel.Text, valueLabel.Size, valueLabel.Position = tostring(default), UDim2.new(0, 60, 0, 20), UDim2.new(1, -75, 0, 8)
valueLabel.BackgroundTransparency, valueLabel.TextColor3, valueLabel.TextSize, valueLabel.Font = 1, UI_CONFIG.Highlight, 14, Enum.Font.BuilderSansBold
valueLabel.TextXAlignment = Enum.TextXAlignment.Right
ThemeManager.Subscribe(valueLabel, "TextColor3", "Highlight")
local track = Instance.new("Frame", frame)
track.Name, track.Size, track.Position = "Track", UDim2.new(1, -30, 0, 4), UDim2.new(0, 15, 0, 38)
track.BackgroundColor3 = UI_CONFIG.Border
Instance.new("UICorner", track).CornerRadius = UDim.new(1, 0)
ThemeManager.Subscribe(track, "BackgroundColor3", "Border")
local fill = Instance.new("Frame", track)
fill.Name, fill.Size, fill.BackgroundColor3 = "Fill", UDim2.new((default - min) / (max - min), 0, 1, 0), UI_CONFIG.Highlight
fill.BorderSizePixel = 0
Instance.new("UICorner", fill).CornerRadius = UDim.new(1, 0)
ThemeManager.Subscribe(fill, "BackgroundColor3", "Highlight")
local knob = Instance.new("Frame", track)
knob.Name, knob.Size, knob.AnchorPoint = "Knob", UDim2.new(0, 12, 0, 12), Vector2.new(0.5, 0.5)
knob.Position = UDim2.new((default - min) / (max - min), 0, 0.5, 0)
knob.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
Instance.new("UICorner", knob).CornerRadius = UDim.new(1, 0)
local dragging = false
local currentValue = default
local ContextActionService = game:GetService("ContextActionService")
local function updateSlider(input)
local relativeX = math.clamp((input.Position.X - track.AbsolutePosition.X) / track.AbsoluteSize.X, 0, 1)
currentValue = math.floor(min + (max - min) * relativeX)
valueLabel.Text = tostring(currentValue)
knob.Position = UDim2.new(relativeX, 0, 0.5, 0)
fill.Size = UDim2.new(relativeX, 0, 1, 0)
fn(currentValue)
end
local function disableMovement()
ContextActionService:BindAction("DisableMovement", function() return Enum.ContextActionResult.Sink end, false, Enum.PlayerActions.CharacterForward, Enum.PlayerActions.CharacterBackward, Enum.PlayerActions.CharacterLeft, Enum.PlayerActions.CharacterRight, Enum.PlayerActions.CharacterJump)
end
local function enableMovement()
ContextActionService:UnbindAction("DisableMovement")
end
track.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
disableMovement()
updateSlider(input)
end
end)
track.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = false
enableMovement()
end
end)
UserInputService.InputChanged:Connect(function(input)
if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
updateSlider(input)
end
end)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
if dragging then
dragging = false
enableMovement()
end
end
end)
end
function UI.Dropdown(parent, name, options, default, fn)
local frame = Instance.new("Frame", parent)
frame.Size, frame.BackgroundColor3 = UDim2.new(1, 0, 0, 50), UI_CONFIG.CardBg
Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 8)
local stroke = Instance.new("UIStroke", frame)
stroke.Color, stroke.Thickness = UI_CONFIG.Border, 1
ThemeManager.Subscribe(stroke, "Color", "Border")
local t = Instance.new("TextLabel", frame)
t.Text, t.Size, t.Position = name, UDim2.new(0.5, -15, 1, 0), UDim2.new(0, 15, 0, 0)
t.BackgroundTransparency, t.TextColor3, t.TextSize, t.Font = 1, UI_CONFIG.Text, 14, Enum.Font.BuilderSansBold
t.TextXAlignment = Enum.TextXAlignment.Left
local dropdown = Instance.new("TextButton", frame)
dropdown.Name, dropdown.Text, dropdown.Size, dropdown.Position = "Dropdown", default, UDim2.new(0.5, -15, 0, 30), UDim2.new(0.5, 0, 0.5, -15)
dropdown.BackgroundColor3, dropdown.TextColor3, dropdown.Font, dropdown.TextSize = UI_CONFIG.Border, UI_CONFIG.Text, Enum.Font.BuilderSansBold, 13
dropdown.AutoButtonColor = false
Instance.new("UICorner", dropdown).CornerRadius = UDim.new(0, 6)
ThemeManager.Subscribe(dropdown, "BackgroundColor3", "Border")
local arrow = Instance.new("TextLabel", dropdown)
arrow.Text, arrow.Size, arrow.Position = "▼", UDim2.new(0, 20, 1, 0), UDim2.new(1, -25, 0, 0)
arrow.BackgroundTransparency, arrow.TextColor3, arrow.TextSize, arrow.Font = 1, UI_CONFIG.Muted, 10, Enum.Font.BuilderSansBold
arrow.TextXAlignment = Enum.TextXAlignment.Right
local menu = Instance.new("Frame", frame)
menu.Name, menu.Size, menu.Position, menu.Visible = "Menu", UDim2.new(0.5, -15, 0, #options * 30), UDim2.new(0.5, 0, 1, 5), false
menu.BackgroundColor3, menu.BorderSizePixel, menu.ZIndex = UI_CONFIG.CardBg, 0, 10
Instance.new("UICorner", menu).CornerRadius = UDim.new(0, 6)
local menuStroke = Instance.new("UIStroke", menu)
menuStroke.Color = UI_CONFIG.Border
ThemeManager.Subscribe(menuStroke, "Color", "Border")
local menuLayout = Instance.new("UIListLayout", menu)
menuLayout.SortOrder = Enum.SortOrder.LayoutOrder
for _, option in ipairs(options) do
local optionBtn = Instance.new("TextButton", menu)
optionBtn.Name, optionBtn.Text, optionBtn.Size = option, option, UDim2.new(1, 0, 0, 30)
optionBtn.BackgroundColor3, optionBtn.TextColor3, optionBtn.Font, optionBtn.TextSize = UI_CONFIG.CardBg, UI_CONFIG.Text, Enum.Font.BuilderSans, 12
optionBtn.AutoButtonColor = false
optionBtn.MouseEnter:Connect(function()
optionBtn.BackgroundColor3 = UI_CONFIG.Border
end)
optionBtn.MouseLeave:Connect(function()
optionBtn.BackgroundColor3 = UI_CONFIG.CardBg
end)
optionBtn.MouseButton1Click:Connect(function()
dropdown.Text = option
menu.Visible = false
fn(option)
end)
end
dropdown.MouseButton1Click:Connect(function()
menu.Visible = not menu.Visible
end)
end
function UI.Button(parent, text, fn)
local btn = Instance.new("TextButton", parent)
btn.Name, btn.Text, btn.Size = text, text, UDim2.new(1, 0, 0, 40)
btn.BackgroundColor3, btn.TextColor3, btn.Font, btn.TextSize = UI_CONFIG.Border, UI_CONFIG.Text, Enum.Font.BuilderSansBold, 14
btn.AutoButtonColor = false
Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 8)
ThemeManager.Subscribe(btn, "BackgroundColor3", "Border")
btn.MouseEnter:Connect(function()
TweenService:Create(btn, TweenInfo.new(0.2), {BackgroundColor3 = UI_CONFIG.Highlight}):Play()
end)
btn.MouseLeave:Connect(function()
TweenService:Create(btn, TweenInfo.new(0.2), {BackgroundColor3 = UI_CONFIG.Border}):Play()
end)
btn.MouseButton1Click:Connect(fn)
end
function UI.Category(parent, name, fn)
local btn = Instance.new("TextButton", parent)
btn.Name, btn.Text, btn.Size = name, "", UDim2.new(1, 0, 0, 50)
btn.BackgroundColor3 = UI_CONFIG.CardBg
btn.AutoButtonColor = false
Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 8)
local stroke = Instance.new("UIStroke", btn)
stroke.Color, stroke.Thickness = UI_CONFIG.Border, 1
ThemeManager.Subscribe(stroke, "Color", "Border")
local t = Instance.new("TextLabel", btn)
t.Text, t.Size, t.Position = name, UDim2.new(1, -60, 1, 0), UDim2.new(0, 15, 0, 0)
t.BackgroundTransparency, t.TextColor3, t.TextSize, t.Font = 1, UI_CONFIG.Text, 14, Enum.Font.BuilderSansBold
t.TextXAlignment = Enum.TextXAlignment.Left
local arrow = Instance.new("TextLabel", btn)
arrow.Text, arrow.Size, arrow.Position = "→", UDim2.new(0, 30, 1, 0), UDim2.new(1, -40, 0, 0)
arrow.BackgroundTransparency, arrow.TextColor3, arrow.TextSize, arrow.Font = 1, UI_CONFIG.Muted, 18, Enum.Font.BuilderSansBold
arrow.TextXAlignment = Enum.TextXAlignment.Right
btn.MouseEnter:Connect(function() TweenService:Create(stroke, TweenInfo.new(0.2), {Color = UI_CONFIG.Highlight}):Play() end)
btn.MouseLeave:Connect(function() TweenService:Create(stroke, TweenInfo.new(0.2), {Color = UI_CONFIG.Border}):Play() end)
btn.MouseButton1Click:Connect(fn)
end
function UI.Command(parent, name, desc, fn)
local frame = Instance.new("Frame", parent)
frame.Size, frame.BackgroundColor3 = UDim2.new(1, 0, 0, 50), UI_CONFIG.CardBg
Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 8)
local stroke = Instance.new("UIStroke", frame)
stroke.Color, stroke.Thickness = UI_CONFIG.Border, 1
ThemeManager.Subscribe(stroke, "Color", "Border")
local t = Instance.new("TextLabel", frame)
t.Text, t.Size, t.Position = name, UDim2.new(1, -120, 0, 20), UDim2.new(0, 15, 0, 8)
t.BackgroundTransparency, t.TextColor3, t.TextSize, t.Font = 1, UI_CONFIG.Text, 14, Enum.Font.BuilderSansBold
t.TextXAlignment = Enum.TextXAlignment.Left
local d = Instance.new("TextLabel", frame)
d.Text, d.Size, d.Position = desc, UDim2.new(1, -120, 0, 15), UDim2.new(0, 15, 0, 26)
d.BackgroundTransparency, d.TextColor3, d.TextSize, d.Font = 1, UI_CONFIG.Muted, 12, Enum.Font.BuilderSans
d.TextXAlignment = Enum.TextXAlignment.Left
local run = Instance.new("TextButton", frame)
run.Text, run.Size, run.Position = "Run", UDim2.new(0, 80, 0, 30), UDim2.new(1, -95, 0.5, -15)
run.BackgroundColor3, run.TextColor3, run.Font, run.TextSize = UI_CONFIG.Border, UI_CONFIG.Text, Enum.Font.BuilderSansBold, 13
ThemeManager.Subscribe(run, "BackgroundColor3", "Border")
Instance.new("UICorner", run).CornerRadius = UDim.new(0, 6)
run.MouseButton1Click:Connect(fn)
end
-- [ Layouts ] --
local cmdScroll = Instance.new("ScrollingFrame", cmdPage)
cmdScroll.Size, cmdScroll.Position = UDim2.new(1, -40, 1, -40), UDim2.new(0, 20, 0, 20)
cmdScroll.BackgroundTransparency, cmdScroll.BorderSizePixel, cmdScroll.ScrollBarThickness = 1, 0, 0
local cmdLayout = Instance.new("UIListLayout", cmdScroll)
cmdLayout.Padding, cmdLayout.SortOrder = UDim.new(0, 8), Enum.SortOrder.LayoutOrder
UI.Command(cmdScroll, "Fly", "Smooth flight mechanics", function() EXE.Fly() end)
UI.Command(cmdScroll, "Speed", "Modify movement velocity", function() EXE.Speed(50) end)
UI.Command(cmdScroll, "JumpPower", "Adjust jump height", function() EXE.Jump(100) end)
UI.Command(cmdScroll, "Noclip", "Disable collision physics", function() EXE.Noclip() end)
UI.Command(cmdScroll, "Reset", "Restore character state", function() Player.Character:BreakJoints() end)
UI.Command(cmdScroll, "Music Player", "Play audio via ID", function() EXE.PlayMusic(1837834515) end)
UI.Command(cmdScroll, "Grab Tool", "Attempts to find and give a tool", function() EXE.GiveTool("Sword") end)
UI.Command(cmdScroll, "Fling", "Tool-based fling (equip tool first)", function() NotificationSystem.Show("Info", "Equip tool, then: " .. STATES.CommandPrefix .. "fling <name>") end)
UI.Command(cmdScroll, "Kill", "Eliminate player with tool (needs tool)", function() NotificationSystem.Show("Info", "Have tool, then: " .. STATES.CommandPrefix .. "kill <name>") end)
-- Settings Navigation
local breadcrumb = Instance.new("Frame", setPage)
breadcrumb.Name, breadcrumb.Size, breadcrumb.Position = "Breadcrumb", UDim2.new(1, -40, 0, 30), UDim2.new(0, 20, 0, 15)
breadcrumb.BackgroundTransparency = 1
local bLayout = Instance.new("UIListLayout", breadcrumb)
bLayout.FillDirection, bLayout.SortOrder, bLayout.Padding = Enum.FillDirection.Horizontal, Enum.SortOrder.LayoutOrder, UDim.new(0, 8)
bLayout.VerticalAlignment = Enum.VerticalAlignment.Center
local setViews = Instance.new("Frame", setPage)
setViews.Size, setViews.Position, setViews.BackgroundTransparency = UDim2.new(1, 0, 1, -45), UDim2.new(0, 0, 0, 45), 1
local currentView = nil
local history = {}
local function switchView(name, frame)
if currentView then currentView.Visible = false end
currentView = frame
currentView.Visible = true
for _, v in pairs(breadcrumb:GetChildren()) do if v:IsA("GuiObject") then v:Destroy() end end
table.insert(history, {Name = name, View = frame})
for i, h in ipairs(history) do
local isActive = (i == #history)
local btn = Instance.new("TextButton", breadcrumb)
btn.Text, btn.Size, btn.BackgroundTransparency = h.Name, UDim2.new(0, 0, 1, 0), 1
btn.TextColor3, btn.TextSize, btn.Font = isActive and UI_CONFIG.Text or UI_CONFIG.Muted, 13, Enum.Font.BuilderSansBold
btn.AutomaticSize = Enum.AutomaticSize.X
if not isActive then
btn.MouseButton1Click:Connect(function()
for j = #history, i + 1, -1 do table.remove(history, j) end
local last = history[#history]
table.remove(history, #history)
switchView(last.Name, last.View)
end)
local sep = Instance.new("TextLabel", breadcrumb)
sep.Text, sep.Size, sep.TextColor3, sep.BackgroundTransparency = ">", UDim2.new(0, 10, 1, 0), UI_CONFIG.Muted, 1
end
end
end
local function createView(name)
local sc = Instance.new("ScrollingFrame", setViews)
sc.Name, sc.Size, sc.Position, sc.Visible = name, UDim2.new(1, -40, 1, -20), UDim2.new(0, 20, 0, 0), false
sc.BackgroundTransparency, sc.BorderSizePixel, sc.ScrollBarThickness = 1, 0, 0
local ly = Instance.new("UIListLayout", sc)
ly.Padding, ly.SortOrder = UDim.new(0, 8), Enum.SortOrder.LayoutOrder
return sc
end
local mainSet = createView("Settings")
local appSet = createView("Appearance")
local notSet = createView("Notifications")
local advSet = createView("Advanced")
local ctrlSet = createView("Controls")
local perfSet = createView("Performance")
local audioSet = createView("Audio")
local privSet = createView("Privacy & Safety")
local accSet = createView("Accessibility")
local lanSet = createView("Language & Region")
-- Populate Settings
UI.Category(mainSet, "Appearance", function() switchView("Appearance", appSet) end)
UI.Category(mainSet, "Accessibility", function() switchView("Accessibility", accSet) end)
UI.Category(mainSet, "Advanced", function() switchView("Advanced", advSet) end)
UI.Header(appSet, "Display")
UI.Slider(appSet, "UI Scale", 50, 200, 100, function(val)
STATES.Settings.Appearance.UIScale = val / 100
main.Size = UDim2.new(0, 567 * (val / 100), 0, 331 * (val / 100))
end)
UI.Slider(appSet, "Font Size", 10, 20, 14, function(val)
STATES.Settings.Appearance.FontSize = val
NotificationSystem.Show("Appearance", "Font size: " .. val .. " (requires reload)")
end)
UI.Slider(appSet, "Blur Strength", 0, 10, 0, function(val)
STATES.Settings.Appearance.BlurStrength = val
local blur = main:FindFirstChild("BlurEffect") or Instance.new("BlurEffect", main)
blur.Size = val
end)
UI.Slider(appSet, "Transparency", 0, 100, 0, function(val)
STATES.Settings.Appearance.Transparency = val
main.BackgroundTransparency = val / 100
end)
UI.Header(appSet, "Behavior")
UI.Toggle(appSet, "Animations", true, function(val)
STATES.Settings.Appearance.AnimationsEnabled = val
end)
UI.Header(appSet, "Theme")
local themeList = createView("ThemeSelector")
UI.Category(appSet, "Select Theme", function() switchView("Theme", themeList) end)
local currentTheme = "Neutral"
local function refreshThemes()
for _, v in pairs(themeList:GetChildren()) do if v:IsA("GuiObject") then v:Destroy() end end
local ly = Instance.new("UIListLayout", themeList)
ly.Padding, ly.SortOrder = UDim.new(0, 5), Enum.SortOrder.Name
for name, color in pairs(THEMES) do
UI.ThemeOption(themeList, name, color, currentTheme == name, function()
currentTheme = name
ThemeManager.Update("Highlight", color)
refreshThemes()
NotificationSystem.Show("Theme", "Applied " .. name .. " theme")
end)
end
end
refreshThemes()
UI.Header(notSet, "Status")
UI.ProgressBar(notSet, "Memory Usage")
UI.ProgressBar(notSet, "Network Latency")
UI.Header(lanSet, "Localization")
UI.Category(lanSet, "System Language", function() NotificationSystem.Show("Info", "Switching to Roblox System Defaults") end)
-- Notifications Settings
UI.Header(notSet, "Notifications")
UI.Slider(notSet, "Alert Duration", 2, 10, 4, function(val)
STATES.Settings.Notifications.Duration = val
NotificationSystem.Show("Settings", "Notification duration: " .. val .. "s")
end)
UI.Toggle(notSet, "Sound Enabled", true, function(val)
STATES.Settings.Notifications.SoundEnabled = val
end)
UI.Dropdown(notSet, "Position", {"BottomRight", "BottomLeft", "TopRight", "TopLeft"}, "BottomRight", function(val)
STATES.Settings.Notifications.Position = val
NotificationSystem.Show("Settings", "Position: " .. val)
end)
UI.Dropdown(notSet, "Severity Filter", {"All", "Warnings", "Errors"}, "All", function(val)
STATES.Settings.Notifications.SeverityFilter = val
end)
UI.Header(notSet, "Status")
UI.ProgressBar(notSet, "Memory Usage")
UI.ProgressBar(notSet, "Network Latency")
-- Controls Settings
UI.Header(ctrlSet, "Movement")
UI.Slider(ctrlSet, "Fly Speed", 10, 200, 50, function(val)
STATES.Settings.Controls.FlySpeed = val
STATES.Fly.Speed = val
end)
UI.Slider(ctrlSet, "Sensitivity", 10, 300, 100, function(val)
STATES.Settings.Controls.Sensitivity = val / 100
end)
UI.Header(ctrlSet, "Keybinds")
UI.Category(ctrlSet, "Toggle Hub: RightControl", function()
NotificationSystem.Show("Info", "Keybind remapping coming soon")
end)
-- Performance Settings
UI.Header(perfSet, "Graphics")
UI.Slider(perfSet, "FPS Limit", 30, 144, 60, function(val)
STATES.Settings.Performance.FPSLimit = val
NotificationSystem.Show("Performance", "FPS limited to " .. val)
end)
UI.Slider(perfSet, "Render Distance", 100, 2000, 1000, function(val)
STATES.Settings.Performance.RenderDistance = val
end)
UI.Toggle(perfSet, "Particles Enabled", true, function(val)
STATES.Settings.Performance.ParticlesEnabled = val
end)
UI.Toggle(perfSet, "Low Graphics Mode", false, function(val)
STATES.Settings.Performance.LowGraphicsMode = val
if val then
Lighting.GlobalShadows = false
Lighting.FogEnd = 500
else
Lighting.GlobalShadows = true
Lighting.FogEnd = 100000
end
end)
-- Audio Settings
UI.Header(audioSet, "Volume")
UI.Slider(audioSet, "Master Volume", 0, 100, 50, function(val)
STATES.Settings.Audio.MasterVolume = val / 100
game:GetService("SoundService").Volume = val / 100
end)
UI.Slider(audioSet, "Music Volume", 0, 100, 50, function(val)
STATES.Settings.Audio.MusicVolume = val / 100
end)
UI.Toggle(audioSet, "Mute All", false, function(val)
STATES.Settings.Audio.Muted = val
game:GetService("SoundService").Volume = val and 0 or STATES.Settings.Audio.MasterVolume
end)
-- Privacy Settings
UI.Header(privSet, "Visibility")
UI.Toggle(privSet, "Chat Visible", true, function(val)
STATES.Settings.Privacy.ChatVisible = val
local chat = PlayerGui:FindFirstChild("Chat")
if chat then chat.Enabled = val end
end)
UI.Toggle(privSet, "Join/Leave Alerts", true, function(val)
STATES.Settings.Privacy.JoinLeaveAlerts = val
end)
UI.Toggle(privSet, "Screenshot Watermark", false, function(val)
STATES.Settings.Privacy.ScreenshotWatermark = val
end)
-- Accessibility Settings
UI.Header(accSet, "Motion")
UI.Toggle(accSet, "Reduced Motion", false, function(val)
STATES.Settings.Accessibility.ReducedMotion = val
NotificationSystem.Show("Accessibility", "Reduced motion: " .. (val and "ON" or "OFF"))
end)
UI.Header(accSet, "Visual")
UI.Toggle(accSet, "High Contrast", false, function(val)
STATES.Settings.Accessibility.HighContrast = val
if val then
UI_CONFIG.Border = Color3.fromRGB(255, 255, 255)
ThemeManager.Update("Border", UI_CONFIG.Border)
else
UI_CONFIG.Border = Color3.fromRGB(32, 32, 32)
ThemeManager.Update("Border", UI_CONFIG.Border)
end
end)
-- Advanced Settings
UI.Header(advSet, "Developer")
UI.Toggle(advSet, "Debug Mode", false, function(val)
STATES.Settings.Advanced.DebugMode = val
NotificationSystem.Show("Advanced", "Debug mode: " .. (val and "ON" or "OFF"))
end)
UI.Toggle(advSet, "Experimental Features", false, function(val)
STATES.Settings.Advanced.ExperimentalFeatures = val
end)
UI.Header(advSet, "Commands")
function UI.TextInput(parent, name, default, fn)
local frame = Instance.new("Frame", parent)
frame.Size, frame.BackgroundColor3 = UDim2.new(1, 0, 0, 50), UI_CONFIG.CardBg
Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 8)
local stroke = Instance.new("UIStroke", frame)
stroke.Color, stroke.Thickness = UI_CONFIG.Border, 1
ThemeManager.Subscribe(stroke, "Color", "Border")
local t = Instance.new("TextLabel", frame)
t.Text, t.Size, t.Position = name, UDim2.new(0.4, -15, 1, 0), UDim2.new(0, 15, 0, 0)
t.BackgroundTransparency, t.TextColor3, t.TextSize, t.Font = 1, UI_CONFIG.Text, 14, Enum.Font.BuilderSansBold
t.TextXAlignment = Enum.TextXAlignment.Left
local input = Instance.new("TextBox", frame)
input.Name, input.Text, input.Size, input.Position = "Input", default, UDim2.new(0.6, -30, 0, 30), UDim2.new(0.4, 0, 0.5, -15)
input.BackgroundColor3, input.TextColor3, input.Font, input.TextSize = UI_CONFIG.Border, UI_CONFIG.Text, Enum.Font.BuilderSansBold, 13
input.PlaceholderText = default
Instance.new("UICorner", input).CornerRadius = UDim.new(0, 6)
ThemeManager.Subscribe(input, "BackgroundColor3", "Border")
input.FocusLost:Connect(function(enterPressed)
if enterPressed and input.Text ~= "" then
fn(input.Text)
end
end)
end
UI.TextInput(advSet, "Command Prefix", STATES.CommandPrefix, function(val)
STATES.CommandPrefix = val
STATES.Settings.Advanced.CommandPrefix = val
NotificationSystem.Show("Advanced", "Command prefix set to: " .. val)
end)
UI.Header(advSet, "Actions")
UI.Button(advSet, "Reload UI", function()
NotificationSystem.Show("Advanced", "Reloading UI...")
task.wait(0.5)
screen:Destroy()
createHub()
end)
UI.Button(advSet, "Reset All Settings", function()
NotificationSystem.Show("Advanced", "Settings reset to defaults")
STATES.Settings.Appearance.UIScale = 1.0
STATES.Settings.Appearance.FontSize = 14
STATES.Settings.Appearance.BlurStrength = 0
STATES.Settings.Appearance.Transparency = 0
STATES.CommandPrefix = "ob/"
STATES.Settings.Advanced.CommandPrefix = "ob/"
end)
switchView("Settings", mainSet)
-- Home Tab Profile
local pArea = Instance.new("Frame", home)
pArea.Size, pArea.Position, pArea.BackgroundTransparency = UDim2.new(1, 0, 0, 90), UDim2.new(0, 0, 0, 20), 1
local pImg = Instance.new("ImageLabel", pArea)
pImg.Size, pImg.Position = UDim2.new(0, 48, 0, 48), UDim2.new(0.5, -24, 0, 0)
pImg.BackgroundTransparency, pImg.Image = 1, "https://www.roblox.com/headshot-thumbnail/image?userId=" .. Player.UserId .. "&width=150&height=150&format=png"
Instance.new("UICorner", pImg).CornerRadius = UDim.new(1, 0)
local pName = Instance.new("TextLabel", pArea)
pName.Text, pName.Size, pName.Position = Player.DisplayName, UDim2.new(1, 0, 0, 20), UDim2.new(0, 0, 0, 55)
pName.BackgroundTransparency, pName.TextColor3, pName.TextSize, pName.Font = 1, UI_CONFIG.Text, 15, Enum.Font.BuilderSansBold
local function createCard(parent, cardTitle, cardSub, pos, size)
local c = Instance.new("Frame", parent)
c.Name, c.Size, c.Position, c.BackgroundColor3 = "Card", size, pos, UI_CONFIG.CardBg
Instance.new("UICorner", c).CornerRadius = UDim.new(0, 10)
local s = Instance.new("UIStroke", c); s.Color, s.Thickness = UI_CONFIG.Border, 1
ThemeManager.Subscribe(s, "Color", "Border")
local h = Instance.new("Frame", c)
h.Name, h.Size, h.BackgroundTransparency = "Header", UDim2.new(1, 0, 0, 68), 1
local t = Instance.new("TextLabel", h)
t.Text, t.Size, t.Position = cardTitle, UDim2.new(1, -36, 0, 22), UDim2.new(0, 18, 0, 15)
t.BackgroundTransparency, t.TextColor3, t.TextSize, t.Font = 1, UI_CONFIG.Text, 16, Enum.Font.BuilderSansBold
t.TextXAlignment = Enum.TextXAlignment.Left
local st = Instance.new("TextLabel", h)
st.Text, st.Size, st.Position = cardSub, UDim2.new(1, -36, 0, 18), UDim2.new(0, 18, 0, 37)
st.BackgroundTransparency, st.TextColor3, st.TextSize, st.Font = 1, UI_CONFIG.Muted, 13, Enum.Font.BuilderSans
st.TextXAlignment = Enum.TextXAlignment.Left
local l = Instance.new("Frame", h)
l.Size, l.Position, l.BackgroundColor3 = UDim2.new(1, 0, 0, 1), UDim2.new(0, 0, 1, 0), UI_CONFIG.Border
l.BorderSizePixel = 0
ThemeManager.Subscribe(l, "BackgroundColor3", "Border")
local b = Instance.new("Frame", c)
b.Name, b.Size, b.Position, b.BackgroundTransparency = "Body", UDim2.new(1, 0, 1, -68), UDim2.new(0, 0, 0, 68), 1
return b
end
local sBody = createCard(home, "Server Statistics", "Live data for the current instance.", UDim2.new(0, 25, 0, 115), UDim2.new(1, -50, 0, 150))
local function addRow(parent, rowName, rowVal, pos)
local r = Instance.new("Frame", parent)
r.Size, r.Position, r.BackgroundTransparency = UDim2.new(1, -36, 0, 28), pos, 1
local lt = Instance.new("TextLabel", r)
lt.Text, lt.Size = rowName, UDim2.new(0.5, 0, 1, 0)
lt.BackgroundTransparency, lt.TextColor3, lt.TextSize, lt.Font = 1, UI_CONFIG.Text, 12, Enum.Font.BuilderSans
lt.TextXAlignment = Enum.TextXAlignment.Left
local rt = Instance.new("TextLabel", r)
rt.Text, rt.Size, rt.Position = rowVal, UDim2.new(0.5, 0, 1, 0), UDim2.new(0.5, 0, 0, 0)
rt.BackgroundTransparency, rt.TextColor3, rt.TextSize, rt.Font = 1, UI_CONFIG.Text, 12, Enum.Font.BuilderSansBold
rt.TextXAlignment = Enum.TextXAlignment.Right
return rt
end
local pCount = addRow(sBody, "Players count", #Players:GetPlayers(), UDim2.new(0, 18, 0, 15))
local uTime = addRow(sBody, "Server uptime", "0 minutes", UDim2.new(0, 18, 0, 48))
Players.PlayerAdded:Connect(function() pCount.Text = #Players:GetPlayers() end)
Players.PlayerRemoving:Connect(function() pCount.Text = #Players:GetPlayers() end)
local function formatTime(seconds)
local h = math.floor(seconds / 3600)
local m = math.floor((seconds % 3600) / 60)
local parts = {}
if h > 0 then table.insert(parts, h .. " hour" .. (h ~= 1 and "s" or "")) end
if m > 0 then table.insert(parts, m .. " minute" .. (m ~= 1 and "s" or "")) end
return #parts > 0 and table.concat(parts, ", ") or "0 minutes"
end
task.spawn(function()
while task.wait(60) do if uTime and uTime.Parent then uTime.Text = formatTime(math.floor(Workspace.DistributedGameTime)) end end
end)
uTime.Text = formatTime(math.floor(Workspace.DistributedGameTime))
-- Init
navItems.Home.Page.Visible = true
navItems.Home.Btn.ImageTransparency = 0
UserInputService.InputBegan:Connect(function(input, gpe)
if not gpe and input.KeyCode == Enum.KeyCode.RightControl then
STATES.HubVisible = not STATES.HubVisible
screen.Enabled = STATES.HubVisible
end
end)
end
local function boot()
ReplicatedFirst:RemoveDefaultLoadingScreen()
local screen = Instance.new("ScreenGui", PlayerGui)
screen.Name, screen.IgnoreGuiInset, screen.ResetOnSpawn = "OblivionLoad", true, false
local box = Instance.new("Frame", screen)
box.Size, box.Position, box.AnchorPoint = UDim2.new(0, 360, 0, 180), UDim2.new(0.5, 0, 0.5, 0), Vector2.new(0.5, 0.5)
box.BackgroundColor3, box.BackgroundTransparency = Color3.fromRGB(8, 8, 8), 0
Instance.new("UICorner", box).CornerRadius = UDim.new(0, 14)
local stroke = Instance.new("UIStroke", box); stroke.Color = UI_CONFIG.Border
local lbl = Instance.new("TextLabel", box)
lbl.Text, lbl.Size, lbl.Position = "OBLIVION", UDim2.new(1, 0, 0, 50), UDim2.new(0, 0, 0, 50)
lbl.BackgroundTransparency, lbl.TextColor3, lbl.TextSize, lbl.Font = 1, UI_CONFIG.Text, 34, Enum.Font.BuilderSansExtraBold
local shell = Instance.new("Frame", box)
shell.Size, shell.Position, shell.AnchorPoint, shell.BackgroundColor3 = UDim2.new(0, 260, 0, 2), UDim2.new(0.5, 0, 0.8, 0), Vector2.new(0.5, 0.5), UI_CONFIG.Border
Instance.new("UICorner", shell).CornerRadius = UDim.new(1, 0)
local bar = Instance.new("Frame", shell)
bar.Size, bar.BackgroundColor3 = UDim2.new(0, 0, 1, 0), UI_CONFIG.Highlight
Instance.new("UICorner", bar).CornerRadius = UDim.new(1, 0)
task.wait(1)
local move = TweenService:Create(bar, TweenInfo.new(2.5, Enum.EasingStyle.Quart), {Size = UDim2.new(1, 0, 1, 0)})
move:Play()
move.Completed:Connect(function() task.wait(0.5); screen:Destroy(); createHub() end)
end
task.spawn(boot)
its good, however i feel you need to add a few more things.
@SirPwnsAlot alright tell me it and i fix it
@OpenSourceGUY Ok first add credits so people don't steal it and call it theirs and then add an "-" button and x button and then add more features and anything of your choice idk
oh yeah and also add more tabs such as require scripts for backdoored games and FE/Admin gui's if you want
k
i cant do require stuff i think
can you give me credits on the fling part? You almost completely copied my fling without crediting me
@Automated_Account sorry but also the fling doesnt work and i took the graffti spam thing so yeah my fault i would credit you in credits in settings tab but this not gotta get updated soon