--[[ RX CHAT UTILITY - ADVANCED UNIVERSAL EDITION Version: 3.1 | Status: STABLE Developers: SUMIT & RYAN Game: Livetopia (Place ID: 6737970321) DISCLAIMER: For educational purposes only. User assumes all responsibility. ]] --// 1. SYSTEM INITIALIZATION local Players = game:GetService("Players") local TextChatService = game:GetService("TextChatService") local ReplicatedStorage = game:GetService("ReplicatedStorage") local LocalPlayer = Players.LocalPlayer --// 2. GLOBAL CONFIGURATION getgenv().RX_Utility_Config = { TargetName = "", ChatPrefix = "@", SymbolCount = 160, LoopDelay = 3.0, IsRunning = false } local Config = getgenv().RX_Utility_Config local Messages = { "TMX MARE RYXN AND SUMIT PAPA", "TMX MEH ROAD ROLLER", "TMX MARE VIYAY THALAPATHY", "TMX MARE WILD GORILA", "TMX MARE PHANTER", "TMX MEH OBSIDIAN" } --// 3. CORE CHAT FUNCTION local function SendChatMessage(content) pcall(function() if TextChatService.ChatVersion == Enum.ChatVersion.TextChatService then local rbxGeneral = TextChatService.TextChannels:FindFirstChild("RBXGeneral") if rbxGeneral then rbxGeneral:SendAsync(content) end else local chatEvent = ReplicatedStorage:FindFirstChild("DefaultChatSystemChatEvents") if chatEvent and chatEvent:FindFirstChild("SayMessageRequest") then chatEvent.SayMessageRequest:FireServer(content, "All") end end end) end local function showNotification(text) pcall(function() game:GetService("StarterGui"):SetCore("SendNotification", { Title = "SUMIT & RYAN", Text = text, Duration = 3 }) end) end --// 4. INTERFACE INITIALIZATION local function CreateInterface() local RX_Gui = Instance.new("ScreenGui") RX_Gui.Name = "RX_Utility_v3" RX_Gui.Parent = (gethui and gethui()) or game:GetService("CoreGui") RX_Gui.ResetOnSpawn = false --// Cleanup Old Instances for _, old in pairs(game:GetService("CoreGui"):GetChildren()) do if old.Name == "RX_Utility_v3" and old ~= RX_Gui then old:Destroy() end end --// Loading Screen local Loader = Instance.new("Frame", RX_Gui) Loader.Size = UDim2.new(0, 300, 0, 100) Loader.Position = UDim2.new(0.5, -150, 0.5, -50) Loader.BackgroundColor3 = Color3.fromRGB(10, 10, 20) Loader.BorderSizePixel = 2 Loader.BorderColor3 = Color3.fromRGB(0, 120, 255) Instance.new("UICorner", Loader).CornerRadius = UDim.new(0, 8) local LoaderTitle = Instance.new("TextLabel", Loader) LoaderTitle.Size = UDim2.new(1, 0, 0, 30) LoaderTitle.Position = UDim2.new(0, 0, 0, 10) LoaderTitle.BackgroundTransparency = 1 LoaderTitle.Text = "RX CHAT UTILITY v3.1" LoaderTitle.TextColor3 = Color3.fromRGB(0, 120, 255) LoaderTitle.TextSize = 18 LoaderTitle.Font = Enum.Font.GothamBold local LoaderSub = Instance.new("TextLabel", Loader) LoaderSub.Size = UDim2.new(1, 0, 0, 20) LoaderSub.Position = UDim2.new(0, 0, 0, 35) LoaderSub.BackgroundTransparency = 1 LoaderSub.Text = "BY SUMIT & RYAN" LoaderSub.TextColor3 = Color3.fromRGB(200, 200, 200) LoaderSub.TextSize = 12 LoaderSub.Font = Enum.Font.Gotham local ProgressBarBg = Instance.new("Frame", Loader) ProgressBarBg.Size = UDim2.new(0.8, 0, 0, 6) ProgressBarBg.Position = UDim2.new(0.1, 0, 0, 65) ProgressBarBg.BackgroundColor3 = Color3.fromRGB(20, 20, 40) ProgressBarBg.BorderSizePixel = 0 local ProgressBarFill = Instance.new("Frame", ProgressBarBg) ProgressBarFill.Size = UDim2.new(0, 0, 1, 0) ProgressBarFill.BackgroundColor3 = Color3.fromRGB(0, 120, 255) ProgressBarFill.BorderSizePixel = 0 --// Main Dashboard local Main = Instance.new("Frame", RX_Gui) Main.Size = UDim2.new(0, 420, 0, 195) Main.Position = UDim2.new(0.5, -210, 0.4, -98) Main.BackgroundColor3 = Color3.fromRGB(10, 10, 20) Main.BorderSizePixel = 2 Main.BorderColor3 = Color3.fromRGB(0, 120, 255) Main.Draggable = true Main.Active = true Main.Visible = false Instance.new("UICorner", Main).CornerRadius = UDim.new(0, 6) --// Title Bar local TitleBar = Instance.new("Frame", Main) TitleBar.Size = UDim2.new(1, 0, 0, 32) TitleBar.BackgroundColor3 = Color3.fromRGB(15, 15, 18) TitleBar.BorderSizePixel = 0 local TitleText = Instance.new("TextLabel", TitleBar) TitleText.Size = UDim2.new(1, -40, 1, 0) TitleText.Position = UDim2.new(0, 15, 0, 0) TitleText.BackgroundTransparency = 1 TitleText.Text = "RX CHAT UTILITY v3.1 | SUMIT & RYAN" TitleText.TextColor3 = Color3.fromRGB(0, 120, 255) TitleText.TextSize = 13 TitleText.Font = Enum.Font.GothamBold TitleText.TextXAlignment = Enum.TextXAlignment.Left --// Minimize Button local MinBtn = Instance.new("TextButton", TitleBar) MinBtn.Size = UDim2.new(0, 30, 0, 30) MinBtn.Position = UDim2.new(1, -35, 0, 1) MinBtn.BackgroundColor3 = Color3.fromRGB(20, 20, 25) MinBtn.Text = "_" MinBtn.TextColor3 = Color3.new(1, 1, 1) MinBtn.Font = Enum.Font.GothamBold MinBtn.BorderSizePixel = 0 --// Setting Fields Helper local function CreateSettingField(label, yPos, current, callback) local Lbl = Instance.new("TextLabel", Main) Lbl.Size = UDim2.new(0, 80, 0, 20) Lbl.Position = UDim2.new(0, 15, 0, yPos) Lbl.BackgroundTransparency = 1 Lbl.Text = label Lbl.TextColor3 = Color3.new(1, 1, 1) Lbl.TextSize = 11 Lbl.Font = Enum.Font.Gotham Lbl.TextXAlignment = Enum.TextXAlignment.Left local Box = Instance.new("TextBox", Main) Box.Size = UDim2.new(0, 140, 0, 28) Box.Position = UDim2.new(0, 85, 0, yPos - 4) Box.Text = tostring(current) Box.BackgroundColor3 = Color3.fromRGB(20, 20, 40) Box.TextColor3 = Color3.new(1, 1, 1) Box.TextSize = 12 Box.Font = Enum.Font.Gotham Box.BorderSizePixel = 1 Box.BorderColor3 = Color3.fromRGB(60, 60, 70) Box.FocusLost:Connect(function() callback(Box.Text) end) end CreateSettingField("TARGET:", Config.TargetName, function(v) Config.TargetName = v end) CreateSettingField("PREFIX:", Config.ChatPrefix, function(v) Config.ChatPrefix = v end) CreateSettingField("DELAY:", Config.LoopDelay, function(v) Config.LoopDelay = tonumber(v) or 3.0 end) CreateSettingField("COUNT:", Config.SymbolCount, function(v) Config.SymbolCount = tonumber(v) or 160 end) --// START/STOP Button local ToggleBtn = Instance.new("TextButton", Main) ToggleBtn.Size = UDim2.new(0, 120, 0, 35) ToggleBtn.Position = UDim2.new(0.5, -60, 1, -42) ToggleBtn.BackgroundColor3 = Color3.fromRGB(0, 120, 255) ToggleBtn.Text = "START" ToggleBtn.TextColor3 = Color3.new(1, 1, 1) ToggleBtn.TextSize = 14 ToggleBtn.Font = Enum.Font.GothamBold ToggleBtn.BorderSizePixel = 1 ToggleBtn.BorderColor3 = Color3.fromRGB(60, 60, 70) --// Status Label local StatusText = Instance.new("TextLabel", Main) StatusText.Size = UDim2.new(0, 200, 0, 16) StatusText.Position = UDim2.new(0, 15, 1, -22) StatusText.BackgroundTransparency = 1 StatusText.TextColor3 = Color3.fromRGB(150, 150, 150) StatusText.Text = "Ready | SUMIT & RYAN" StatusText.TextSize = 10 StatusText.Font = Enum.Font.Gotham StatusText.TextXAlignment = Enum.TextXAlignment.Left --// Toggle Logic (Spam Loop Intact) local messageCount = 0 local MAX_MESSAGES = 100 ToggleBtn.MouseButton1Click:Connect(function() Config.IsRunning = not Config.IsRunning ToggleBtn.Text = Config.IsRunning and "STOP" or "START" ToggleBtn.BackgroundColor3 = Config.IsRunning and Color3.fromRGB(0, 200, 100) or Color3.fromRGB(0, 120, 255) StatusText.Text = Config.IsRunning and "● SENDING..." or "● Stopped | SUMIT & RYAN" StatusText.TextColor3 = Config.IsRunning and Color3.fromRGB(0, 200, 100) or Color3.fromRGB(150, 150, 150) messageCount = 0 if Config.IsRunning then coroutine.wrap(function() local msgIdx = 1 while Config.IsRunning and messageCount < MAX_MESSAGES do local prefixStr = string.rep(Config.ChatPrefix, Config.SymbolCount) local targetStr = Config.TargetName ~= "" and "[" .. Config.TargetName .. "] " or "" local finalMsg = prefixStr .. " " .. targetStr .. Messages[msgIdx] SendChatMessage(finalMsg) messageCount = messageCount + 1 msgIdx = (msgIdx % #Messages) + 1 wait(Config.LoopDelay) -- using wait() for compatibility end if messageCount >= MAX_MESSAGES then Config.IsRunning = false ToggleBtn.Text = "START" ToggleBtn.BackgroundColor3 = Color3.fromRGB(0, 120, 255) StatusText.Text = "● Limit Reached (100) | SUMIT & RYAN" StatusText.TextColor3 = Color3.fromRGB(255, 200, 0) showNotification("Reached 100 message limit.") end end)() end end) --// Restore Button local RestoreBtn = Instance.new("TextButton", RX_Gui) RestoreBtn.Size = UDim2.new(0, 45, 0, 45) RestoreBtn.Position = UDim2.new(0, 10, 0.5, -22) RestoreBtn.BackgroundColor3 = Color3.fromRGB(0, 120, 255) RestoreBtn.Text = "RX" RestoreBtn.TextColor3 = Color3.new(1, 1, 1) RestoreBtn.TextSize = 14 RestoreBtn.Font = Enum.Font.GothamBold RestoreBtn.Visible = false RestoreBtn.BorderSizePixel = 0 Instance.new("UICorner", RestoreBtn).CornerRadius = UDim.new(0, 8) MinBtn.MouseButton1Click:Connect(function() Main.Visible = false RestoreBtn.Visible = true end) RestoreBtn.MouseButton1Click:Connect(function() Main.Visible = true RestoreBtn.Visible = false end) --// LOADING ANIMATION (FIXED for compatibility) local function AnimateLoading() local steps = 30 for i = 1, steps do ProgressBarFill.Size = UDim2.new(i / steps, 0, 1, 0) wait(0.05) -- Use wait() for all executors end Loader:Destroy() Main.Visible = true showNotification("RX Chat Utility v3.1 by SUMIT & RYAN Loaded!") end -- Spawn animation safely local success, err = pcall(function() coroutine.wrap(AnimateLoading)() end) if not success then -- Fallback: run directly AnimateLoading() end -- Fallback timeout: if loading screen persists, force close after 5 seconds coroutine.wrap(function() wait(5) if Loader and Loader.Parent then Loader:Destroy() Main.Visible = true end end)() end --// EXECUTION wait(0.5) CreateInterface()