-- Phenix Hub for Brookhaven RP -- Modern Dark Theme GUI with Features local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer local TweenService = game:GetService("TweenService") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local Workspace = game:GetService("Workspace") local Debris = game:GetService("Debris") local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "PhenixHub" ScreenGui.ResetOnSpawn = false ScreenGui.Parent = game:GetService("CoreGui") -- Theme Colors local theme = { BgPrimary = Color3.fromRGB(25, 25, 35), BgSecondary = Color3.fromRGB(35, 35, 45), BgTertiary = Color3.fromRGB(45, 45, 60), Stroke = Color3.fromRGB(60, 60, 80), TextPrimary = Color3.fromRGB(255, 255, 255), TextSecondary = Color3.fromRGB(200, 200, 220), Accent = Color3.fromRGB(255, 140, 0), -- Phenix orange Error = Color3.fromRGB(255, 50, 50) } -- Helper Functions local function createCorner(parent, radius) local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, radius or 12) corner.Parent = parent return corner end local function createStroke(parent, thickness, color) local stroke = Instance.new("UIStroke") stroke.Thickness = thickness or 1 stroke.Color = color or theme.Stroke stroke.Parent = parent return stroke end local function makeDraggable(topbar, frame) local dragging = false local dragStart = nil local startPos = nil topbar.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = input.Position startPos = frame.Position end end) topbar.InputChanged:Connect(function(input) if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then local delta = input.Position - dragStart frame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end end) end local function notify(text) local notif = ScreenGui:FindFirstChild("Notification") if notif then notif:Destroy() end notif = Instance.new("Frame") notif.Name = "Notification" notif.Size = UDim2.new(0, 300, 0, 60) notif.Position = UDim2.new(0, -320, 0, 20) notif.BackgroundColor3 = theme.BgSecondary notif.Parent = ScreenGui createCorner(notif, 10) createStroke(notif, 2) local label = Instance.new("TextLabel") label.Size = UDim2.new(1, -20, 1, 0) label.Position = UDim2.new(0, 10, 0, 0) label.BackgroundTransparency = 1 label.Text = text label.TextColor3 = theme.TextPrimary label.TextScaled = true label.Font = Enum.Font.Gotham label.TextXAlignment = Enum.TextXAlignment.Left label.Parent = notif local ti = TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) TweenService:Create(notif, ti, {Position = UDim2.new(0, 20, 0, 20)}):Play() wait(2) local tiOut = TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.In) TweenService:Create(notif, tiOut, {Position = UDim2.new(0, -320, 0, 20)}):Play() game:GetService("Debris"):AddItem(notif, 0.4) end -- Main Frame local MainFrame = Instance.new("Frame") MainFrame.Size = UDim2.new(0, 0, 0, 0) MainFrame.Position = UDim2.new(0.5, 0, 0.5, 0) MainFrame.AnchorPoint = Vector2.new(0.5, 0.5) MainFrame.BackgroundColor3 = theme.BgPrimary MainFrame.Parent = ScreenGui createCorner(MainFrame, 12) createStroke(MainFrame, 2) -- Open Animation TweenService:Create(MainFrame, TweenInfo.new(0.5, Enum.EasingStyle.Back, Enum.EasingDirection.Out), { Size = UDim2.new(0, 550, 0, 450) }):Play() -- Title Bar local TitleBar = Instance.new("Frame") TitleBar.Size = UDim2.new(1, 0, 0, 50) TitleBar.BackgroundColor3 = Color3.fromRGB(20, 20, 30) TitleBar.Parent = MainFrame createCorner(TitleBar, 12) local TitleLabel = Instance.new("TextLabel") TitleLabel.Size = UDim2.new(1, -60, 1, 0) TitleLabel.Position = UDim2.new(0, 15, 0, 0) TitleLabel.BackgroundTransparency = 1 TitleLabel.Text = "Phenix Hub" TitleLabel.TextColor3 = theme.Accent TitleLabel.TextScaled = true TitleLabel.Font = Enum.Font.GothamBold TitleLabel.Parent = TitleBar local CloseButton = Instance.new("TextButton") CloseButton.Size = UDim2.new(0, 40, 0, 40) CloseButton.Position = UDim2.new(1, -50, 0, 5) CloseButton.BackgroundColor3 = theme.Error CloseButton.Text = "✕" CloseButton.TextColor3 = Color3.new(1,1,1) CloseButton.TextScaled = true CloseButton.Font = Enum.Font.GothamBold CloseButton.Parent = TitleBar createCorner(CloseButton, 8) CloseButton.MouseButton1Click:Connect(function() ScreenGui:Destroy() end) makeDraggable(TitleBar, MainFrame) -- Tabs Bar local TabsBar = Instance.new("Frame") TabsBar.Size = UDim2.new(1, 0, 0, 45) TabsBar.Position = UDim2.new(0, 0, 0, 50) TabsBar.BackgroundTransparency = 1 TabsBar.Parent = MainFrame local TabLayout = Instance.new("UIListLayout") TabLayout.FillDirection = Enum.FillDirection.Horizontal TabLayout.SortOrder = Enum.SortOrder.LayoutOrder TabLayout.Padding = UDim.new(0, 0) TabLayout.Parent = TabsBar -- Content Area local ContentArea = Instance.new("Frame") ContentArea.Size = UDim2.new(1, 0, 1, -95) ContentArea.Position = UDim2.new(0, 0, 0, 95) ContentArea.BackgroundTransparency = 1 ContentArea.Parent = MainFrame local ContentLayout = Instance.new("UIListLayout") ContentLayout.FillDirection = Enum.FillDirection.Vertical ContentLayout.Parent = ContentArea -- Tab Management local tabs = {"Home", "Player Tools", "Visuals", "Utilities"} local tabButtons = {} local tabContents = {} for i, tabName in ipairs(tabs) do -- Tab Button local tabBtn = Instance.new("TextButton") tabBtn.Size = UDim2.new(1 / #tabs, -4, 1, 0) tabBtn.BackgroundTransparency = 1 tabBtn.Text = tabName tabBtn.TextColor3 = theme.TextSecondary tabBtn.TextScaled = true tabBtn.Font = Enum.Font.GothamSemibold tabBtn.LayoutOrder = i tabBtn.Parent = TabsBar tabButtons[i] = tabBtn -- Tab Content local tabContent = Instance.new("ScrollingFrame") tabContent.Size = UDim2.new(1, -20, 1, -20) tabContent.Position = UDim2.new(0, 10, 0, 10) tabContent.BackgroundColor3 = theme.BgSecondary tabContent.BorderSizePixel = 0 tabContent.ScrollBarThickness = 6 tabContent.ScrollBarImageColor3 = Color3.fromRGB(100, 100, 120) tabContent.CanvasSize = UDim2.new(0, 0, 0, 0) tabContent.Visible = (i == 1) tabContent.Parent = ContentArea createCorner(tabContent, 8) createStroke(tabContent, 1) tabContents[i] = tabContent local contentList = Instance.new("UIListLayout") contentList.Padding = UDim.new(0, 8) contentList.SortOrder = Enum.SortOrder.LayoutOrder contentList.Parent = tabContent tabBtn.MouseButton1Click:Connect(function() for j = 1, #tabs do tabButtons[j].TextColor3 = theme.TextSecondary tabContents[j].Visible = false end tabBtn.TextColor3 = theme.Accent tabContent.Visible = true end) end -- Home Tab local homeLabel = Instance.new("TextLabel") homeLabel.Size = UDim2.new(1, 0, 0, 100) homeLabel.BackgroundTransparency = 1 homeLabel.Text = "Welcome to Phenix Hub\nBrookhaven Edition\n\nModern cheats at your fingertips." homeLabel.TextColor3 = theme.TextPrimary homeLabel.TextScaled = true homeLabel.Font = Enum.Font.GothamBold homeLabel.TextXAlignment = Enum.TextXAlignment.Center homeLabel.Parent = tabContents[1] -- Player Tools Tab (Player List with Teleport) local playerListUpdated = false local function updatePlayerList() for _, child in pairs(tabContents[2]:GetChildren()) do if child:IsA("TextButton") then child:Destroy() end end for _, player in pairs(Players:GetPlayers()) do if player ~= LocalPlayer and player.Character then local tpBtn = Instance.new("TextButton") tpBtn.Size = UDim2.new(1, 0, 0, 45) tpBtn.BackgroundColor3 = theme.BgTertiary tpBtn.Text = "🚀 Teleport to " .. player.Name tpBtn.TextColor3 = theme.TextPrimary tpBtn.TextScaled = true tpBtn.Font = Enum.Font.Gotham tpBtn.Parent = tabContents[2] createCorner(tpBtn, 8) createStroke(tpBtn, 1) tpBtn.MouseButton1Click:Connect(function() if player.Character and player.Character:FindFirstChild("HumanoidRootPart") and LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then LocalPlayer.Character.HumanoidRootPart.CFrame = player.Character.HumanoidRootPart.CFrame * CFrame.new(0, 0, -2) notify("Teleported to " .. player.Name) end end) end end tabContents[2].CanvasSize = UDim2.new(0, 0, 0, tabContents[2].UIListLayout.AbsoluteContentSize.Y + 20) end Players.PlayerAdded:Connect(updatePlayerList) Players.PlayerRemoving:Connect(updatePlayerList) spawn(updatePlayerList) -- Visuals Tab (ESP) local espEnabled = false local espObjects = {} local espConnection local function toggleESP() espEnabled = not espEnabled if espEnabled then for _, player in pairs(Players:GetPlayers()) do if player ~= LocalPlayer then createESP(player) end end espConnection = RunService.RenderStepped:Connect(updateESP) notify("ESP Enabled") else if espConnection then espConnection:Disconnect() end for player, obj in pairs(espObjects) do if obj.box then obj.box:Remove() end if obj.name then obj.name:Remove() end end espObjects = {} notify("ESP Disabled") end end function createESP(player) local box = Drawing.new("Square") box.Visible = false box.Color = theme.Accent box.Thickness = 2 box.Filled = false box.Transparency = 0.8 local nameTag = Drawing.new("Text") nameTag.Visible = false nameTag.Color = Color3.new(1,1,1) nameTag.Outline = true nameTag.Center = true nameTag.Size = 18 nameTag.Font = 2 espObjects[player] = {box = box, name = nameTag} end function updateESP() local camera = Workspace.CurrentCamera for player, obj in pairs(espObjects) do if player.Character and player.Character:FindFirstChild("HumanoidRootPart") and player.Character:FindFirstChild("Head") then local rootPart = player.Character.HumanoidRootPart local head = player.Character.Head local rootPos, onScreen = camera:WorldToViewportPoint(rootPart.Position) local headPos = camera:WorldToViewportPoint(head.Position + Vector3.new(0, 0.6, 0)) local legPos = camera:WorldToViewportPoint(rootPart.Position - Vector3.new(0, 3.5, 0)) local height = math.abs(legPos.Y - headPos.Y) local width = height * 0.4 obj.box.Size = Vector2.new(width, height) obj.box.Position = Vector2.new(rootPos.X - width / 2, rootPos.Y - height / 2) obj.box.Visible = onScreen obj.name.Text = player.Name obj.name.Position = Vector2.new(rootPos.X, rootPos.Y - height / 2 - 25) obj.name.Visible = onScreen else obj.box.Visible = false obj.name.Visible = false end end end local espToggle = Instance.new("TextButton") espToggle.Size = UDim2.new(1, 0, 0, 50) espToggle.BackgroundColor3 = theme.BgTertiary espToggle.Text = "👁️ Toggle ESP (OFF)" espToggle.TextColor3 = theme.TextPrimary espToggle.TextScaled = true espToggle.Font = Enum.Font.GothamBold espToggle.Parent = tabContents[3] createCorner(espToggle, 8) createStroke(espToggle, 1) espToggle.MouseButton1Click:Connect(toggleESP) Players.PlayerAdded:Connect(function(p) if espEnabled then createESP(p) end end) Players.PlayerRemoving:Connect(function(p) if espObjects[p] then if espObjects[p].box then espObjects[p].box:Remove() end if espObjects[p].name then espObjects[p].name:Remove() end espObjects[p] = nil end end) -- Utilities Tab local soundIdBox = Instance.new("TextBox") soundIdBox.Size = UDim2.new(1, 0, 0, 45) soundIdBox.BackgroundColor3 = theme.BgTertiary soundIdBox.Text = "rbxassetid://131961136" -- Default trolly sound soundIdBox.PlaceholderText = "Enter Sound ID (rbxassetid://...)" soundIdBox.TextColor3 = theme.TextPrimary soundIdBox.TextScaled = true soundIdBox.Font = Enum.Font.Gotham soundIdBox.Parent = tabContents[4] createCorner(soundIdBox, 8) createStroke(soundIdBox, 1) local soundAllBtn = Instance.new("TextButton") soundAllBtn.Size = UDim2.new(1, 0, 0, 45) soundAllBtn.Position = UDim2.new(0, 0, 0, 55) soundAllBtn.BackgroundColor3 = theme.BgTertiary soundAllBtn.Text = "🔊 Sound All Players" soundAllBtn.TextColor3 = theme.TextPrimary soundAllBtn.TextScaled = true soundAllBtn.Font = Enum.Font.GothamBold soundAllBtn.Parent = tabContents[4] createCorner(soundAllBtn, 8) createStroke(soundAllBtn, 1) soundAllBtn.MouseButton1Click:Connect(function() for _, player in pairs(Players:GetPlayers()) do if player ~= LocalPlayer and player.Character then local sound = Instance.new("Sound") sound.SoundId = soundIdBox.Text sound.Volume = 0.5 sound.Parent = player.Character sound:Play() Debris:AddItem(sound, 10) end end notify("Sound played for all players") end) local unbanBtn = Instance.new("TextButton") unbanBtn.Size = UDim2.new(1, 0, 0, 45) unbanBtn.Position = UDim2.new(0, 0, 0, 110) unbanBtn.BackgroundColor3 = theme.BgTertiary unbanBtn.Text = "🏠 Unban From All Houses" unbanBtn.TextColor3 = theme.TextPrimary unbanBtn.TextScaled = true unbanBtn.Font = Enum.Font.GothamBold unbanBtn.Parent = tabContents[4] createCorner(unbanBtn, 8) createStroke(unbanBtn, 1) unbanBtn.MouseButton1Click:Connect(function() local unbannedCount = 0 if Workspace:FindFirstChild("Houses") then for _, house in pairs(Workspace.Houses:GetChildren()) do if house.Name:find("House") and house:FindFirstChild("Info") then local bans = house.Info:FindFirstChild("Bans") if bans then local myBan = bans:FindFirstChild(LocalPlayer.Name) if myBan and myBan:IsA("BoolValue") then myBan.Value = false unbannedCount = unbannedCount + 1 end end end end end notify("Unbanned from " .. unbannedCount .. " houses") end) local extraLabel = Instance.new("TextLabel") extraLabel.Size = UDim2.new(1, 0, 0, 100) extraLabel.Position = UDim2.new(0, 0, 0, 165) extraLabel.BackgroundTransparency = 1 extraLabel.Text = "Extra Utilities\nComing Soon..." extraLabel.TextColor3 = theme.TextSecondary extraLabel.TextScaled = true extraLabel.Font = Enum.Font.Gotham extraLabel.TextXAlignment = Enum.TextXAlignment.Center extraLabel.Parent = tabContents[4]