
Key RequiredUniversal

-- [[ XDEMIC COMPLETE CHAT SYSTEM ]] --
-- [[ GLOBAL CHAT | LOCAL BUBBLES | AUTO BIO | RANKS ]] --
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local CoreGui = game:GetService("CoreGui")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RunService = game:GetService("RunService")
if CoreGui:FindFirstChild("XdemicCompleteChat") then CoreGui.XdemicCompleteChat:Destroy() end
-- ========== RANKS & GOD PLAYERS ==========
local godPlayers = {"DAVID_BLOX65", "@DAVID_BLOX65", "KAISER"}
local vipPlayers = {"EMPIRECLAN", "XDEMIC", "KAISER"}
local function getPlayerRank(player)
for _, god in ipairs(godPlayers) do
if string.upper(player.Name) == string.upper(god) then
return "👑 GOD"
end
end
for _, vip in ipairs(vipPlayers) do
if string.upper(player.Name) == string.upper(vip) then
return "⭐ VIP"
end
end
return "💬 MEMBER"
end
local isGod = false
for _, god in ipairs(godPlayers) do
if string.upper(LocalPlayer.Name) == string.upper(god) then
isGod = true
break
end
end
-- ========== CHANGE BROOKHAVEN BIO ==========
local function changeBio()
local rank = getPlayerRank(LocalPlayer)
local bioText = "Xdemic Chat User | " .. rank
-- Brookhaven bio change remote
local args = {
[1] = bioText
}
local success, err = pcall(function()
local remote = ReplicatedStorage:FindFirstChild("RE")
if remote and remote:FindFirstChild("1Bio1Change") then
remote["1Bio1Change"]:FireServer(unpack(args))
elseif ReplicatedStorage:FindFirstChild("UpdateBio") then
ReplicatedStorage.UpdateBio:FireServer(bioText)
end
end)
print("Bio changed to: " .. bioText)
return bioText
end
-- ========== VARIABLES ==========
local chatBubbles = {}
local customNames = {}
local rgbEnabled = true
local hue = 0
local currentTab = "GLOBAL"
-- ========== CREATE MAIN GUI ==========
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "XdemicCompleteChat"
ScreenGui.Parent = CoreGui
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
local MainFrame = Instance.new("Frame")
MainFrame.Size = UDim2.new(0, 650, 0, 720)
MainFrame.Position = UDim2.new(0.5, -325, 0.5, -360)
MainFrame.BackgroundColor3 = Color3.fromRGB(8, 10, 16)
MainFrame.Parent = ScreenGui
MainFrame.Active = true
MainFrame.Draggable = true
Instance.new("UICorner", MainFrame).CornerRadius = UDim.new(0, 16)
-- Top Bar
local TopBar = Instance.new("Frame")
TopBar.Size = UDim2.new(1, 0, 0, 60)
TopBar.BackgroundColor3 = Color3.fromRGB(18, 20, 28)
TopBar.Parent = MainFrame
Instance.new("UICorner", TopBar).CornerRadius = UDim.new(0, 16)
local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(0.5, 0, 1, 0)
Title.Position = UDim2.new(0.05, 0, 0, 0)
Title.Text = "💬 XDEMIC COMPLETE CHAT"
Title.TextColor3 = Color3.fromRGB(255, 255, 255)
Title.BackgroundTransparency = 1
Title.Font = Enum.Font.GothamBold
Title.TextSize = 18
Title.Parent = TopBar
local BioLabel = Instance.new("TextLabel")
BioLabel.Size = UDim2.new(0.4, 0, 0.4, 0)
BioLabel.Position = UDim2.new(0.55, 0, 0.3, 0)
BioLabel.Text = "📝 Bio: " .. getPlayerRank(LocalPlayer)
BioLabel.TextColor3 = Color3.fromRGB(100, 255, 100)
BioLabel.BackgroundTransparency = 1
BioLabel.Font = Enum.Font.Gotham
BioLabel.TextSize = 10
BioLabel.Parent = TopBar
-- Close Button
local CloseScriptBtn = Instance.new("TextButton")
CloseScriptBtn.Size = UDim2.new(0, 40, 0, 40)
CloseScriptBtn.Position = UDim2.new(1, -48, 0, 10)
CloseScriptBtn.Text = "✕"
CloseScriptBtn.BackgroundColor3 = Color3.fromRGB(200, 50, 50)
CloseScriptBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
CloseScriptBtn.Font = Enum.Font.GothamBold
CloseScriptBtn.TextSize = 16
CloseScriptBtn.Parent = TopBar
Instance.new("UICorner", CloseScriptBtn).CornerRadius = UDim.new(0, 10)
-- ========== TAB BUTTONS ==========
local GlobalTab = Instance.new("TextButton")
GlobalTab.Size = UDim2.new(0.23, 0, 0, 42)
GlobalTab.Position = UDim2.new(0.02, 0, 0.1, 0)
GlobalTab.Text = "🌐 GLOBAL"
GlobalTab.BackgroundColor3 = Color3.fromRGB(80, 85, 200)
GlobalTab.TextColor3 = Color3.fromRGB(255, 255, 255)
GlobalTab.Font = Enum.Font.GothamBold
GlobalTab.TextSize = 14
GlobalTab.Parent = MainFrame
Instance.new("UICorner", GlobalTab).CornerRadius = UDim.new(0, 8)
local LocalChatTab = Instance.new("TextButton")
LocalChatTab.Size = UDim2.new(0.23, 0, 0, 42)
LocalChatTab.Position = UDim2.new(0.26, 0, 0.1, 0)
LocalChatTab.Text = "💬 LOCAL"
LocalChatTab.BackgroundColor3 = Color3.fromRGB(40, 42, 50)
LocalChatTab.TextColor3 = Color3.fromRGB(255, 255, 255)
LocalChatTab.Font = Enum.Font.GothamBold
LocalChatTab.TextSize = 14
LocalChatTab.Parent = MainFrame
Instance.new("UICorner", LocalChatTab).CornerRadius = UDim.new(0, 8)
local PrivateTab = Instance.new("TextButton")
PrivateTab.Size = UDim2.new(0.23, 0, 0, 42)
PrivateTab.Position = UDim2.new(0.5, 0, 0.1, 0)
PrivateTab.Text = "🔒 PRIVATE"
PrivateTab.BackgroundColor3 = Color3.fromRGB(40, 42, 50)
PrivateTab.TextColor3 = Color3.fromRGB(255, 255, 255)
PrivateTab.Font = Enum.Font.GothamBold
PrivateTab.TextSize = 14
PrivateTab.Parent = MainFrame
Instance.new("UICorner", PrivateTab).CornerRadius = UDim.new(0, 8)
local SettingsTab = Instance.new("TextButton")
SettingsTab.Size = UDim2.new(0.23, 0, 0, 42)
SettingsTab.Position = UDim2.new(0.74, 0, 0.1, 0)
SettingsTab.Text = "⚙️ SETTINGS"
SettingsTab.BackgroundColor3 = Color3.fromRGB(40, 42, 50)
SettingsTab.TextColor3 = Color3.fromRGB(255, 255, 255)
SettingsTab.Font = Enum.Font.GothamBold
SettingsTab.TextSize = 14
SettingsTab.Parent = MainFrame
Instance.new("UICorner", SettingsTab).CornerRadius = UDim.new(0, 8)
-- ========== GLOBAL CHAT TAB ==========
local GlobalContainer = Instance.new("Frame")
GlobalContainer.Size = UDim2.new(0.96, 0, 0.6, 0)
GlobalContainer.Position = UDim2.new(0.02, 0, 0.18, 0)
GlobalContainer.BackgroundColor3 = Color3.fromRGB(15, 17, 24)
GlobalContainer.Parent = MainFrame
Instance.new("UICorner", GlobalContainer).CornerRadius = UDim.new(0, 12)
local GlobalScroll = Instance.new("ScrollingFrame")
GlobalScroll.Size = UDim2.new(1, 0, 1, 0)
GlobalScroll.BackgroundTransparency = 1
GlobalScroll.CanvasSize = UDim2.new(0, 0, 0, 0)
GlobalScroll.ScrollBarThickness = 4
GlobalScroll.Parent = GlobalContainer
local GlobalLayout = Instance.new("UIListLayout")
GlobalLayout.Padding = UDim.new(0, 8)
GlobalLayout.Parent = GlobalScroll
local GlobalInput = Instance.new("TextBox")
GlobalInput.Size = UDim2.new(0.96, 0, 0, 50)
GlobalInput.Position = UDim2.new(0.02, 0, 0.8, 0)
GlobalInput.BackgroundColor3 = Color3.fromRGB(28, 30, 38)
GlobalInput.TextColor3 = Color3.fromRGB(255, 255, 255)
GlobalInput.PlaceholderText = "🌐 Type global message... (all servers)"
GlobalInput.PlaceholderColor3 = Color3.fromRGB(100, 105, 130)
GlobalInput.Text = ""
GlobalInput.Font = Enum.Font.Gotham
GlobalInput.TextSize = 14
GlobalInput.Parent = MainFrame
Instance.new("UICorner", GlobalInput).CornerRadius = UDim.new(0, 10)
local GlobalSend = Instance.new("TextButton")
GlobalSend.Size = UDim2.new(0.96, 0, 0, 45)
GlobalSend.Position = UDim2.new(0.02, 0, 0.88, 0)
GlobalSend.Text = "🌍 SEND GLOBAL"
GlobalSend.BackgroundColor3 = Color3.fromRGB(80, 85, 200)
GlobalSend.TextColor3 = Color3.fromRGB(255, 255, 255)
GlobalSend.Font = Enum.Font.GothamBold
GlobalSend.TextSize = 14
GlobalSend.Parent = MainFrame
Instance.new("UICorner", GlobalSend).CornerRadius = UDim.new(0, 10)
-- ========== LOCAL CHAT TAB ==========
local LocalContainer = Instance.new("Frame")
LocalContainer.Size = UDim2.new(0.96, 0, 0.6, 0)
LocalContainer.Position = UDim2.new(0.02, 0, 0.18, 0)
LocalContainer.BackgroundColor3 = Color3.fromRGB(15, 17, 24)
LocalContainer.Parent = MainFrame
LocalContainer.Visible = false
Instance.new("UICorner", LocalContainer).CornerRadius = UDim.new(0, 12)
local LocalScroll = Instance.new("ScrollingFrame")
LocalScroll.Size = UDim2.new(1, 0, 1, 0)
LocalScroll.BackgroundTransparency = 1
LocalScroll.CanvasSize = UDim2.new(0, 0, 0, 0)
LocalScroll.ScrollBarThickness = 4
LocalScroll.Parent = LocalContainer
local LocalLayout = Instance.new("UIListLayout")
LocalLayout.Padding = UDim.new(0, 8)
LocalLayout.Parent = LocalScroll
local LocalInput = Instance.new("TextBox")
LocalInput.Size = UDim2.new(0.96, 0, 0, 50)
LocalInput.Position = UDim2.new(0.02, 0, 0.8, 0)
LocalInput.BackgroundColor3 = Color3.fromRGB(28, 30, 38)
LocalInput.TextColor3 = Color3.fromRGB(255, 255, 255)
LocalInput.PlaceholderText = "💬 Type local message... (same server, shows bubble)"
LocalInput.PlaceholderColor3 = Color3.fromRGB(100, 105, 130)
LocalInput.Text = ""
LocalInput.Font = Enum.Font.Gotham
LocalInput.TextSize = 14
LocalInput.Parent = MainFrame
LocalInput.Visible = false
Instance.new("UICorner", LocalInput).CornerRadius = UDim.new(0, 10)
local LocalSend = Instance.new("TextButton")
LocalSend.Size = UDim2.new(0.96, 0, 0, 45)
LocalSend.Position = UDim2.new(0.02, 0, 0.88, 0)
LocalSend.Text = "💬 SEND LOCAL (WITH BUBBLE)"
LocalSend.BackgroundColor3 = Color3.fromRGB(80, 85, 200)
LocalSend.TextColor3 = Color3.fromRGB(255, 255, 255)
LocalSend.Font = Enum.Font.GothamBold
LocalSend.TextSize = 13
LocalSend.Parent = MainFrame
LocalSend.Visible = false
Instance.new("UICorner", LocalSend).CornerRadius = UDim.new(0, 10)
-- ========== PRIVATE CHAT TAB ==========
local PrivateContainer = Instance.new("Frame")
PrivateContainer.Size = UDim2.new(0.96, 0, 0.6, 0)
PrivateContainer.Position = UDim2.new(0.02, 0, 0.18, 0)
PrivateContainer.BackgroundColor3 = Color3.fromRGB(15, 17, 24)
PrivateContainer.Parent = MainFrame
PrivateContainer.Visible = false
Instance.new("UICorner", PrivateContainer).CornerRadius = UDim.new(0, 12)
local PrivateScroll = Instance.new("ScrollingFrame")
PrivateScroll.Size = UDim2.new(1, 0, 1, 0)
PrivateScroll.BackgroundTransparency = 1
PrivateScroll.CanvasSize = UDim2.new(0, 0, 0, 0)
PrivateScroll.ScrollBarThickness = 4
PrivateScroll.Parent = PrivateContainer
local PrivateLayout = Instance.new("UIListLayout")
PrivateLayout.Padding = UDim.new(0, 8)
PrivateLayout.Parent = PrivateScroll
-- Player List
local PlayerListFrame = Instance.new("Frame")
PlayerListFrame.Size = UDim2.new(0.3, 0, 0.6, 0)
PlayerListFrame.Position = UDim2.new(0.02, 0, 0.18, 0)
PlayerListFrame.BackgroundColor3 = Color3.fromRGB(22, 24, 32)
PlayerListFrame.Parent = MainFrame
PlayerListFrame.Visible = false
Instance.new("UICorner", PlayerListFrame).CornerRadius = UDim.new(0, 12)
local PlayerListScroll = Instance.new("ScrollingFrame")
PlayerListScroll.Size = UDim2.new(1, 0, 1, 0)
PlayerListScroll.BackgroundTransparency = 1
PlayerListScroll.CanvasSize = UDim2.new(0, 0, 0, 0)
PlayerListScroll.ScrollBarThickness = 4
PlayerListScroll.Parent = PlayerListFrame
local PlayerListLayout = Instance.new("UIListLayout")
PlayerListLayout.Padding = UDim.new(0, 5)
PlayerListLayout.Parent = PlayerListScroll
local PrivateInput = Instance.new("TextBox")
PrivateInput.Size = UDim2.new(0.6, 0, 0, 50)
PrivateInput.Position = UDim2.new(0.34, 0, 0.8, 0)
PrivateInput.BackgroundColor3 = Color3.fromRGB(28, 30, 38)
PrivateInput.TextColor3 = Color3.fromRGB(255, 255, 255)
PrivateInput.PlaceholderText = "🔒 Private message..."
PrivateInput.PlaceholderColor3 = Color3.fromRGB(100, 105, 130)
PrivateInput.Text = ""
PrivateInput.Font = Enum.Font.Gotham
PrivateInput.TextSize = 14
PrivateInput.Parent = MainFrame
PrivateInput.Visible = false
Instance.new("UICorner", PrivateInput).CornerRadius = UDim.new(0, 10)
local PrivateSend = Instance.new("TextButton")
PrivateSend.Size = UDim2.new(0.2, 0, 0, 45)
PrivateSend.Position = UDim2.new(0.74, 0, 0.88, 0)
PrivateSend.Text = "🔒 SEND"
PrivateSend.BackgroundColor3 = Color3.fromRGB(100, 90, 220)
PrivateSend.TextColor3 = Color3.fromRGB(255, 255, 255)
PrivateSend.Font = Enum.Font.GothamBold
PrivateSend.TextSize = 13
PrivateSend.Parent = MainFrame
PrivateSend.Visible = false
Instance.new("UICorner", PrivateSend).CornerRadius = UDim.new(0, 10)
local ExitPrivateBtn = Instance.new("TextButton")
ExitPrivateBtn.Size = UDim2.new(0, 100, 0, 35)
ExitPrivateBtn.Position = UDim2.new(0.8, 0, 0.1, 0)
ExitPrivateBtn.Text = "🚪 EXIT"
ExitPrivateBtn.BackgroundColor3 = Color3.fromRGB(200, 80, 80)
ExitPrivateBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
ExitPrivateBtn.Font = Enum.Font.GothamBold
ExitPrivateBtn.TextSize = 12
ExitPrivateBtn.Parent = MainFrame
ExitPrivateBtn.Visible = false
Instance.new("UICorner", ExitPrivateBtn).CornerRadius = UDim.new(0, 8)
-- ========== SETTINGS TAB ==========
local SettingsContainer = Instance.new("Frame")
SettingsContainer.Size = UDim2.new(0.96, 0, 0.68, 0)
SettingsContainer.Position = UDim2.new(0.02, 0, 0.18, 0)
SettingsContainer.BackgroundColor3 = Color3.fromRGB(15, 17, 24)
SettingsContainer.Parent = MainFrame
SettingsContainer.Visible = false
Instance.new("UICorner", SettingsContainer).CornerRadius = UDim.new(0, 12)
local NameLabel = Instance.new("TextLabel")
NameLabel.Size = UDim2.new(0.9, 0, 0, 30)
NameLabel.Position = UDim2.new(0.05, 0, 0.05, 0)
NameLabel.Text = isGod and "👑 GOD NAME CHANGE" or "🔒 NAME CHANGE (GOD ONLY)"
NameLabel.TextColor3 = isGod and Color3.fromRGB(100, 255, 100) or Color3.fromRGB(200, 100, 100)
NameLabel.BackgroundTransparency = 1
NameLabel.Font = Enum.Font.GothamBold
NameLabel.TextSize = 13
NameLabel.Parent = SettingsContainer
local NameInput = Instance.new("TextBox")
NameInput.Size = UDim2.new(0.6, 0, 0, 40)
NameInput.Position = UDim2.new(0.05, 0, 0.12, 0)
NameInput.BackgroundColor3 = Color3.fromRGB(28, 30, 38)
NameInput.TextColor3 = Color3.fromRGB(255, 255, 255)
NameInput.PlaceholderText = isGod and "Enter custom name..." or "Only GOD players"
NameInput.Text = LocalPlayer.Name
NameInput.Font = Enum.Font.Gotham
NameInput.TextSize = 14
NameInput.Parent = SettingsContainer
NameInput.Visible = isGod
Instance.new("UICorner", NameInput).CornerRadius = UDim.new(0, 8)
local NameApply = Instance.new("TextButton")
NameApply.Size = UDim2.new(0.25, 0, 0, 38)
NameApply.Position = UDim2.new(0.68, 0, 0.12, 0)
NameApply.Text = "APPLY"
NameApply.BackgroundColor3 = Color3.fromRGB(80, 85, 200)
NameApply.TextColor3 = Color3.fromRGB(255, 255, 255)
NameApply.Font = Enum.Font.GothamBold
NameApply.TextSize = 13
NameApply.Parent = SettingsContainer
NameApply.Visible = isGod
Instance.new("UICorner", NameApply).CornerRadius = UDim.new(0, 8)
-- RGB Toggle
local RGBLabel = Instance.new("TextLabel")
RGBLabel.Size = UDim2.new(0.9, 0, 0, 30)
RGBLabel.Position = UDim2.new(0.05, 0, 0.25, 0)
RGBLabel.Text = isGod and "🎨 RGB NAME COLOR" or "🔒 RGB NAMES (GOD ONLY)"
RGBLabel.TextColor3 = isGod and Color3.fromRGB(100, 255, 100) or Color3.fromRGB(200, 100, 100)
RGBLabel.BackgroundTransparency = 1
RGBLabel.Font = Enum.Font.GothamBold
RGBLabel.TextSize = 13
RGBLabel.Parent = SettingsContainer
local RGBToggle = Instance.new("TextButton")
RGBToggle.Size = UDim2.new(0.6, 0, 0, 40)
RGBToggle.Position = UDim2.new(0.05, 0, 0.32, 0)
RGBToggle.Text = "🎨 RGB NAMES: ON"
RGBToggle.BackgroundColor3 = Color3.fromRGB(80, 85, 200)
RGBToggle.TextColor3 = Color3.fromRGB(255, 255, 255)
RGBToggle.Font = Enum.Font.GothamBold
RGBToggle.TextSize = 14
RGBToggle.Parent = SettingsContainer
RGBToggle.Visible = isGod
Instance.new("UICorner", RGBToggle).CornerRadius = UDim.new(0, 8)
-- ========== CHAT BUBBLE FUNCTION (LIKE ROBLOX, STAYS 10 SEC) ==========
local function createChatBubble(player, message)
if not player or not player.Character then return end
local head = player.Character:FindFirstChild("Head")
if not head then return end
-- Remove existing bubble
if chatBubbles[player] then
chatBubbles[player]:Destroy()
end
-- Create new bubble
local billboard = Instance.new("BillboardGui")
billboard.Name = "XdemicChatBubble"
billboard.Adornee = head
billboard.Size = UDim2.new(0, 200, 0, 60)
billboard.StudsOffset = Vector3.new(0, 2.5, 0)
billboard.AlwaysOnTop = true
billboard.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
billboard.Parent = head
local bubbleFrame = Instance.new("Frame")
bubbleFrame.Size = UDim2.new(1, 0, 1, 0)
bubbleFrame.BackgroundColor3 = Color3.fromRGB(25, 28, 38)
bubbleFrame.BackgroundTransparency = 0.1
bubbleFrame.Parent = billboard
Instance.new("UICorner", bubbleFrame).CornerRadius = UDim.new(0, 12)
local stroke = Instance.new("UIStroke", bubbleFrame)
stroke.Color = Color3.fromRGB(80, 85, 200)
stroke.Thickness = 2
local rank = getPlayerRank(player)
local rankColor = rank == "👑 GOD" and Color3.fromRGB(255, 215, 0) or (rank == "⭐ VIP" and Color3.fromRGB(100, 255, 100) or Color3.fromRGB(80, 150, 255))
local rankLabel = Instance.new("TextLabel")
rankLabel.Size = UDim2.new(1, 0, 0, 18)
rankLabel.Position = UDim2.new(0, 0, 0, 2)
rankLabel.Text = rank .. " | " .. player.Name
rankLabel.TextColor3 = rankColor
rankLabel.BackgroundTransparency = 1
rankLabel.Font = Enum.Font.GothamBold
rankLabel.TextSize = 11
rankLabel.TextXAlignment = Enum.TextXAlignment.Center
rankLabel.Parent = bubbleFrame
local msgLabel = Instance.new("TextLabel")
msgLabel.Size = UDim2.new(1, 0, 0, 35)
msgLabel.Position = UDim2.new(0, 0, 0, 20)
msgLabel.Text = message
msgLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
msgLabel.BackgroundTransparency = 1
msgLabel.TextWrapped = true
msgLabel.Font = Enum.Font.Gotham
msgLabel.TextSize = 13
msgLabel.TextXAlignment = Enum.TextXAlignment.Center
msgLabel.Parent = bubbleFrame
chatBubbles[player] = billboard
-- Auto remove after 10 seconds
task.wait(10)
if chatBubbles[player] then
chatBubbles[player]:Destroy()
chatBubbles[player] = nil
end
end
-- ========== FUNCTIONS ==========
local function getDisplayName(player)
if customNames[player.UserId] then
return customNames[player.UserId]
end
return player.Name
end
local function getRGBColor(player)
if rgbEnabled and isGod then
local r = math.sin(hue) * 0.5 + 0.5
local g = math.sin(hue + 2.094) * 0.5 + 0.5
local b = math.sin(hue + 4.188) * 0.5 + 0.5
return Color3.new(r, g, b)
end
return Color3.fromRGB(180, 190, 255)
end
local function antiTag(msg)
local result = ""
for i = 1, #msg do
result = result .. msg:sub(i, i)
if i % 3 == 0 then
result = result .. "\226\128\139"
end
end
return result
end
-- ========== ADD MESSAGES TO UI ==========
local function addGlobalMessage(player, message, isSystem)
local msgFrame = Instance.new("Frame")
msgFrame.Size = UDim2.new(1, 0, 0, 0)
msgFrame.AutomaticSize = Enum.AutomaticSize.Y
msgFrame.BackgroundTransparency = 1
msgFrame.Parent = GlobalScroll
local rank = isSystem and "🔔" or getPlayerRank(player)
local rankColor = isSystem and Color3.fromRGB(255, 200, 100) or (rank == "👑 GOD" and Color3.fromRGB(255, 215, 0) or (rank == "⭐ VIP" and Color3.fromRGB(100, 255, 100) or Color3.fromRGB(80, 150, 255)))
local nameLabel = Instance.new("TextLabel")
nameLabel.Size = UDim2.new(1, 0, 0, 20)
nameLabel.Text = isSystem and "🔔 SYSTEM:" or rank .. " " .. getDisplayName(player) .. ":"
nameLabel.TextColor3 = rankColor
nameLabel.BackgroundTransparency = 1
nameLabel.Font = Enum.Font.GothamBold
nameLabel.TextSize = 12
nameLabel.TextXAlignment = Enum.TextXAlignment.Left
nameLabel.Parent = msgFrame
local msgLabel = Instance.new("TextLabel")
msgLabel.Size = UDim2.new(1, 0, 0, 0)
msgLabel.AutomaticSize = Enum.AutomaticSize.Y
msgLabel.Position = UDim2.new(0, 0, 0, 22)
msgLabel.Text = message
msgLabel.TextColor3 = Color3.fromRGB(220, 220, 240)
msgLabel.BackgroundTransparency = 1
msgLabel.TextWrapped = true
msgLabel.Font = Enum.Font.Gotham
msgLabel.TextSize = 13
msgLabel.Parent = msgFrame
task.wait(0.05)
GlobalScroll.CanvasPosition = Vector2.new(0, GlobalLayout.AbsoluteContentSize.Y)
GlobalScroll.CanvasSize = UDim2.new(0, 0, 0, GlobalLayout.AbsoluteContentSize.Y + 50)
end
local function addLocalMessage(player, message)
local msgFrame = Instance.new("Frame")
msgFrame.Size = UDim2.new(1, 0, 0, 0)
msgFrame.AutomaticSize = Enum.AutomaticSize.Y
msgFrame.BackgroundTransparency = 1
msgFrame.Parent = LocalScroll
local rank = getPlayerRank(player)
local rankColor = rank == "👑 GOD" and Color3.fromRGB(255, 215, 0) or (rank == "⭐ VIP" and Color3.fromRGB(100, 255, 100) or Color3.fromRGB(80, 150, 255))
local nameLabel = Instance.new("TextLabel")
nameLabel.Size = UDim2.new(1, 0, 0, 20)
nameLabel.Text = rank .. " " .. getDisplayName(player) .. " [LOCAL]:"
nameLabel.TextColor3 = rankColor
nameLabel.BackgroundTransparency = 1
nameLabel.Font = Enum.Font.GothamBold
nameLabel.TextSize = 12
nameLabel.TextXAlignment = Enum.TextXAlignment.Left
nameLabel.Parent = msgFrame
local msgLabel = Instance.new("TextLabel")
msgLabel.Size = UDim2.new(1, 0, 0, 0)
msgLabel.AutomaticSize = Enum.AutomaticSize.Y
msgLabel.Position = UDim2.new(0, 0, 0, 22)
msgLabel.Text = message
msgLabel.TextColor3 = Color3.fromRGB(220, 220, 240)
msgLabel.BackgroundTransparency = 1
msgLabel.TextWrapped = true
msgLabel.Font = Enum.Font.Gotham
msgLabel.TextSize = 13
msgLabel.Parent = msgFrame
task.wait(0.05)
LocalScroll.CanvasPosition = Vector2.new(0, LocalLayout.AbsoluteContentSize.Y)
LocalScroll.CanvasSize = UDim2.new(0, 0, 0, LocalLayout.AbsoluteContentSize.Y + 50)
-- Create bubble for local messages
createChatBubble(player, message)
end
local function addPrivateMessage(sender, message, isOwn)
local msgFrame = Instance.new("Frame")
msgFrame.Size = UDim2.new(1, 0, 0, 0)
msgFrame.AutomaticSize = Enum.AutomaticSize.Y
msgFrame.BackgroundTransparency = 1
msgFrame.Parent = PrivateScroll
local bubble = Instance.new("Frame")
bubble.Size = UDim2.new(0.7, 0, 0, 0)
bubble.AutomaticSize = Enum.AutomaticSize.Y
bubble.Position = isOwn and UDim2.new(0.3, -10, 0, 0) or UDim2.new(0, 10, 0, 0)
bubble.BackgroundColor3 = isOwn and Color3.fromRGB(80, 85, 200) or Color3.fromRGB(40, 42, 55)
bubble.Parent = msgFrame
Instance.new("UICorner", bubble).CornerRadius = UDim.new(0, 12)
local rank = getPlayerRank(sender)
local rankColor = rank == "👑 GOD" and Color3.fromRGB(255, 215, 0) or (rank == "⭐ VIP" and Color3.fromRGB(100, 255, 100) or Color3.fromRGB(80, 150, 255))
local nameLabel = Instance.new("TextLabel")
nameLabel.Size = UDim2.new(0.98, 0, 0, 18)
nameLabel.Position = UDim2.new(0.01, 0, 0.02, 0)
nameLabel.Text = rank .. " " .. getDisplayName(sender) .. " [PRIVATE]:"
nameLabel.TextColor3 = rankColor
nameLabel.BackgroundTransparency = 1
nameLabel.Font = Enum.Font.GothamBold
nameLabel.TextSize = 11
nameLabel.TextXAlignment = Enum.TextXAlignment.Left
nameLabel.Parent = bubble
local msgLabel = Instance.new("TextLabel")
msgLabel.Size = UDim2.new(0.98, 0, 0, 0)
msgLabel.AutomaticSize = Enum.AutomaticSize.Y
msgLabel.Position = UDim2.new(0.01, 0, 0.22, 0)
msgLabel.Text = message
msgLabel.TextColor3 = Color3.fromRGB(220, 220, 240)
msgLabel.BackgroundTransparency = 1
msgLabel.TextWrapped = true
msgLabel.Font = Enum.Font.Gotham
msgLabel.TextSize = 13
msgLabel.Parent = bubble
task.wait(0.05)
PrivateScroll.CanvasPosition = Vector2.new(0, PrivateLayout.AbsoluteContentSize.Y)
PrivateScroll.CanvasSize = UDim2.new(0, 0, 0, PrivateLayout.AbsoluteContentSize.Y + 50)
end
-- ========== UPDATE PLAYER LIST ==========
local function updatePlayerList()
for _, v in pairs(PlayerListScroll:GetChildren()) do
if v:IsA("TextButton") then v:Destroy() end
end
for _, player in pairs(Players:GetPlayers()) do
if player ~= LocalPlayer then
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(0.96, 0, 0, 45)
btn.Position = UDim2.new(0.02, 0, 0, 0)
local rank = getPlayerRank(player)
btn.Text = rank .. " " .. getDisplayName(player)
btn.BackgroundColor3 = Color3.fromRGB(35, 37, 48)
btn.TextColor3 = rank == "👑 GOD" and Color3.fromRGB(255, 215, 0) or Color3.fromRGB(255, 255, 255)
btn.Font = Enum.Font.GothamBold
btn.TextSize = 12
btn.Parent = PlayerListScroll
Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 8)
btn.MouseButton1Click:Connect(function()
privateChatPartner = player
addPrivateMessage(LocalPlayer, "Started private chat with " .. getDisplayName(player), true)
PrivateInput.Visible = true
PrivateSend.Visible = true
ExitPrivateBtn.Visible = true
PlayerListFrame.Visible = false
PrivateContainer.Visible = true
end)
end
end
end
-- ========== SEND MESSAGES ==========
GlobalSend.MouseButton1Click:Connect(function()
if GlobalInput.Text ~= "" then
local msg = antiTag(GlobalInput.Text)
addGlobalMessage(LocalPlayer, msg, false)
GlobalInput.Text = ""
end
end)
LocalSend.MouseButton1Click:Connect(function()
if LocalInput.Text ~= "" then
local msg = antiTag(LocalInput.Text)
addLocalMessage(LocalPlayer, msg)
LocalInput.Text = ""
end
end)
PrivateSend.MouseButton1Click:Connect(function()
if PrivateInput.Text ~= "" and privateChatPartner then
local msg = antiTag(PrivateInput.Text)
addPrivateMessage(LocalPlayer, msg, true)
PrivateInput.Text = ""
end
end)
-- ========== EXIT PRIVATE ==========
ExitPrivateBtn.MouseButton1Click:Connect(function()
privateChatPartner = nil
PrivateInput.Visible = false
PrivateSend.Visible = false
ExitPrivateBtn.Visible = false
PlayerListFrame.Visible = true
PrivateContainer.Visible = false
for _, v in pairs(PrivateScroll:GetChildren()) do
if v:IsA("Frame") then v:Destroy() end
end
end)
-- ========== TAB SWITCHING ==========
GlobalTab.MouseButton1Click:Connect(function()
currentTab = "GLOBAL"
GlobalTab.BackgroundColor3 = Color3.fromRGB(80, 85, 200)
LocalChatTab.BackgroundColor3 = Color3.fromRGB(40, 42, 50)
PrivateTab.BackgroundColor3 = Color3.fromRGB(40, 42, 50)
SettingsTab.BackgroundColor3 = Color3.fromRGB(40, 42, 50)
GlobalContainer.Visible = true
LocalContainer.Visible = false
PrivateContainer.Visible = false
SettingsContainer.Visible = false
PlayerListFrame.Visible = false
GlobalInput.Visible = true
GlobalSend.Visible = true
LocalInput.Visible = false
LocalSend.Visible = false
PrivateInput.Visible = false
PrivateSend.Visible = false
ExitPrivateBtn.Visible = false
end)
LocalChatTab.MouseButton1Click:Connect(function()
currentTab = "LOCAL"
GlobalTab.BackgroundColor3 = Color3.fromRGB(40, 42, 50)
LocalChatTab.BackgroundColor3 = Color3.fromRGB(80, 85, 200)
PrivateTab.BackgroundColor3 = Color3.fromRGB(40, 42, 50)
SettingsTab.BackgroundColor3 = Color3.fromRGB(40, 42, 50)
GlobalContainer.Visible = false
LocalContainer.Visible = true
PrivateContainer.Visible = false
SettingsContainer.Visible = false
PlayerListFrame.Visible = false
GlobalInput.Visible = false
GlobalSend.Visible = false
LocalInput.Visible = true
LocalSend.Visible = true
PrivateInput.Visible = false
PrivateSend.Visible = false
ExitPrivateBtn.Visible = false
end)
PrivateTab.MouseButton1Click:Connect(function()
currentTab = "PRIVATE"
GlobalTab.BackgroundColor3 = Color3.fromRGB(40, 42, 50)
LocalChatTab.BackgroundColor3 = Color3.fromRGB(40, 42, 50)
PrivateTab.BackgroundColor3 = Color3.fromRGB(80, 85, 200)
SettingsTab.BackgroundColor3 = Color3.fromRGB(40, 42, 50)
GlobalContainer.Visible = false
LocalContainer.Visible = false
PrivateContainer.Visible = false
SettingsContainer.Visible = false
PlayerListFrame.Visible = true
GlobalInput.Visible = false
GlobalSend.Visible = false
LocalInput.Visible = false
LocalSend.Visible = false
PrivateInput.Visible = false
PrivateSend.Visible = false
ExitPrivateBtn.Visible = false
updatePlayerList()
end)
SettingsTab.MouseButton1Click:Connect(function()
currentTab = "SETTINGS"
GlobalTab.BackgroundColor3 = Color3.fromRGB(40, 42, 50)
LocalChatTab.BackgroundColor3 = Color3.fromRGB(40, 42, 50)
PrivateTab.BackgroundColor3 = Color3.fromRGB(40, 42, 50)
SettingsTab.BackgroundColor3 = Color3.fromRGB(80, 85, 200)
GlobalContainer.Visible = false
LocalContainer.Visible = false
PrivateContainer.Visible = false
SettingsContainer.Visible = true
PlayerListFrame.Visible = false
GlobalInput.Visible = false
GlobalSend.Visible = false
LocalInput.Visible = false
LocalSend.Visible = false
PrivateInput.Visible = false
PrivateSend.Visible = false
ExitPrivateBtn.Visible = false
end)
-- ========== SETTINGS ==========
if isGod then
NameApply.MouseButton1Click:Connect(function()
if NameInput.Text ~= "" then
customNames[LocalPlayer.UserId] = NameInput.Text
addGlobalMessage(LocalPlayer, "✨ Changed name to " .. NameInput.Text .. " ✨", false)
end
end)
local rgbState = true
RGBToggle.MouseButton1Click:Connect(function()
rgbState = not rgbState
rgbEnabled = rgbState
RGBToggle.Text = rgbState and "🎨 RGB NAMES: ON" or "🎨 RGB NAMES: OFF"
RGBToggle.BackgroundColor3 = rgbState and Color3.fromRGB(80, 85, 200) or Color3.fromRGB(60, 60, 90)
end)
end
-- ========== CLOSE SCRIPT ==========
CloseScriptBtn.MouseButton1Click:Connect(function()
ScreenGui:Destroy()
end)
-- ========== CHANGE BIO ON START ==========
local bioText = changeBio()
BioLabel.Text = "📝 Bio: " .. getPlayerRank(LocalPlayer)
-- ========== RGB COLOR LOOP ==========
task.spawn(function()
while ScreenGui.Parent do
if rgbEnabled and isGod then
hue = hue + 0.03
if hue > math.pi * 2 then hue = 0 end
end
task.wait(0.05)
end
end)
-- ========== WELCOME MESSAGES ==========
addGlobalMessage(LocalPlayer, "✨ XDEMIC COMPLETE CHAT SYSTEM ACTIVATED! ✨", true)
addGlobalMessage(LocalPlayer, "🌐 GLOBAL TAB - Cross-server messaging", true)
addGlobalMessage(LocalPlayer, "💬 LOCAL TAB - Messages with 10 sec bubbles", true)
addGlobalMessage(LocalPlayer, "🔒 PRIVATE TAB - Click player to start private chat", true)
addGlobalMessage(LocalPlayer, "📝 Your Brookhaven bio changed to: " .. bioText, true)
if isGod then
addGlobalMessage(LocalPlayer, "👑 GOD " .. LocalPlayer.Name .. " has joined! RGB colors active! 👑", false)
end
print("=========================================")
print("XDEMIC COMPLETE CHAT LOADED!")
print("Features:")
print(" - Global Chat Tab")
print(" - Local Chat with 10 sec bubbles")
print(" - Private Chat with players")
print(" - Auto Bio Change in Brookhaven")
print(" - Rank System (GOD, VIP, MEMBER)")
print(" - RGB Names for GOD players")
print("=========================================")No comments yet for this script.



