Version / Update: v1.0.0
- Download / Script Link
- -- x2b16's Hub - Final Fixed Version (Unview + Styled Search) - April 2026
-- Hotkey: K
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer
local Camera = workspace.CurrentCamera
local CoreGui = game:GetService("CoreGui")
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "x2b16sHub"
ScreenGui.ResetOnSpawn = false
ScreenGui.Parent = CoreGui
-- Toggle Button
local ToggleButton = Instance.new("TextButton")
ToggleButton.Size = UDim2.new(0, 230, 0, 60)
ToggleButton.Position = UDim2.new(0.5, -115, 0, 20)
ToggleButton.BackgroundColor3 = Color3.fromRGB(20, 50, 160)
ToggleButton.Text = "x2b16's Hub ▼"
ToggleButton.TextColor3 = Color3.new(1,1,1)
ToggleButton.Font = Enum.Font.GothamBlack
ToggleButton.TextSize = 22
ToggleButton.BorderSizePixel = 0
ToggleButton.BackgroundTransparency = 0.05
ToggleButton.Parent = ScreenGui
local tc = Instance.new("UICorner"); tc.CornerRadius = UDim.new(0,20); tc.Parent = ToggleButton
local ts = Instance.new("UIStroke"); ts.Thickness = 3; ts.Color = Color3.fromRGB(80,160,255); ts.Parent = ToggleButton
-- Main Frame
local MainFrame = Instance.new("Frame")
MainFrame.Size = UDim2.new(0, 520, 0, 380)
MainFrame.Position = UDim2.new(0.5, -260, 0.5, -190)
MainFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
MainFrame.BorderSizePixel = 0
MainFrame.Visible = false
MainFrame.Parent = ScreenGui
local MainCorner = Instance.new("UICorner"); MainCorner.CornerRadius = UDim.new(0,16); MainCorner.Parent = MainFrame
-- Title Bar
local TitleBar = Instance.new("Frame")
TitleBar.Size = UDim2.new(1,0,0,56)
TitleBar.BackgroundColor3 = Color3.fromRGB(28,28,48)
TitleBar.BorderSizePixel = 0
TitleBar.Parent = MainFrame
local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(1,-90,1,0)
Title.Position = UDim2.new(0,24,0,0)
Title.BackgroundTransparency = 1
Title.Text = "x2b16's Hub"
Title.TextColor3 = Color3.fromRGB(220,220,255)
Title.Font = Enum.Font.GothamBlack
Title.TextSize = 23
Title.TextXAlignment = Enum.TextXAlignment.Left
Title.Parent = TitleBar
local CloseBtn = Instance.new("TextButton")
CloseBtn.Size = UDim2.new(0,56,0,56)
CloseBtn.Position = UDim2.new(1,-62,0,0)
CloseBtn.BackgroundColor3 = Color3.fromRGB(190,60,60)
CloseBtn.Text = "×"
CloseBtn.TextColor3 = Color3.new(1,1,1)
CloseBtn.Font = Enum.Font.GothamBold
CloseBtn.TextSize = 32
CloseBtn.BorderSizePixel = 0
CloseBtn.Parent = TitleBar
local cc = Instance.new("UICorner"); cc.CornerRadius = UDim.new(0,12); cc.Parent = CloseBtn
-- Sidebar
local Sidebar = Instance.new("Frame")
Sidebar.Size = UDim2.new(0, 140, 1, -68)
Sidebar.Position = UDim2.new(0, 14, 0, 68)
Sidebar.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
Sidebar.BorderSizePixel = 0
Sidebar.Parent = MainFrame
local sc = Instance.new("UICorner"); sc.CornerRadius = UDim.new(0,12); sc.Parent = Sidebar
local SidebarScrolling = Instance.new("ScrollingFrame")
SidebarScrolling.Size = UDim2.new(1, -8, 1, -8)
SidebarScrolling.Position = UDim2.new(0, 4, 0, 4)
SidebarScrolling.BackgroundTransparency = 1
SidebarScrolling.BorderSizePixel = 0
SidebarScrolling.ScrollBarThickness = 6
SidebarScrolling.ScrollBarImageColor3 = Color3.fromRGB(80, 140, 255)
SidebarScrolling.VerticalScrollBarInset = Enum.ScrollBarInset.Always
SidebarScrolling.CanvasSize = UDim2.new(0, 0, 0, 0)
SidebarScrolling.Parent = Sidebar
local SidebarLayout = Instance.new("UIListLayout")
SidebarLayout.Padding = UDim.new(0, 8)
SidebarLayout.SortOrder = Enum.SortOrder.LayoutOrder
SidebarLayout.Parent = SidebarScrolling
local function makeBtn(text, active)
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, -12, 0, 50)
btn.BackgroundColor3 = active and Color3.fromRGB(45,75,55) or Color3.fromRGB(40,40,50)
btn.Text = text
btn.TextColor3 = Color3.new(1,1,1)
btn.Font = Enum.Font.GothamBold
btn.TextSize = 20
btn.BorderSizePixel = 0
btn.Parent = SidebarScrolling
local c = Instance.new("UICorner"); c.CornerRadius = UDim.new(0,12); c.Parent = btn
return btn
end
local GoToTab = makeBtn("Go To", true)
local ESPTab = makeBtn("ESP", false)
local ViewTab = makeBtn("View", false)
local JumpTab = makeBtn("Jump", false)
local SpeedTab = makeBtn("Speed", false)
local SpinbotTab = makeBtn("Spinbot", false)
SidebarLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
SidebarScrolling.CanvasSize = UDim2.new(0, 0, 0, SidebarLayout.AbsoluteContentSize.Y + 25)
end)
-- Content Area
local ContentArea = Instance.new("Frame")
ContentArea.Size = UDim2.new(1, -178, 1, -80)
ContentArea.Position = UDim2.new(0, 162, 0, 68)
ContentArea.BackgroundColor3 = Color3.fromRGB(20,20,30)
ContentArea.BorderSizePixel = 0
ContentArea.Parent = MainFrame
local ContentCorner = Instance.new("UICorner"); ContentCorner.CornerRadius = UDim.new(0,12); ContentCorner.Parent = ContentArea
local GoToContent = Instance.new("Frame"); GoToContent.Size = UDim2.new(1,0,1,0); GoToContent.BackgroundTransparency = 1; GoToContent.Parent = ContentArea
local ESPContent = Instance.new("Frame"); ESPContent.Size = UDim2.new(1,0,1,0); ESPContent.BackgroundTransparency = 1; ESPContent.Visible = false; ESPContent.Parent = ContentArea
local ViewContent = Instance.new("Frame"); ViewContent.Size = UDim2.new(1,0,1,0); ViewContent.BackgroundTransparency = 1; ViewContent.Visible = false; ViewContent.Parent = ContentArea
local JumpContent = Instance.new("Frame"); JumpContent.Size = UDim2.new(1,0,1,0); JumpContent.BackgroundTransparency = 1; JumpContent.Visible = false; JumpContent.Parent = ContentArea
local SpeedContent = Instance.new("Frame"); SpeedContent.Size = UDim2.new(1,0,1,0); SpeedContent.BackgroundTransparency = 1; SpeedContent.Visible = false; SpeedContent.Parent = ContentArea
local SpinbotContent = Instance.new("Frame"); SpinbotContent.Size = UDim2.new(1,0,1,0); SpinbotContent.BackgroundTransparency = 1; SpinbotContent.Visible = false; SpinbotContent.Parent = ContentArea
local function createScrolling(parent)
local s = Instance.new("ScrollingFrame")
s.Size = UDim2.new(1,-10,1,-70)
s.Position = UDim2.new(0,5,0,62)
s.BackgroundTransparency = 1
s.BorderSizePixel = 0
s.ScrollBarThickness = 6
s.ScrollBarImageColor3 = Color3.fromRGB(100,140,255)
s.VerticalScrollBarInset = Enum.ScrollBarInset.Always
s.CanvasSize = UDim2.new(0,0,0,0)
s.Parent = parent
local layout = Instance.new("UIListLayout")
layout.Padding = UDim.new(0,12)
layout.SortOrder = Enum.SortOrder.LayoutOrder
layout.Parent = s
return s
end
local GoToScrolling = createScrolling(GoToContent)
local ViewScrolling = createScrolling(ViewContent)
-- Styled Search & Unview (same look as player buttons)
local function createStyledInput(parent, isButton, placeholderOrText)
local obj
if isButton then
obj = Instance.new("TextButton")
obj.Text = placeholderOrText
obj.BackgroundColor3 = Color3.fromRGB(190,60,60)
else
obj = Instance.new("TextBox")
obj.PlaceholderText = placeholderOrText
obj.Text = ""
obj.BackgroundColor3 = Color3.fromRGB(40,40,50)
end
obj.Size = UDim2.new(0.92, 0, 0, 50)
obj.Position = UDim2.new(0.04, 0, 0, 6)
obj.TextColor3 = Color3.new(1,1,1)
obj.Font = Enum.Font.GothamSemibold
obj.TextSize = 19
obj.TextXAlignment = Enum.TextXAlignment.Left
obj.BorderSizePixel = 0
obj.Parent = parent
local corner = Instance.new("UICorner"); corner.CornerRadius = UDim.new(0,14); corner.Parent = obj
local pad = Instance.new("UIPadding"); pad.PaddingLeft = UDim.new(0,30); pad.Parent = obj
return obj
end
local GoToSearch = createStyledInput(GoToContent, false, "Search players...")
local ViewSearch = createStyledInput(ViewContent, false, "Search players...")
local UnviewButton = createStyledInput(ViewContent, true, " Unview (Stop Spectating)")
-- Variables
local spectatingPlayer = nil
local originalCameraSubject = nil
local BoxESPEnabled = false
local NameESPEnabled = false
local ESPObjects = {}
local JumpPower = 50
local InfiniteJumpEnabled = false
local WalkSpeedValue = 16
local SpinbotEnabled = false
local SpinSpeed = 50
local spinConnection = nil
-- ==================== Player List with Search ====================
local function refreshList(scrolling, searchBox, isView)
for _, v in ipairs(scrolling:GetChildren()) do
if v:IsA("TextButton") and v ~= UnviewButton then
v:Destroy()
end
end
local searchText = searchBox.Text:lower()
local list = {}
for _, plr in Players:GetPlayers() do
if plr ~= LocalPlayer and (searchText == "" or plr.Name:lower():find(searchText)) then
table.insert(list, plr)
end
end
table.sort(list, function(a,b) return a.Name:lower() < b.Name:lower() end)
for _, plr in list do
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1,0,0,58)
btn.BackgroundColor3 = Color3.fromRGB(45,75,55)
btn.Text = " " .. plr.Name
btn.TextColor3 = Color3.fromRGB(235,235,255)
btn.Font = Enum.Font.GothamSemibold
btn.TextSize = 19
btn.TextXAlignment = Enum.TextXAlignment.Left
btn.BorderSizePixel = 0
btn.Parent = scrolling
local corner = Instance.new("UICorner"); corner.CornerRadius = UDim.new(0,14); corner.Parent = btn
local pad = Instance.new("UIPadding"); pad.PaddingLeft = UDim.new(0,30); pad.Parent = btn
btn.MouseButton1Click:Connect(function()
if isView then
local hum = plr.Character and plr.Character:FindFirstChild("Humanoid")
if hum then
originalCameraSubject = Camera.CameraSubject
Camera.CameraSubject = hum
Camera.CameraType = Enum.CameraType.Custom
spectatingPlayer = plr
end
else
local myRoot = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
local targetRoot = plr.Character and plr.Character:FindFirstChild("HumanoidRootPart")
if myRoot and targetRoot then
myRoot.CFrame = targetRoot.CFrame * CFrame.new(0, 4, 0)
end
end
end)
end
scrolling.CanvasSize = UDim2.new(0, 0, 0, #list * 72)
end
-- Live Search
GoToSearch:GetPropertyChangedSignal("Text"):Connect(function()
if GoToContent.Visible then refreshList(GoToScrolling, GoToSearch, false) end
end)
ViewSearch:GetPropertyChangedSignal("Text"):Connect(function()
if ViewContent.Visible then refreshList(ViewScrolling, ViewSearch, true) end
end)
-- Fixed Unview Button
UnviewButton.MouseButton1Click:Connect(function()
if originalCameraSubject then
Camera.CameraSubject = originalCameraSubject
end
Camera.CameraType = Enum.CameraType.Custom
spectatingPlayer = nil
end)
-- ==================== ESP ====================
local function createESP(plr)
if ESPObjects[plr] then return end
local box = Drawing.new("Square")
box.Thickness = 2.5 box.Color = Color3.fromRGB(0,255,100) box.Transparency = 0.85 box.Filled = false box.Visible = false
local nameTag = Drawing.new("Text")
nameTag.Size = 16 nameTag.Center = true nameTag.Outline = true nameTag.Color = Color3.fromRGB(255,255,100) nameTag.Visible = false
ESPObjects[plr] = {Box = box, Name = nameTag}
end
local function removeESP(plr)
if ESPObjects[plr] then
ESPObjects[plr].Box:Remove()
ESPObjects[plr].Name:Remove()
ESPObjects[plr] = nil
end
end
local function updateESP()
for plr, data in pairs(ESPObjects) do
local char = plr.Character
if char and char:FindFirstChild("HumanoidRootPart") then
local root = char.HumanoidRootPart
local topPos = root.Position + Vector3.new(0, 2.8, 0)
local bottomPos = root.Position - Vector3.new(0, 3.2, 0)
local top, onTop = Camera:WorldToViewportPoint(topPos)
local bottom, onBottom = Camera:WorldToViewportPoint(bottomPos)
if onTop and onBottom then
local height = math.abs(top.Y - bottom.Y)
local width = height * 0.6
data.Box.Visible = BoxESPEnabled
if BoxESPEnabled then
data.Box.Size = Vector2.new(width, height)
data.Box.Position = Vector2.new(top.X - width/2, top.Y)
end
data.Name.Visible = NameESPEnabled
if NameESPEnabled then
data.Name.Text = plr.Name
data.Name.Position = Vector2.new(top.X, top.Y - 22)
end
else
data.Box.Visible = false
data.Name.Visible = false
end
else
data.Box.Visible = false
data.Name.Visible = false
end
end
end
-- ==================== Speed & Jump ====================
local function applySpeedAndJump(char)
if not char then return end
local hum = char:FindFirstChild("Humanoid")
if hum then
hum.WalkSpeed = WalkSpeedValue
hum.JumpPower = JumpPower
end
end
-- ==================== Spinbot ====================
local function startSpinbot()
if spinConnection then spinConnection:Disconnect() end
spinConnection = RunService.RenderStepped:Connect(function()
if SpinbotEnabled and LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
local root = LocalPlayer.Character.HumanoidRootPart
root.CFrame = root.CFrame * CFrame.Angles(0, math.rad(SpinSpeed / 10), 0)
end
end)
end
local function stopSpinbot()
if spinConnection then spinConnection:Disconnect() spinConnection = nil end
end
-- ==================== Tab Elements (Jump, Speed, Spinbot) ====================
local function createTabElements()
-- Jump Tab
local JumpPowerLabel = Instance.new("TextLabel")
JumpPowerLabel.Size = UDim2.new(0.85,0,0,50) JumpPowerLabel.Position = UDim2.new(0.075,0,0,20)
JumpPowerLabel.BackgroundTransparency = 1 JumpPowerLabel.Text = "Jump Power: 50"
JumpPowerLabel.TextColor3 = Color3.new(1,1,1) JumpPowerLabel.Font = Enum.Font.GothamSemibold JumpPowerLabel.TextSize = 20
JumpPowerLabel.Parent = JumpContent
local JumpPowerBox = Instance.new("TextBox")
JumpPowerBox.Size = UDim2.new(0.85,0,0,50) JumpPowerBox.Position = UDim2.new(0.075,0,0,80)
JumpPowerBox.BackgroundColor3 = Color3.fromRGB(40,40,50) JumpPowerBox.Text = "50"
JumpPowerBox.TextColor3 = Color3.new(1,1,1) JumpPowerBox.Font = Enum.Font.GothamBold JumpPowerBox.TextSize = 20
JumpPowerBox.Parent = JumpContent
local jpc = Instance.new("UICorner"); jpc.CornerRadius = UDim.new(0,12); jpc.Parent = JumpPowerBox
local JumpConfirm = Instance.new("TextButton")
JumpConfirm.Size = UDim2.new(0.85,0,0,55) JumpConfirm.Position = UDim2.new(0.075,0,0,150)
JumpConfirm.BackgroundColor3 = Color3.fromRGB(45,75,55) JumpConfirm.Text = "Confirm Jump Power"
JumpConfirm.TextColor3 = Color3.new(1,1,1) JumpConfirm.Font = Enum.Font.GothamBold JumpConfirm.TextSize = 18
JumpConfirm.Parent = JumpContent
local jc = Instance.new("UICorner"); jc.CornerRadius = UDim.new(0,12); jc.Parent = JumpConfirm
local InfiniteJumpToggle = Instance.new("TextButton")
InfiniteJumpToggle.Size = UDim2.new(0.85,0,0,55) InfiniteJumpToggle.Position = UDim2.new(0.075,0,0,220)
InfiniteJumpToggle.BackgroundColor3 = Color3.fromRGB(75,45,45) InfiniteJumpToggle.Text = "Infinite Jump: OFF"
InfiniteJumpToggle.TextColor3 = Color3.new(1,1,1) InfiniteJumpToggle.Font = Enum.Font.GothamBold InfiniteJumpToggle.TextSize = 18
InfiniteJumpToggle.Parent = JumpContent
local ijtc = Instance.new("UICorner"); ijtc.CornerRadius = UDim.new(0,12); ijtc.Parent = InfiniteJumpToggle
-- Speed Tab
local SpeedLabel = Instance.new("TextLabel")
SpeedLabel.Size = UDim2.new(0.85,0,0,50) SpeedLabel.Position = UDim2.new(0.075,0,0,20)
SpeedLabel.BackgroundTransparency = 1 SpeedLabel.Text = "WalkSpeed: 16"
SpeedLabel.TextColor3 = Color3.new(1,1,1) SpeedLabel.Font = Enum.Font.GothamSemibold SpeedLabel.TextSize = 20
SpeedLabel.Parent = SpeedContent
local SpeedBox = Instance.new("TextBox")
SpeedBox.Size = UDim2.new(0.85,0,0,50) SpeedBox.Position = UDim2.new(0.075,0,0,80)
SpeedBox.BackgroundColor3 = Color3.fromRGB(40,40,50) SpeedBox.Text = "16"
SpeedBox.TextColor3 = Color3.new(1,1,1) SpeedBox.Font = Enum.Font.GothamBold SpeedBox.TextSize = 20
SpeedBox.Parent = SpeedContent
local spc = Instance.new("UICorner"); spc.CornerRadius = UDim.new(0,12); spc.Parent = SpeedBox
local SpeedConfirm = Instance.new("TextButton")
SpeedConfirm.Size = UDim2.new(0.85,0,0,55) SpeedConfirm.Position = UDim2.new(0.075,0,0,150)
SpeedConfirm.BackgroundColor3 = Color3.fromRGB(45,75,55) SpeedConfirm.Text = "Confirm WalkSpeed"
SpeedConfirm.TextColor3 = Color3.new(1,1,1) SpeedConfirm.Font = Enum.Font.GothamBold SpeedConfirm.TextSize = 18
SpeedConfirm.Parent = SpeedContent
local scc = Instance.new("UICorner"); scc.CornerRadius = UDim.new(0,12); scc.Parent = SpeedConfirm
-- Spinbot Tab
local SpinbotLabel = Instance.new("TextLabel")
SpinbotLabel.Size = UDim2.new(0.85,0,0,50) SpinbotLabel.Position = UDim2.new(0.075,0,0,20)
SpinbotLabel.BackgroundTransparency = 1 SpinbotLabel.Text = "Spin Speed: 50"
SpinbotLabel.TextColor3 = Color3.new(1,1,1) SpinbotLabel.Font = Enum.Font.GothamSemibold SpinbotLabel.TextSize = 20
SpinbotLabel.Parent = SpinbotContent
local SpinSpeedBox = Instance.new("TextBox")
SpinSpeedBox.Size = UDim2.new(0.85,0,0,50) SpinSpeedBox.Position = UDim2.new(0.075,0,0,80)
SpinSpeedBox.BackgroundColor3 = Color3.fromRGB(40,40,50) SpinSpeedBox.Text = "50"
SpinSpeedBox.TextColor3 = Color3.new(1,1,1) SpinSpeedBox.Font = Enum.Font.GothamBold SpinSpeedBox.TextSize = 20
SpinSpeedBox.Parent = SpinbotContent
local spinbc = Instance.new("UICorner"); spinbc.CornerRadius = UDim.new(0,12); spinbc.Parent = SpinSpeedBox
local SpinConfirm = Instance.new("TextButton")
SpinConfirm.Size = UDim2.new(0.85,0,0,55) SpinConfirm.Position = UDim2.new(0.075,0,0,150)
SpinConfirm.BackgroundColor3 = Color3.fromRGB(45,75,55) SpinConfirm.Text = "Confirm Spin Speed"
SpinConfirm.TextColor3 = Color3.new(1,1,1) SpinConfirm.Font = Enum.Font.GothamBold SpinConfirm.TextSize = 18
SpinConfirm.Parent = SpinbotContent
local spinc = Instance.new("UICorner"); spinc.CornerRadius = UDim.new(0,12); spinc.Parent = SpinConfirm
local SpinbotToggle = Instance.new("TextButton")
SpinbotToggle.Size = UDim2.new(0.85,0,0,55) SpinbotToggle.Position = UDim2.new(0.075,0,0,220)
SpinbotToggle.BackgroundColor3 = Color3.fromRGB(75,45,45) SpinbotToggle.Text = "Spinbot: OFF"
SpinbotToggle.TextColor3 = Color3.new(1,1,1) SpinbotToggle.Font = Enum.Font.GothamBold SpinbotToggle.TextSize = 20
SpinbotToggle.Parent = SpinbotContent
local spintc = Instance.new("UICorner"); spintc.CornerRadius = UDim.new(0,12); spintc.Parent = SpinbotToggle
-- Connections
JumpConfirm.MouseButton1Click:Connect(function()
local num = tonumber(JumpPowerBox.Text)
if num then
JumpPower = math.clamp(num, 1, 1000)
JumpPowerBox.Text = tostring(JumpPower)
JumpPowerLabel.Text = "Jump Power: " .. JumpPower
if LocalPlayer.Character then applySpeedAndJump(LocalPlayer.Character) end
end
end)
InfiniteJumpToggle.MouseButton1Click:Connect(function()
InfiniteJumpEnabled = not InfiniteJumpEnabled
InfiniteJumpToggle.Text = "Infinite Jump: " .. (InfiniteJumpEnabled and "ON" or "OFF")
InfiniteJumpToggle.BackgroundColor3 = InfiniteJumpEnabled and Color3.fromRGB(45,75,55) or Color3.fromRGB(75,45,45)
end)
SpeedConfirm.MouseButton1Click:Connect(function()
local num = tonumber(SpeedBox.Text)
if num then
WalkSpeedValue = math.clamp(num, 1, 1000)
SpeedBox.Text = tostring(WalkSpeedValue)
SpeedLabel.Text = "WalkSpeed: " .. WalkSpeedValue
if LocalPlayer.Character then applySpeedAndJump(LocalPlayer.Character) end
end
end)
SpinConfirm.MouseButton1Click:Connect(function()
local num = tonumber(SpinSpeedBox.Text)
if num then
SpinSpeed = math.clamp(num, 1, 1000)
SpinSpeedBox.Text = tostring(SpinSpeed)
SpinbotLabel.Text = "Spin Speed: " .. SpinSpeed
end
end)
SpinbotToggle.MouseButton1Click:Connect(function()
SpinbotEnabled = not SpinbotEnabled
SpinbotToggle.Text = "Spinbot: " .. (SpinbotEnabled and "ON" or "OFF")
SpinbotToggle.BackgroundColor3 = SpinbotEnabled and Color3.fromRGB(45,75,55) or Color3.fromRGB(75,45,45)
if SpinbotEnabled then startSpinbot() else stopSpinbot() end
end)
end
createTabElements()
-- ==================== Tab Switching ====================
local function switchTab(tab)
GoToContent.Visible = tab == "GoTo"
ESPContent.Visible = tab == "ESP"
ViewContent.Visible = tab == "View"
JumpContent.Visible = tab == "Jump"
SpeedContent.Visible = tab == "Speed"
SpinbotContent.Visible = tab == "Spinbot"
GoToTab.BackgroundColor3 = tab == "GoTo" and Color3.fromRGB(45,75,55) or Color3.fromRGB(40,40,50)
ESPTab.BackgroundColor3 = tab == "ESP" and Color3.fromRGB(45,75,55) or Color3.fromRGB(40,40,50)
ViewTab.BackgroundColor3 = tab == "View" and Color3.fromRGB(45,75,55) or Color3.fromRGB(40,40,50)
JumpTab.BackgroundColor3 = tab == "Jump" and Color3.fromRGB(45,75,55) or Color3.fromRGB(40,40,50)
SpeedTab.BackgroundColor3 = tab == "Speed" and Color3.fromRGB(45,75,55) or Color3.fromRGB(40,40,50)
SpinbotTab.BackgroundColor3 = tab == "Spinbot" and Color3.fromRGB(45,75,55) or Color3.fromRGB(40,40,50)
if tab == "GoTo" then refreshList(GoToScrolling, GoToSearch, false)
elseif tab == "View" then refreshList(ViewScrolling, ViewSearch, true) end
end
GoToTab.MouseButton1Click:Connect(function() switchTab("GoTo") end)
ESPTab.MouseButton1Click:Connect(function() switchTab("ESP") end)
ViewTab.MouseButton1Click:Connect(function() switchTab("View") end)
JumpTab.MouseButton1Click:Connect(function() switchTab("Jump") end)
SpeedTab.MouseButton1Click:Connect(function() switchTab("Speed") end)
SpinbotTab.MouseButton1Click:Connect(function() switchTab("Spinbot") end)
-- ==================== ESP Toggles ====================
local BoxESPToggle = Instance.new("TextButton")
BoxESPToggle.Size = UDim2.new(0.85,0,0,60) BoxESPToggle.Position = UDim2.new(0.075,0,0,70)
BoxESPToggle.BackgroundColor3 = Color3.fromRGB(75,45,45) BoxESPToggle.Text = "Box ESP: OFF"
BoxESPToggle.TextColor3 = Color3.new(1,1,1) BoxESPToggle.Font = Enum.Font.GothamBold BoxESPToggle.TextSize = 20
BoxESPToggle.BorderSizePixel = 0 BoxESPToggle.Parent = ESPContent
local bc = Instance.new("UICorner"); bc.CornerRadius = UDim.new(0,12); bc.Parent = BoxESPToggle
local NameESPToggle = Instance.new("TextButton")
NameESPToggle.Size = UDim2.new(0.85,0,0,60) NameESPToggle.Position = UDim2.new(0.075,0,0,150)
NameESPToggle.BackgroundColor3 = Color3.fromRGB(75,45,45) NameESPToggle.Text = "Name ESP: OFF"
NameESPToggle.TextColor3 = Color3.new(1,1,1) NameESPToggle.Font = Enum.Font.GothamBold NameESPToggle.TextSize = 20
NameESPToggle.BorderSizePixel = 0 NameESPToggle.Parent = ESPContent
local nc = Instance.new("UICorner"); nc.CornerRadius = UDim.new(0,12); nc.Parent = NameESPToggle
BoxESPToggle.MouseButton1Click:Connect(function()
BoxESPEnabled = not BoxESPEnabled
BoxESPToggle.Text = "Box ESP: " .. (BoxESPEnabled and "ON" or "OFF")
BoxESPToggle.BackgroundColor3 = BoxESPEnabled and Color3.fromRGB(45,75,55) or Color3.fromRGB(75,45,45)
end)
NameESPToggle.MouseButton1Click:Connect(function()
NameESPEnabled = not NameESPEnabled
NameESPToggle.Text = "Name ESP: " .. (NameESPEnabled and "ON" or "OFF")
NameESPToggle.BackgroundColor3 = NameESPEnabled and Color3.fromRGB(45,75,55) or Color3.fromRGB(75,45,45)
end)
-- ==================== Toggle Hub ====================
local function toggleHub()
MainFrame.Visible = not MainFrame.Visible
ToggleButton.Text = MainFrame.Visible and "x2b16's Hub ▲" or "x2b16's Hub ▼"
end
ToggleButton.MouseButton1Click:Connect(toggleHub)
CloseBtn.MouseButton1Click:Connect(function()
MainFrame.Visible = false
ToggleButton.Text = "x2b16's Hub ▼"
end)
UserInputService.InputBegan:Connect(function(i, gp)
if gp then return end
if i.KeyCode == Enum.KeyCode.K then toggleHub() end
end)
-- ==================== Events ====================
Players.PlayerAdded:Connect(function(plr)
createESP(plr)
if GoToContent.Visible then refreshList(GoToScrolling, GoToSearch, false) end
if ViewContent.Visible then refreshList(ViewScrolling, ViewSearch, true) end
end)
Players.PlayerRemoving:Connect(function(plr)
removeESP(plr)
if GoToContent.Visible then refreshList(GoToScrolling, GoToSearch, false) end
if ViewContent.Visible then refreshList(ViewScrolling, ViewSearch, true) end
end)
LocalPlayer.CharacterAdded:Connect(function(char)
task.wait(0.5)
applySpeedAndJump(char)
end)
for _, plr in Players:GetPlayers() do
if plr ~= LocalPlayer then createESP(plr) end
end
RunService.RenderStepped:Connect(updateESP)
UserInputService.JumpRequest:Connect(function()
if InfiniteJumpEnabled then
local hum = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("Humanoid")
if hum then hum:ChangeState(Enum.HumanoidStateType.Jumping) end
end
end)
task.spawn(function()
switchTab("GoTo")
if LocalPlayer.Character then
task.wait(1)
applySpeedAndJump(LocalPlayer.Character)
end
end)
print("✅ x2b16's Hub Loaded Successfully - Unview fixed + Styled Search/Unview")[ View More ]
x2b16's HubClean GUI with Go To, View (Spectate + Unview), ESP, Jump, Speed, and Spinbot.Search bars on both Go To & View. Dynamic Unview button. Hotkey: K
- Works on mobile
- Yes