-- Dodo's BrookChat for Executors (Optimized) local HttpService = game:GetService("HttpService") local Players = game:GetService("Players") local RunService = game:GetService("RunService") -- CONFIG local GIST_URL = "https://pastebin.com/raw/YOUR_PASTE_ID" -- Replace with your paste URL or server endpoint local POLL_INTERVAL = 3 -- seconds between updates local username = Players.LocalPlayer.Name -- GUI local ScreenGui = Instance.new("ScreenGui") ScreenGui.Parent = game:GetService("CoreGui") ScreenGui.Name = "DodosBrookChat" local MainFrame = Instance.new("Frame") MainFrame.Size = UDim2.new(0, 400, 0, 500) MainFrame.Position = UDim2.new(0.5, -200, 0.5, -250) MainFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 40) MainFrame.Visible = false MainFrame.Parent = ScreenGui local FrameCorner = Instance.new("UICorner") FrameCorner.CornerRadius = UDim.new(0, 10) FrameCorner.Parent = MainFrame -- Title local Title = Instance.new("TextLabel") Title.Size = UDim2.new(1, 0, 0, 50) Title.BackgroundColor3 = Color3.fromRGB(60, 60, 60) Title.Text = "Dodo's BrookChat" Title.TextColor3 = Color3.fromRGB(255, 255, 255) Title.Font = Enum.Font.GothamBold Title.TextScaled = true Title.Parent = MainFrame -- Chat ScrollingFrame local ChatFrame = Instance.new("ScrollingFrame") ChatFrame.Size = UDim2.new(1, -20, 1, -120) ChatFrame.Position = UDim2.new(0, 10, 0, 60) ChatFrame.BackgroundTransparency = 1 ChatFrame.ScrollBarThickness = 6 ChatFrame.AutomaticCanvasSize = Enum.AutomaticSize.Y ChatFrame.Parent = MainFrame local UIListLayout = Instance.new("UIListLayout") UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder UIListLayout.Padding = UDim.new(0, 5) UIListLayout.Parent = ChatFrame -- Input local InputBox = Instance.new("TextBox") InputBox.Size = UDim2.new(1, -20, 0, 30) InputBox.Position = UDim2.new(0, 10, 1, -50) InputBox.PlaceholderText = "Type your message..." InputBox.TextColor3 = Color3.fromRGB(255, 255, 255) InputBox.BackgroundColor3 = Color3.fromRGB(60, 60, 60) InputBox.ClearTextOnFocus = false InputBox.TextScaled = true InputBox.Parent = MainFrame -- Send button local SendBtn = Instance.new("TextButton") SendBtn.Size = UDim2.new(0, 60, 0, 30) SendBtn.Position = UDim2.new(1, -70, 1, -50) SendBtn.Text = "Send" SendBtn.BackgroundColor3 = Color3.fromRGB(100, 100, 100) SendBtn.TextColor3 = Color3.fromRGB(255, 255, 255) SendBtn.Parent = MainFrame -- Toggle Button local ToggleBtn = Instance.new("TextButton") ToggleBtn.Size = UDim2.new(0, 50, 0, 50) ToggleBtn.Position = UDim2.new(0, 10, 0.5, -25) ToggleBtn.Text = "Chat" ToggleBtn.BackgroundColor3 = Color3.fromRGB(60, 60, 60) ToggleBtn.TextColor3 = Color3.fromRGB(255, 255, 255) ToggleBtn.Parent = ScreenGui ToggleBtn.MouseButton1Click:Connect(function() MainFrame.Visible = not MainFrame.Visible end) -- Message storage local messages = {} -- Utilities local function addMessage(name, msg) local label = Instance.new("TextLabel") label.Size = UDim2.new(1, 0, 0, 30) label.Text = name .. ": " .. msg label.TextColor3 = Color3.fromRGB(255, 255, 255) label.BackgroundTransparency = 1 label.TextScaled = true label.Font = Enum.Font.Gotham label.TextWrapped = true label.Parent = ChatFrame -- Scroll to bottom ChatFrame.CanvasPosition = Vector2.new(0, ChatFrame.CanvasSize.Y.Offset) end local function updateChat(newMessages) -- Only add new messages for i = #messages + 1, #newMessages do local msgData = newMessages[i] addMessage(msgData.username, msgData.message) table.insert(messages, msgData) end end -- Send message local function sendMessage() local msg = InputBox.Text if msg ~= "" then local data = {username=username, message=msg} pcall(function() HttpService:PostAsync(GIST_URL, HttpService:JSONEncode(data)) end) InputBox.Text = "" addMessage(username, msg) table.insert(messages, data) end end SendBtn.MouseButton1Click:Connect(sendMessage) InputBox.FocusLost:Connect(function(enterPressed) if enterPressed then sendMessage() end end) -- Polling messages spawn(function() while true do if MainFrame.Visible then pcall(function() local json = HttpService:GetAsync(GIST_URL) local data = HttpService:JSONDecode(json) updateChat(data) end) end task.wait(POLL_INTERVAL) end end)