--!strict -- ============================================================ -- ADMIN HUB v1 · Release! -- Made by n00xc (Roblox and ScriptBlox) ============================================================ local Players = game:GetService("Players") local UIS = game:GetService("UserInputService") local RunService = game:GetService("RunService") local Tween = game:GetService("TweenService") local Lighting = game:GetService("Lighting") local TeleportSvc = game:GetService("TeleportService") local LP = Players.LocalPlayer local PG = LP:WaitForChild("PlayerGui") -- ============================================================ -- THEME -- ============================================================ local Theme = { Accent = Color3.fromRGB(96, 165, 250), Accent2 = Color3.fromRGB(147, 51, 234), BgTop = Color3.fromRGB(22, 22, 32), BgBottom = Color3.fromRGB(14, 14, 22), Header = Color3.fromRGB(28, 28, 40), Sidebar = Color3.fromRGB(18, 18, 28), Card = Color3.fromRGB(32, 32, 46), CardHi = Color3.fromRGB(44, 44, 62), Text = Color3.fromRGB(238, 238, 248), Dim = Color3.fromRGB(148, 148, 168), Btn = Color3.fromRGB(38, 38, 54), BtnHi = Color3.fromRGB(52, 52, 72), Success = Color3.fromRGB(52, 211, 153), Danger = Color3.fromRGB(248, 113, 113), Warn = Color3.fromRGB(251, 191, 36), } local BG_TRANSPARENCY = 0.15 -- ============================================================ -- DEFAULTS -- ============================================================ local DEFAULTS = { Speed = 16, Jump = 50, Size = 1, Hip = 2, Health = 100, MaxHealth = 100, FlySpeed = 60, Fov = 70, Gravity = 196.2, Time = 14, Fog = 100000, Sprint = 32, MinZoom = 0.5, MaxZoom = 128, } -- ============================================================ -- STATE -- ============================================================ local state = { noclip = false, infJump = false, fly = false, sprint = false, fullbright = false, frozenCam = false, flyUp = false, flyDown = false, flySpeed = DEFAULTS.FlySpeed, sprintSpeed= DEFAULTS.Sprint, lastSpeed = DEFAULTS.Speed, lastJump = DEFAULTS.Jump, lastHip = DEFAULTS.Hip, lastSize = DEFAULTS.Size, lastHealth = DEFAULTS.Health, lastMaxHealth = DEFAULTS.MaxHealth, fullbrightSnap = nil, } local connections = {} local function track(c) table.insert(connections, c) return c end -- ============================================================ -- TWEEN HELPER -- ============================================================ local function tween(obj, props, dur) Tween:Create(obj, TweenInfo.new(dur or 0.16, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), props):Play() end local function addHover(btn, base, hover) btn.MouseEnter:Connect(function() tween(btn, {BackgroundColor3 = hover}) end) btn.MouseLeave:Connect(function() tween(btn, {BackgroundColor3 = base}) end) end -- ============================================================ -- CHARACTER -- ============================================================ local char, humanoid, hrp local applyNoclip, startFly, stopFly, applyFullbright, setFreeze local function setupChar(c) char = c humanoid = c:WaitForChild("Humanoid") hrp = c:WaitForChild("HumanoidRootPart", 5) task.wait(0.2) if not (humanoid and humanoid.Parent) then return end humanoid.WalkSpeed = state.lastSpeed if humanoid.UseJumpPower then humanoid.JumpPower = state.lastJump else humanoid.JumpHeight = state.lastJump end humanoid.HipHeight = state.lastHip humanoid.MaxHealth = state.lastMaxHealth humanoid.Health = state.lastHealth if math.abs(state.lastSize - 1) > 0.01 then pcall(function() c:ScaleTo(state.lastSize) end) end if state.noclip and applyNoclip then applyNoclip(true) end end -- ============================================================ -- GUI ROOT -- ============================================================ local gui = Instance.new("ScreenGui") gui.Name = "AdminHub" gui.ResetOnSpawn = false gui.IgnoreGuiInset = true gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling gui.Parent = PG local panel = Instance.new("Frame") panel.Name = "Panel" panel.Size = UDim2.fromOffset(660, 480) panel.Position = UDim2.new(0, 40, 0, 80) panel.BackgroundColor3 = Color3.new(1, 1, 1) -- gradient handles actual color panel.BackgroundTransparency = BG_TRANSPARENCY panel.BorderSizePixel = 0 panel.Active = true panel.Parent = gui Instance.new("UICorner", panel).CornerRadius = UDim.new(0, 14) local panelGrad = Instance.new("UIGradient") panelGrad.Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, Theme.BgTop), ColorSequenceKeypoint.new(1, Theme.BgBottom), }) panelGrad.Rotation = 135 panelGrad.Parent = panel local panelStroke = Instance.new("UIStroke", panel) panelStroke.Color = Theme.Accent panelStroke.Thickness = 1.5 panelStroke.Transparency = 0.55 -- Header (drag handle + window buttons) local HEADER_H = 46 local header = Instance.new("Frame") header.Name = "Header" header.Size = UDim2.new(1, 0, 0, HEADER_H) header.Position = UDim2.new(0, 0, 0, 0) header.BackgroundColor3 = Theme.Header header.BackgroundTransparency = 0.05 header.BorderSizePixel = 0 header.ZIndex = 2 header.Parent = panel Instance.new("UICorner", header).CornerRadius = UDim.new(0, 14) -- Square off the bottom of the header local headerBottomFix = Instance.new("Frame") headerBottomFix.Size = UDim2.new(1, 0, 0, 16) headerBottomFix.Position = UDim2.new(0, 0, 1, -16) headerBottomFix.BackgroundColor3 = Theme.Header headerBottomFix.BackgroundTransparency = 0.05 headerBottomFix.BorderSizePixel = 0 headerBottomFix.ZIndex = 3 headerBottomFix.Parent = header -- Accent line at the very top of the header local accentLine = Instance.new("Frame") accentLine.Size = UDim2.new(1, -24, 0, 2) accentLine.Position = UDim2.new(0, 12, 0, 0) accentLine.BackgroundColor3 = Theme.Accent accentLine.BorderSizePixel = 0 accentLine.ZIndex = 5 accentLine.Parent = header Instance.new("UICorner", accentLine).CornerRadius = UDim.new(1, 0) -- Drag handle = transparent TextButton sized to the title area (excludes buttons) local dragHandle = Instance.new("TextButton") dragHandle.Size = UDim2.new(1, -110, 1, 0) dragHandle.Position = UDim2.new(0, 0, 0, 0) dragHandle.BackgroundTransparency = 1 dragHandle.Text = "" dragHandle.AutoButtonColor = false dragHandle.ZIndex = 4 dragHandle.Parent = header local titleLbl = Instance.new("TextLabel") titleLbl.Size = UDim2.new(1, -110, 1, 0) titleLbl.Position = UDim2.fromOffset(20, 0) titleLbl.BackgroundTransparency = 1 titleLbl.Font = Enum.Font.GothamBold titleLbl.TextSize = 15 titleLbl.TextXAlignment = Enum.TextXAlignment.Left titleLbl.TextColor3 = Theme.Text titleLbl.Text = "◆ ADMIN HUB" titleLbl.ZIndex = 5 titleLbl.Parent = header local tagLbl = Instance.new("TextLabel") tagLbl.Size = UDim2.new(1, -110, 0, 12) tagLbl.Position = UDim2.new(0, 20, 0, 28) tagLbl.BackgroundTransparency = 1 tagLbl.Font = Enum.Font.Gotham tagLbl.TextSize = 10 tagLbl.TextXAlignment = Enum.TextXAlignment.Left tagLbl.TextColor3 = Theme.Dim tagLbl.Text = "by n00xc" tagLbl.ZIndex = 5 tagLbl.Parent = header local function makeWinBtn(txt, xoff, col) local b = Instance.new("TextButton") b.Size = UDim2.fromOffset(30, 26) b.Position = UDim2.new(1, xoff, 0, 10) b.BackgroundColor3 = col or Theme.Btn b.BorderSizePixel = 0 b.Font = Enum.Font.GothamBold b.TextSize = 13 b.TextColor3 = Theme.Text b.Text = txt b.AutoButtonColor = false b.ZIndex = 6 b.Parent = header Instance.new("UICorner", b).CornerRadius = UDim.new(0, 6) addHover(b, col or Theme.Btn, col and Color3.fromRGB(220, 90, 90) or Theme.BtnHi) return b end local minBtn = makeWinBtn("–", -74) local closeBtn = makeWinBtn("✕", -40, Theme.Danger) -- Sidebar local SIDEBAR_W = 152 local sidebar = Instance.new("Frame") sidebar.Name = "Sidebar" sidebar.Size = UDim2.new(0, SIDEBAR_W, 1, -(HEADER_H + 26)) sidebar.Position = UDim2.new(0, 0, 0, HEADER_H) sidebar.BackgroundColor3 = Theme.Sidebar sidebar.BackgroundTransparency = 0.15 sidebar.BorderSizePixel = 0 sidebar.Parent = panel local sideScroll = Instance.new("ScrollingFrame") sideScroll.Size = UDim2.fromScale(1, 1) sideScroll.BackgroundTransparency = 1 sideScroll.BorderSizePixel = 0 sideScroll.ScrollBarThickness = 3 sideScroll.ScrollBarImageColor3 = Theme.Accent sideScroll.ScrollBarImageTransparency = 0.7 sideScroll.CanvasSize = UDim2.new() sideScroll.AutomaticCanvasSize = Enum.AutomaticSize.Y sideScroll.Parent = sidebar local sideLayout = Instance.new("UIListLayout") sideLayout.Padding = UDim.new(0, 4) sideLayout.SortOrder = Enum.SortOrder.LayoutOrder sideLayout.Parent = sideScroll local sidePad = Instance.new("UIPadding") sidePad.PaddingTop = UDim.new(0, 10) sidePad.PaddingBottom = UDim.new(0, 10) sidePad.PaddingLeft = UDim.new(0, 8) sidePad.PaddingRight = UDim.new(0, 8) sidePad.Parent = sideScroll -- Content local content = Instance.new("Frame") content.Name = "Content" content.Size = UDim2.new(1, -SIDEBAR_W, 1, -(HEADER_H + 26)) content.Position = UDim2.new(0, SIDEBAR_W, 0, HEADER_H) content.BackgroundTransparency = 1 content.Parent = panel -- Footer local FOOTER_H = 26 local footer = Instance.new("Frame") footer.Size = UDim2.new(1, 0, 0, FOOTER_H) footer.Position = UDim2.new(0, 0, 1, -FOOTER_H) footer.BackgroundColor3 = Theme.Header footer.BackgroundTransparency = 0.1 footer.BorderSizePixel = 0 footer.ZIndex = 2 footer.Parent = panel Instance.new("UICorner", footer).CornerRadius = UDim.new(0, 14) -- Square off the top of the footer local footerTopFix = Instance.new("Frame") footerTopFix.Size = UDim2.new(1, 0, 0, 16) footerTopFix.Position = UDim2.new(0, 0, 0, 0) footerTopFix.BackgroundColor3 = Theme.Header footerTopFix.BackgroundTransparency = 0.1 footerTopFix.BorderSizePixel = 0 footerTopFix.ZIndex = 3 footerTopFix.Parent = footer local statusLbl = Instance.new("TextLabel") statusLbl.Size = UDim2.new(0.5, -24, 1, 0) statusLbl.Position = UDim2.fromOffset(16, 0) statusLbl.BackgroundTransparency = 1 statusLbl.Font = Enum.Font.Gotham statusLbl.TextSize = 11 statusLbl.TextXAlignment = Enum.TextXAlignment.Left statusLbl.TextColor3 = Theme.Dim statusLbl.Text = "Ready." statusLbl.ZIndex = 4 statusLbl.Parent = footer local creditLbl = Instance.new("TextLabel") creditLbl.Size = UDim2.new(0.5, -16, 1, 0) creditLbl.Position = UDim2.new(0.5, 0, 0, 0) creditLbl.BackgroundTransparency = 1 creditLbl.Font = Enum.Font.Gotham creditLbl.TextSize = 11 creditLbl.TextXAlignment = Enum.TextXAlignment.Right creditLbl.TextColor3 = Theme.Dim creditLbl.Text = "made by n00xc (Roblox and ScriptBlox)" creditLbl.ZIndex = 4 creditLbl.Parent = footer local statusToken = 0 local function setStatus(txt) statusToken += 1 local my = statusToken statusLbl.Text = txt task.delay(3, function() if statusToken == my then statusLbl.Text = "Ready." end end) end -- ============================================================ -- GLOBAL DRAG STATE (sliders) + INPUT ENDED cleanup -- ============================================================ local activeDrag = nil track(UIS.InputChanged:Connect(function(input) if not activeDrag then return end if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then activeDrag(input) end end)) track(UIS.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then activeDrag = nil -- clear fly hold states if the input ended anywhere state.flyUp = false state.flyDown = false end end)) -- ============================================================ -- BUILDERS -- ============================================================ local function makePage(parent) local sf = Instance.new("ScrollingFrame") sf.Size = UDim2.fromScale(1, 1) sf.BackgroundTransparency = 1 sf.BorderSizePixel = 0 sf.ScrollBarThickness = 5 sf.ScrollBarImageColor3 = Theme.Accent sf.ScrollBarImageTransparency = 0.5 sf.CanvasSize = UDim2.new() sf.AutomaticCanvasSize = Enum.AutomaticSize.Y sf.Visible = false sf.Parent = parent local layout = Instance.new("UIListLayout") layout.Padding = UDim.new(0, 6) layout.SortOrder = Enum.SortOrder.LayoutOrder layout.Parent = sf local pad = Instance.new("UIPadding") pad.PaddingTop = UDim.new(0, 12) pad.PaddingBottom = UDim.new(0, 16) pad.PaddingLeft = UDim.new(0, 14) pad.PaddingRight = UDim.new(0, 14) pad.Parent = sf return sf end local function makeSection(parent, text) local holder = Instance.new("Frame") holder.Size = UDim2.new(1, 0, 0, 26) holder.BackgroundTransparency = 1 holder.Parent = parent local bar = Instance.new("Frame") bar.Size = UDim2.fromOffset(3, 14) bar.Position = UDim2.new(0, 0, 0.5, -7) bar.BackgroundColor3 = Theme.Accent bar.BorderSizePixel = 0 bar.Parent = holder Instance.new("UICorner", bar).CornerRadius = UDim.new(1, 0) local l = Instance.new("TextLabel") l.Size = UDim2.new(1, -14, 1, 0) l.Position = UDim2.fromOffset(14, 0) l.BackgroundTransparency = 1 l.Font = Enum.Font.GothamBold l.TextSize = 11 l.TextColor3 = Theme.Text l.TextXAlignment = Enum.TextXAlignment.Left l.Text = string.upper(text) l.Parent = holder return holder end local function makeCard(parent, height) local row = Instance.new("Frame") row.Size = UDim2.new(1, 0, 0, height or 56) row.BackgroundColor3 = Theme.Card row.BackgroundTransparency = 0.35 row.BorderSizePixel = 0 row.Parent = parent Instance.new("UICorner", row).CornerRadius = UDim.new(0, 10) local s = Instance.new("UIStroke", row) s.Color = Color3.fromRGB(80, 80, 110) s.Thickness = 1 s.Transparency = 0.75 return row end local function makeSlider(parent, labelText, min, max, default, callback) local row = makeCard(parent, 58) local lbl = Instance.new("TextLabel") lbl.Size = UDim2.new(1, -100, 0, 18) lbl.Position = UDim2.fromOffset(14, 7) lbl.BackgroundTransparency = 1 lbl.Font = Enum.Font.Gotham lbl.TextSize = 12 lbl.TextXAlignment = Enum.TextXAlignment.Left lbl.TextColor3 = Theme.Text lbl.Text = labelText lbl.Parent = row local box = Instance.new("TextBox") box.Size = UDim2.fromOffset(78, 22) box.Position = UDim2.new(1, -88, 0, 6) box.BackgroundColor3 = Theme.Btn box.BorderSizePixel = 0 box.Font = Enum.Font.GothamBold box.TextSize = 12 box.TextColor3 = Theme.Accent box.Text = tostring(default) box.ClearTextOnFocus = false box.Parent = row Instance.new("UICorner", box).CornerRadius = UDim.new(0, 6) local track_ = Instance.new("Frame") track_.Size = UDim2.new(1, -28, 0, 10) track_.Position = UDim2.new(0, 14, 1, -18) track_.BackgroundColor3 = Theme.Btn track_.BorderSizePixel = 0 track_.Parent = row Instance.new("UICorner", track_).CornerRadius = UDim.new(1, 0) local fill = Instance.new("Frame") fill.Size = UDim2.new(0, 0, 1, 0) fill.BackgroundColor3 = Theme.Accent fill.BorderSizePixel = 0 fill.Parent = track_ Instance.new("UICorner", fill).CornerRadius = UDim.new(1, 0) local fillGrad = Instance.new("UIGradient") fillGrad.Color = ColorSequence.new(Theme.Accent, Theme.Accent2) fillGrad.Parent = fill local knob = Instance.new("Frame") knob.Size = UDim2.fromOffset(18, 18) knob.AnchorPoint = Vector2.new(0.5, 0.5) knob.Position = UDim2.new(0, 0, 0.5, 0) knob.BackgroundColor3 = Color3.new(1, 1, 1) knob.BorderSizePixel = 0 knob.ZIndex = 2 knob.Parent = track_ Instance.new("UICorner", knob).CornerRadius = UDim.new(1, 0) -- Bigger invisible hit area for mobile local hit = Instance.new("TextButton") hit.Size = UDim2.new(1, 0, 1, 24) hit.Position = UDim2.new(0, 0, 0.5, -17) hit.BackgroundTransparency = 1 hit.Text = "" hit.ZIndex = 3 hit.Parent = track_ local current = default local function set(v, updateBox) v = tonumber(v) if not v then v = current end v = math.clamp(v, min, max) current = v local t = (max == min) and 0 or (v - min) / (max - min) fill.Size = UDim2.new(t, 0, 1, 0) knob.Position = UDim2.new(t, 0, 0.5, 0) if updateBox ~= false then box.Text = string.format("%.2f", v) end local ok, err = pcall(callback, v) if not ok then warn("[AdminHub] slider callback:", err) end end hit.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then local function update(i) local rel = (i.Position.X - track_.AbsolutePosition.X) / math.max(1, track_.AbsoluteSize.X) rel = math.clamp(rel, 0, 1) set(min + rel * (max - min), true) end activeDrag = update update(input) end end) box.FocusLost:Connect(function(enter) if enter then set(box.Text, true) end end) set(default, true) return { set = set, get = function() return current end, frame = row } end local function makeToggle(parent, labelText, default, callback) local row = makeCard(parent, 44) local lbl = Instance.new("TextLabel") lbl.Size = UDim2.new(1, -90, 1, 0) lbl.Position = UDim2.fromOffset(14, 0) lbl.BackgroundTransparency = 1 lbl.Font = Enum.Font.Gotham lbl.TextSize = 12 lbl.TextXAlignment = Enum.TextXAlignment.Left lbl.TextColor3 = Theme.Text lbl.Text = labelText lbl.Parent = row local isOn = default local pill = Instance.new("Frame") pill.Size = UDim2.fromOffset(50, 26) pill.Position = UDim2.new(1, -64, 0.5, -13) pill.BackgroundColor3 = isOn and Theme.Success or Theme.Btn pill.BorderSizePixel = 0 pill.Parent = row Instance.new("UICorner", pill).CornerRadius = UDim.new(1, 0) local knob = Instance.new("Frame") knob.Size = UDim2.fromOffset(20, 20) knob.AnchorPoint = Vector2.new(0, 0.5) knob.Position = isOn and UDim2.new(1, -23, 0.5, 0) or UDim2.new(0, 3, 0.5, 0) knob.BackgroundColor3 = Color3.new(1, 1, 1) knob.BorderSizePixel = 0 knob.Parent = pill Instance.new("UICorner", knob).CornerRadius = UDim.new(1, 0) local clickable = Instance.new("TextButton") clickable.Size = UDim2.new(1, 0, 1, 0) clickable.BackgroundTransparency = 1 clickable.Text = "" clickable.Parent = row local function set(v) isOn = v tween(pill, {BackgroundColor3 = isOn and Theme.Success or Theme.Btn}, 0.2) if isOn then tween(knob, {Position = UDim2.new(1, -23, 0.5, 0)}, 0.2) else tween(knob, {Position = UDim2.new(0, 3, 0.5, 0)}, 0.2) end local ok, err = pcall(callback, v) if not ok then warn("[AdminHub] toggle callback:", err) end end clickable.MouseButton1Click:Connect(function() set(not isOn) end) return { set = set, get = function() return isOn end } end local function makeButton(parent, labelText, callback, color) local b = Instance.new("TextButton") b.Size = UDim2.new(1, 0, 0, 36) b.BackgroundColor3 = color or Theme.Btn b.BorderSizePixel = 0 b.Font = Enum.Font.GothamBold b.TextSize = 12 b.TextColor3 = Theme.Text b.Text = labelText b.AutoButtonColor = false b.Parent = parent Instance.new("UICorner", b).CornerRadius = UDim.new(0, 10) local base = color or Theme.Btn local hover = base:Lerp(Color3.new(1, 1, 1), 0.15) addHover(b, base, hover) b.MouseButton1Click:Connect(function() local ok, err = pcall(callback) if not ok then warn("[AdminHub] button error:", err) setStatus("Error: " .. tostring(err)) end end) return b end local function makeInput(parent, placeholder, defaultText, callback) local box = Instance.new("TextBox") box.Size = UDim2.new(1, 0, 0, 34) box.BackgroundColor3 = Theme.Card box.BackgroundTransparency = 0.35 box.BorderSizePixel = 0 box.Font = Enum.Font.Gotham box.TextSize = 12 box.TextColor3 = Theme.Text box.PlaceholderText = placeholder box.PlaceholderColor3 = Theme.Dim box.Text = defaultText or "" box.ClearTextOnFocus = false box.Parent = parent Instance.new("UICorner", box).CornerRadius = UDim.new(0, 10) local s = Instance.new("UIStroke", box) s.Color = Color3.fromRGB(80, 80, 110) s.Thickness = 1 s.Transparency = 0.7 box.FocusLost:Connect(function(enter) if enter then local ok, err = pcall(callback, box.Text) if not ok then warn("[AdminHub] input error:", err) end end end) return box end local function makeRowButtons(parent, specs) local row = Instance.new("Frame") row.Size = UDim2.new(1, 0, 0, 34) row.BackgroundTransparency = 1 row.Parent = parent local n = #specs local gap = 6 for i, s in ipairs(specs) do local b = Instance.new("TextButton") b.Size = UDim2.new(1 / n, -(gap * (n - 1)) / n, 1, 0) b.Position = UDim2.new((i - 1) / n, ((i - 1) * gap) / n, 0, 0) b.BackgroundColor3 = s.color or Theme.Btn b.BorderSizePixel = 0 b.Font = Enum.Font.GothamBold b.TextSize = 12 b.TextColor3 = Theme.Text b.Text = s.text b.AutoButtonColor = false b.Parent = row Instance.new("UICorner", b).CornerRadius = UDim.new(0, 10) local base = s.color or Theme.Btn addHover(b, base, base:Lerp(Color3.new(1, 1, 1), 0.15)) b.MouseButton1Click:Connect(function() local ok, err = pcall(s.callback) if not ok then warn("[AdminHub] btn err:", err) end end) end return row end -- ============================================================ -- FEATURE IMPLEMENTATIONS -- ============================================================ local noclipConn applyNoclip = function(on) state.noclip = on if noclipConn then noclipConn:Disconnect() noclipConn = nil end if not on then if char then for _, p in ipairs(char:GetDescendants()) do if p:IsA("BasePart") and p.Name ~= "HumanoidRootPart" then p.CanCollide = true end end end return end noclipConn = RunService.Stepped:Connect(function() if not char then return end for _, p in ipairs(char:GetDescendants()) do if p:IsA("BasePart") then p.CanCollide = false end end end) end track(UIS.JumpRequest:Connect(function() if state.infJump and humanoid and humanoid.Health > 0 then humanoid:ChangeState(Enum.HumanoidStateType.Jumping) end end)) local flyConn startFly = function() if flyConn then return end state.fly = true if humanoid then humanoid.PlatformStand = true end flyConn = RunService.RenderStepped:Connect(function() if not hrp or not humanoid or humanoid.Health <= 0 then return end local md = humanoid.MoveDirection local v = 0 if state.flyUp or UIS:IsKeyDown(Enum.KeyCode.Space) then v += 1 end if state.flyDown or UIS:IsKeyDown(Enum.KeyCode.LeftControl) then v -= 1 end hrp.AssemblyLinearVelocity = md * state.flySpeed + Vector3.new(0, v * state.flySpeed, 0) end) end stopFly = function() state.fly = false if flyConn then flyConn:Disconnect() flyConn = nil end if humanoid then humanoid.PlatformStand = false end if hrp then hrp.AssemblyLinearVelocity = Vector3.new(0, 0, 0) end end track(UIS.InputBegan:Connect(function(i, gp) if gp then return end if i.KeyCode == Enum.KeyCode.LeftShift and state.sprint and humanoid then humanoid.WalkSpeed = state.sprintSpeed end end)) track(UIS.InputEnded:Connect(function(i) if i.KeyCode == Enum.KeyCode.LeftShift and state.sprint and humanoid then humanoid.WalkSpeed = state.lastSpeed end end)) applyFullbright = function(on) state.fullbright = on if on then state.fullbrightSnap = { Brightness = Lighting.Brightness, ClockTime = Lighting.ClockTime, GlobalShadows = Lighting.GlobalShadows, FogEnd = Lighting.FogEnd, Ambient = Lighting.Ambient, OutdoorAmbient = Lighting.OutdoorAmbient, } Lighting.Brightness = 3 Lighting.ClockTime = 14 Lighting.GlobalShadows = false Lighting.FogEnd = 1e6 Lighting.Ambient = Color3.new(1, 1, 1) Lighting.OutdoorAmbient = Color3.new(1, 1, 1) else if state.fullbrightSnap then for k, v in pairs(state.fullbrightSnap) do pcall(function() Lighting[k] = v end) end state.fullbrightSnap = nil end end end local freezeConn setFreeze = function(on) state.frozenCam = on if freezeConn then freezeConn:Disconnect() freezeConn = nil end if not on then return end local cam = workspace.CurrentCamera if not cam then return end local frozen = cam.CFrame freezeConn = RunService.RenderStepped:Connect(function() cam.CFrame = frozen end) end -- ============================================================ -- TELEPORT SLOTS -- ============================================================ local slots = { nil, nil, nil } -- ============================================================ -- TAB SYSTEM -- ============================================================ local tabs = {} local function registerTab(name, icon, buildFn) local btn = Instance.new("TextButton") btn.Size = UDim2.new(1, 0, 0, 38) btn.LayoutOrder = #tabs + 1 -- <-- FIX: proper ordering btn.BackgroundColor3 = Theme.Btn btn.BackgroundTransparency = 0.55 btn.BorderSizePixel = 0 btn.Font = Enum.Font.GothamBold btn.TextSize = 12 btn.TextColor3 = Theme.Text btn.Text = " " .. icon .. " " .. name btn.TextXAlignment = Enum.TextXAlignment.Left btn.AutoButtonColor = false btn.Parent = sideScroll Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 8) local page = makePage(content) buildFn(page) local entry = { name = name, btn = btn, page = page } tabs[#tabs + 1] = entry btn.MouseEnter:Connect(function() if entry.page.Visible then return end tween(btn, {BackgroundColor3 = Theme.BtnHi}) end) btn.MouseLeave:Connect(function() if entry.page.Visible then return end tween(btn, {BackgroundColor3 = Theme.Btn}) end) btn.MouseButton1Click:Connect(function() for _, t in ipairs(tabs) do local sel = (t == entry) t.page.Visible = sel tween(t.btn, { BackgroundColor3 = sel and Theme.Accent or Theme.Btn, BackgroundTransparency = sel and 0.15 or 0.55, }, 0.18) t.btn.TextColor3 = sel and Color3.new(1, 1, 1) or Theme.Text end end) return entry end -- ============================================================ -- TAB 1 — CHARACTER -- ============================================================ registerTab("Character", "👤", function(page) makeSection(page, "Movement") makeSlider(page, "WalkSpeed", 0, 500, DEFAULTS.Speed, function(v) state.lastSpeed = v if humanoid then humanoid.WalkSpeed = v end end) makeSlider(page, "JumpPower / JumpHeight", 0, 500, DEFAULTS.Jump, function(v) state.lastJump = v if humanoid then if humanoid.UseJumpPower then humanoid.JumpPower = v else humanoid.JumpHeight = v end end end) makeSlider(page, "HipHeight", -5, 20, DEFAULTS.Hip, function(v) state.lastHip = v if humanoid then humanoid.HipHeight = v end end) makeSection(page, "Size") makeSlider(page, "Character Scale", 0.2, 5, DEFAULTS.Size, function(v) state.lastSize = v if char and char:IsA("Model") then pcall(function() char:ScaleTo(v) end) end end) makeSection(page, "Health") makeSlider(page, "Health", 0, 1000, DEFAULTS.Health, function(v) state.lastHealth = v if humanoid then humanoid.Health = v end end) makeSlider(page, "Max Health", 1, 1000, DEFAULTS.MaxHealth, function(v) state.lastMaxHealth = v if humanoid then humanoid.MaxHealth = v end end) makeSection(page, "Actions") makeButton(page, "↺ Reset Character Stats", function() state.lastSpeed = DEFAULTS.Speed state.lastJump = DEFAULTS.Jump state.lastHip = DEFAULTS.Hip state.lastSize = DEFAULTS.Size state.lastHealth = DEFAULTS.Health state.lastMaxHealth = DEFAULTS.MaxHealth if humanoid then humanoid.WalkSpeed = DEFAULTS.Speed if humanoid.UseJumpPower then humanoid.JumpPower = DEFAULTS.Jump else humanoid.JumpHeight = DEFAULTS.Jump end humanoid.HipHeight = DEFAULTS.Hip humanoid.MaxHealth = DEFAULTS.MaxHealth humanoid.Health = DEFAULTS.MaxHealth end if char and char:IsA("Model") then pcall(function() char:ScaleTo(1) end) end setStatus("Character reset.") end, Theme.Success) end) -- ============================================================ -- TAB 2 — MOVEMENT -- ============================================================ registerTab("Movement", "🏃", function(page) makeSection(page, "Fly") makeToggle(page, "Enable Fly", false, function(on) if on then startFly() else stopFly() end end) makeSlider(page, "Fly Speed", 10, 400, DEFAULTS.FlySpeed, function(v) state.flySpeed = v end) makeRowButtons(page, { { text = "▲ Fly Up", color = Theme.Btn, callback = nil }, -- placeholder replaced below }) -- Custom press-and-hold row for fly up/down local upDownRow = Instance.new("Frame") upDownRow.Size = UDim2.new(1, 0, 0, 38) upDownRow.BackgroundTransparency = 1 upDownRow.Parent = page local function holdBtn(text, x, setter) local b = Instance.new("TextButton") b.Size = UDim2.new(0.485, 0, 1, 0) b.Position = UDim2.new(x, 0, 0, 0) b.BackgroundColor3 = Theme.Btn b.BorderSizePixel = 0 b.Font = Enum.Font.GothamBold b.TextSize = 12 b.TextColor3 = Theme.Text b.Text = text b.AutoButtonColor = false b.Parent = upDownRow Instance.new("UICorner", b).CornerRadius = UDim.new(0, 10) addHover(b, Theme.Btn, Theme.BtnHi) b.MouseButton1Down:Connect(function() setter(true) end) b.MouseButton1Up:Connect(function() setter(false) end) b.MouseLeave:Connect(function() setter(false) end) return b end holdBtn("▲ Fly Up", 0, function(v) state.flyUp = v end) holdBtn("▼ Fly Down", 0.515, function(v) state.flyDown = v end) makeSection(page, "Collision") makeToggle(page, "Noclip", false, function(on) applyNoclip(on) end) makeToggle(page, "Infinite Jump", false, function(on) state.infJump = on end) makeSection(page, "Sprint") makeToggle(page, "Enable Sprint (hold Left Shift)", false, function(on) state.sprint = on end) makeSlider(page, "Sprint Speed", 16, 200, DEFAULTS.Sprint, function(v) state.sprintSpeed = v end) makeSection(page, "Lighting") makeToggle(page, "Fullbright", false, function(on) applyFullbright(on) end) end) -- ============================================================ -- TAB 3 — PHYSICS -- ============================================================ registerTab("Physics", "🌍", function(page) makeSection(page, "Gravity") makeSlider(page, "Workspace Gravity", 0, 500, DEFAULTS.Gravity, function(v) workspace.Gravity = v end) makeButton(page, "↺ Reset Gravity", function() workspace.Gravity = DEFAULTS.Gravity setStatus("Gravity reset.") end, Theme.Success) makeSection(page, "Atmosphere") makeSlider(page, "Time of Day (hours)", 0, 24, DEFAULTS.Time, function(v) Lighting.ClockTime = v end) makeSlider(page, "Fog End", 100, 100000, DEFAULTS.Fog, function(v) Lighting.FogEnd = v end) makeSection(page, "Time Presets") makeRowButtons(page, { { text = "🌅 Dawn", color = Theme.Warn, callback = function() Lighting.ClockTime = 6.5 end }, { text = "☀ Noon", color = Theme.Success, callback = function() Lighting.ClockTime = 12 end }, { text = "🌆 Dusk", color = Theme.Warn, callback = function() Lighting.ClockTime = 18 end }, { text = "🌙 Night", color = Theme.Accent, callback = function() Lighting.ClockTime = 0 end }, }) end) -- ============================================================ -- TAB 4 — CAMERA -- ============================================================ registerTab("Camera", "📷", function(page) makeSection(page, "Field of View") makeSlider(page, "FOV", 20, 120, DEFAULTS.Fov, function(v) local cam = workspace.CurrentCamera if cam then cam.FieldOfView = v end end) makeSection(page, "Zoom Distance") makeSlider(page, "Min Zoom", 0.5, 20, DEFAULTS.MinZoom, function(v) LP.CameraMinZoomDistance = v end) makeSlider(page, "Max Zoom", 4, 300, DEFAULTS.MaxZoom, function(v) LP.CameraMaxZoomDistance = v end) makeSection(page, "Camera Lock") makeToggle(page, "Freeze Camera", false, function(on) setFreeze(on) end) makeSection(page, "Reset") makeButton(page, "↺ Reset Camera Settings", function() local cam = workspace.CurrentCamera if cam then cam.FieldOfView = DEFAULTS.Fov end LP.CameraMinZoomDistance = DEFAULTS.MinZoom LP.CameraMaxZoomDistance = DEFAULTS.MaxZoom if state.frozenCam then setFreeze(false) end setStatus("Camera reset.") end, Theme.Success) end) -- ============================================================ -- TAB 5 — TELEPORT -- ============================================================ registerTab("Teleport", "📍", function(page) makeSection(page, "Saved Slots") for i = 1, 3 do local row = makeCard(page, 38) local lbl = Instance.new("TextLabel") lbl.Size = UDim2.new(0.22, 0, 1, 0) lbl.Position = UDim2.fromOffset(14, 0) lbl.BackgroundTransparency = 1 lbl.Font = Enum.Font.GothamBold lbl.TextSize = 12 lbl.TextXAlignment = Enum.TextXAlignment.Left lbl.TextColor3 = Theme.Text lbl.Text = "Slot " .. i lbl.Parent = row local function miniBtn(text, x, col) local b = Instance.new("TextButton") b.Size = UDim2.new(0.22, 0, 0, 26) b.Position = UDim2.new(x, 0, 0.5, -13) b.BackgroundColor3 = col b.BorderSizePixel = 0 b.Font = Enum.Font.GothamBold b.TextSize = 11 b.TextColor3 = Color3.new(1, 1, 1) b.Text = text b.AutoButtonColor = false b.Parent = row Instance.new("UICorner", b).CornerRadius = UDim.new(0, 6) addHover(b, col, col:Lerp(Color3.new(1, 1, 1), 0.15)) return b end miniBtn("Save", 0.28, Theme.Accent).MouseButton1Click:Connect(function() if hrp then slots[i] = hrp.CFrame setStatus("Saved slot " .. i) end end) miniBtn("Go", 0.52, Theme.Success).MouseButton1Click:Connect(function() if slots[i] and hrp then hrp.CFrame = slots[i] setStatus("Teleported to slot " .. i) else setStatus("Slot " .. i .. " empty.") end end) miniBtn("Clear", 0.76, Theme.Danger).MouseButton1Click:Connect(function() slots[i] = nil setStatus("Cleared slot " .. i) end) end makeSection(page, "Teleport to Player") local plrBox = makeInput(page, "Username…", "", function() end) makeButton(page, "→ Go to Player", function() local target = Players:FindFirstChild(plrBox.Text) if target and target.Character and target.Character:FindFirstChild("HumanoidRootPart") and hrp then hrp.CFrame = target.Character.HumanoidRootPart.CFrame * CFrame.new(0, 0, -3) setStatus("Teleported to " .. target.Name) else setStatus("Player not found.") end end, Theme.Accent) makeSection(page, "Coordinates") local coordBox = makeInput(page, "X, Y, Z", "", function() end) makeButton(page, "→ Go to Coordinates", function() local nums = {} for s in string.gmatch(coordBox.Text, "[^,]+") do table.insert(nums, tonumber(s)) end if #nums == 3 and nums[1] and nums[2] and nums[3] and hrp then hrp.CFrame = CFrame.new(Vector3.new(nums[1], nums[2], nums[3])) setStatus("Teleported.") else setStatus("Invalid coordinates.") end end) makeButton(page, "📋 Copy Current Position", function() if not hrp then return end local p = hrp.Position coordBox.Text = string.format("%.1f, %.1f, %.1f", p.X, p.Y, p.Z) setStatus("Position copied.") end) end) -- ============================================================ -- TAB 6 — UTILITY -- ============================================================ registerTab("Utility", "⚙", function(page) makeSection(page, "Character") makeButton(page, "💚 Heal to Full", function() if humanoid then humanoid.Health = humanoid.MaxHealth setStatus("Healed.") end end, Theme.Success) makeButton(page, "💀 Kill Character", function() if humanoid then humanoid.Health = 0 setStatus("Killed.") end end, Theme.Danger) makeButton(page, "↺ Respawn (BreakJoints)", function() if char then char:BreakJoints() end end) makeButton(page, "🔄 Force Respawn (LoadCharacter)", function() local ok = pcall(function() LP:LoadCharacter() end) setStatus(ok and "Respawn requested." or "LoadCharacter blocked.") end) makeSection(page, "Session") makeButton(page, "🚪 Rejoin Server", function() TeleportSvc:Teleport(game.PlaceId, LP) end) makeSection(page, "Unload") makeButton(page, "🔌 Unload Hub", function() for _, c in ipairs(connections) do pcall(function() c:Disconnect() end) end if noclipConn then noclipConn:Disconnect() end if flyConn then flyConn:Disconnect() end if freezeConn then freezeConn:Disconnect() end if state.fly then stopFly() end if state.noclip then applyNoclip(false) end if state.fullbright then applyFullbright(false) end gui:Destroy() print("[AdminHub] Unloaded. made by n00xc (Roblox and ScriptBlox)") end, Theme.Danger) makeSection(page, "Session Info") local info = Instance.new("TextLabel") info.Size = UDim2.new(1, 0, 0, 76) info.BackgroundColor3 = Theme.Card info.BackgroundTransparency = 0.35 info.BorderSizePixel = 0 info.Font = Enum.Font.Code info.TextSize = 11 info.TextWrapped = true info.TextXAlignment = Enum.TextXAlignment.Left info.TextYAlignment = Enum.TextYAlignment.Top info.TextColor3 = Theme.Dim info.Text = string.format( " User : %s\n UserId : %d\n PlaceId: %d\n JobId : %s", LP.Name, LP.UserId, game.PlaceId, tostring(game.JobId):sub(1, 20) .. "…" ) info.Parent = page Instance.new("UICorner", info).CornerRadius = UDim.new(0, 10) local pad2 = Instance.new("UIPadding", info) pad2.PaddingTop = UDim.new(0, 8) pad2.PaddingLeft = UDim.new(0, 6) end) -- ============================================================ -- TAB 7 — SETTINGS -- ============================================================ registerTab("Settings", "🎨", function(page) makeSection(page, "Appearance") makeSlider(page, "Panel Transparency", 0, 1, BG_TRANSPARENCY, function(v) panel.BackgroundTransparency = v end) makeSection(page, "Accent Color") local presetColors = { Blue = Color3.fromRGB(96, 165, 250), Purple = Color3.fromRGB(167, 139, 250), Pink = Color3.fromRGB(244, 114, 182), Green = Color3.fromRGB(74, 222, 128), Orange = Color3.fromRGB(251, 146, 60), Red = Color3.fromRGB(248, 113, 113), } local colorRow = makeCard(page, 48) local idx = 0 for name, col in pairs(presetColors) do local b = Instance.new("TextButton") b.Size = UDim2.fromOffset(42, 30) b.Position = UDim2.new(0, 12 + idx * 50, 0.5, -15) b.BackgroundColor3 = col b.BorderSizePixel = 0 b.Text = "" b.AutoButtonColor = false b.Parent = colorRow Instance.new("UICorner", b).CornerRadius = UDim.new(0, 8) addHover(b, col, col:Lerp(Color3.new(1, 1, 1), 0.2)) b.MouseButton1Click:Connect(function() Theme.Accent = col panelStroke.Color = col accentLine.BackgroundColor3 = col setStatus("Accent → " .. name) end) idx += 1 end makeSection(page, "Hotkeys") local hkLbl = Instance.new("TextLabel") hkLbl.Size = UDim2.new(1, 0, 0, 46) hkLbl.BackgroundColor3 = Theme.Card hkLbl.BackgroundTransparency = 0.35 hkLbl.BorderSizePixel = 0 hkLbl.Font = Enum.Font.Code hkLbl.TextSize = 11 hkLbl.TextColor3 = Theme.Dim hkLbl.TextXAlignment = Enum.TextXAlignment.Left hkLbl.TextYAlignment = Enum.TextYAlignment.Top hkLbl.Text = " RightShift → toggle hub visibility\n LeftShift → sprint (if enabled)" hkLbl.Parent = page Instance.new("UICorner", hkLbl).CornerRadius = UDim.new(0, 10) local p2 = Instance.new("UIPadding", hkLbl) p2.PaddingTop = UDim.new(0, 8) p2.PaddingLeft = UDim.new(0, 6) makeSection(page, "About") local about = Instance.new("TextLabel") about.Size = UDim2.new(1, 0, 0, 46) about.BackgroundColor3 = Theme.Card about.BackgroundTransparency = 0.35 about.BorderSizePixel = 0 about.Font = Enum.Font.Gotham about.TextSize = 11 about.TextColor3 = Theme.Text about.TextXAlignment = Enum.TextXAlignment.Left about.TextYAlignment = Enum.TextYAlignment.Top about.TextWrapped = true about.Text = " Admin Hub v4 — \"Glass\" Edition\n this was made by n00xc (Roblox and ScriptBlox)" about.Parent = page Instance.new("UICorner", about).CornerRadius = UDim.new(0, 10) local p3 = Instance.new("UIPadding", about) p3.PaddingTop = UDim.new(0, 8) p3.PaddingLeft = UDim.new(0, 6) makeSection(page, "Reset") makeButton(page, "↺ Reset All Settings", function() workspace.Gravity = DEFAULTS.Gravity if humanoid then humanoid.WalkSpeed = DEFAULTS.Speed if humanoid.UseJumpPower then humanoid.JumpPower = DEFAULTS.Jump else humanoid.JumpHeight = DEFAULTS.Jump end humanoid.HipHeight = DEFAULTS.Hip end local cam = workspace.CurrentCamera if cam then cam.FieldOfView = DEFAULTS.Fov end if state.fullbright then applyFullbright(false) end if state.frozenCam then setFreeze(false) end setStatus("All settings reset.") end, Theme.Success) end) -- ============================================================ -- SELECT FIRST TAB -- ============================================================ if tabs[1] then tabs[1].page.Visible = true tabs[1].btn.BackgroundColor3 = Theme.Accent tabs[1].btn.BackgroundTransparency = 0.15 tabs[1].btn.TextColor3 = Color3.new(1, 1, 1) end -- ============================================================ -- WINDOW DRAG (custom, on the drag handle only) -- ============================================================ local dragging = false local dragStart, startPos dragHandle.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = panel.Position end end) track(UIS.InputChanged:Connect(function(input) if not dragging then return end if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then local delta = input.Position - dragStart panel.Position = UDim2.new( startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y ) end end)) track(UIS.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = false end end)) -- ============================================================ -- MIN / CLOSE -- ============================================================ local minimized = false local expandedSize = panel.Size minBtn.MouseButton1Click:Connect(function() minimized = not minimized if minimized then expandedSize = panel.Size sidebar.Visible = false content.Visible = false footer.Visible = false panel.Size = UDim2.fromOffset(panel.AbsoluteSize.X, HEADER_H) minBtn.Text = "+" else sidebar.Visible = true content.Visible = true footer.Visible = true panel.Size = expandedSize minBtn.Text = "–" end end) local function shutdown() for _, c in ipairs(connections) do pcall(function() c:Disconnect() end) end if noclipConn then noclipConn:Disconnect() end if flyConn then flyConn:Disconnect() end if freezeConn then freezeConn:Disconnect() end if state.fly then stopFly() end if state.noclip then applyNoclip(false) end if state.fullbright then applyFullbright(false) end gui:Destroy() end closeBtn.MouseButton1Click:Connect(function() shutdown() print("[AdminHub] Closed. made by n00xc (Roblox and ScriptBlox)") end) -- ============================================================ -- HOTKEY -- ============================================================ track(UIS.InputBegan:Connect(function(i, gp) if gp then return end if i.KeyCode == Enum.KeyCode.RightShift then gui.Enabled = not gui.Enabled end end)) -- ============================================================ -- CHARACTER INIT -- ============================================================ if LP.Character then task.spawn(setupChar, LP.Character) end track(LP.CharacterAdded:Connect(function(c) task.spawn(setupChar, c) end)) setStatus(string.format("Hub loaded · %d tabs", #tabs)) print("[AdminHub] Ready. made by n00xc (Roblox and ScriptBlox)")