Phenix hub(upd)
Key Required

Phenix hub(upd)

Brookhaven 🏡RPThe_scripter0The_scripter0 940 views 240 executesUpdated Mar 15, 2026
5.0/ 5(2 votes)
20100% Positive
Lua Script•442 lines (15319 chars)
-- 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]

Features & Information

Sound all+esp +unban from all house... Create by c00lkids103

Community Comments (2)

TheqpwoTheqpwoMar 23, 2026

Bro these definitely chat gpt cause u did all these in like 2 weeks 💀

TheqpwoTheqpwoMar 23, 2026

If not then 10/10 🎉

More Scripts for Brookhaven 🏡RP