local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer local CoreGui = game:GetService("CoreGui") local TextChatService = game:GetService("TextChatService") local ReplicatedStorage = game:GetService("ReplicatedStorage") local TweenService = game:GetService("TweenService") local UserInputService = game:GetService("UserInputService") local HttpService = game:GetService("HttpService") local SoundService = game:GetService("SoundService") local parentGui = CoreGui local function sendMsg(msg) pcall(function() if TextChatService.ChatVersion == Enum.ChatVersion.TextChatService then local channel = TextChatService.TextChannels:FindFirstChild("RBXGeneral") if channel then channel:SendAsync(msg) end else local chatEvent = ReplicatedStorage:FindFirstChild("DefaultChatSystemChatEvents") if chatEvent then local sayRequest = chatEvent:FindFirstChild("SayMessageRequest") if sayRequest then sayRequest:FireServer(msg, "All") end end end end) end local function readFile(path) if type(readfile) ~= "function" then return nil end local ok, data = pcall(readfile, path) if ok then return data else return nil end end local function writeFile(path, data) if type(writefile) ~= "function" then return end pcall(writefile, path, data) end local KEY_COUNT = 200 local KEY_FILE = "suraj_usage.txt" local KEY_GEN_URL = "https://keygenerator88.netlify.app/" local _a = 1013 local _b = 2 local _c = 1 local SEED = (_a * _b) + _c local function nextLetter(seed) local mult = 9301 local inc = 49297 local mod = 233280 local newSeed = (seed * mult + inc) % mod local index = math.floor((newSeed / mod) * 26) + 65 return string.char(index), newSeed end local function generateKey(seed) local parts = {} for i = 1, 3 do local part = "" for _ = 1, 4 do local ch, newSeed = nextLetter(seed) part = part .. ch seed = newSeed end parts[i] = part end return table.concat(parts, "-"), seed end local function buildKeyHashes(seed) local hashes = {} for _ = 1, KEY_COUNT do local key, newSeed = generateKey(seed) seed = newSeed local salt = "SURAJ_SECURE_2026" local combined = key .. salt .. ":" .. tostring(SEED) local h = 0 for i = 1, #combined do h = (h * 31 + string.byte(combined, i)) % 2^32 end hashes[string.format("%08x", h)] = true end return hashes end local validHashes = buildKeyHashes(SEED) local keyUsage = {} local function loadUsage() local data = readFile(KEY_FILE) if data and data ~= "" then local ok, decoded = pcall(HttpService.JSONDecode, HttpService, data) if ok and type(decoded) == "table" then for k, v in pairs(decoded) do keyUsage[k] = tonumber(v) or 0 end end end end loadUsage() local function validateKey(input) if not input or input == "" then return false, "Empty key" end local cleaned = input:gsub("%s+", "") local key = cleaned:match("^([^|]+)") or cleaned local salt = "SURAJ_SECURE_2026" local combined = key .. salt .. ":" .. tostring(SEED) local h = 0 for i = 1, #combined do h = (h * 31 + string.byte(combined, i)) % 2^32 end local hash = string.format("%08x", h) if not validHashes[hash] then return false, "Invalid key" end local current = (keyUsage[key] or 0) + 1 if current > 2 then return false, "Key used up" end keyUsage[key] = current local toSave = {} for k, v in pairs(keyUsage) do if v > 0 then toSave[k] = v end end local ok, json = pcall(HttpService.JSONEncode, HttpService, toSave) if ok and json then writeFile(KEY_FILE, json) end return true, "Valid" end local MESSAGE_FILE = "suraj_messages.txt" local defaultMessages = { "TMX MARE TERE SURAJ PAPA πŸ‘‘", "TMX MARE REAL BHAI πŸ’ͺ", "TMX MARE SUMIT BHAI 🀝", "TMX MEH JANTER MANTER PROTEST ✊", "TMX MEH HARPIC 🧹", "TMX MARE HIPPOPOTAMUS πŸ¦›", "TMX MEH GANE KA JUICE BADA GLASS 20 RUPEE πŸ₯€", "TMX MARE WILD LION 🦁", "TMX MEH SNAKE 🐍", "TMX MEH RAHULGANDHI πŸ§”", "SURAJ SPAMMER ON TOP πŸ‘‘πŸ”₯⚑" } local function loadMessages() local data = readFile(MESSAGE_FILE) if data and data ~= "" then local ok, decoded = pcall(HttpService.JSONDecode, HttpService, data) if ok and type(decoded) == "table" and #decoded > 0 then return decoded end end return table.clone(defaultMessages) end local function saveMessages(messages) local ok, json = pcall(HttpService.JSONEncode, HttpService, messages) if ok and json then writeFile(MESSAGE_FILE, json) end end local function showKeyEntry(callback) local sg = Instance.new("ScreenGui") sg.Name = "SURAJ_KEY_ENTRY" sg.ResetOnSpawn = false sg.IgnoreGuiInset = true sg.Parent = parentGui local frame = Instance.new("Frame") frame.Size = UDim2.fromOffset(390, 180) frame.Position = UDim2.new(0.5, -195, 0.4, -90) frame.BackgroundColor3 = Color3.fromRGB(20, 20, 30) frame.BorderSizePixel = 0 frame.Parent = sg Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 12) local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0, 38) title.BackgroundTransparency = 1 title.Text = "πŸ”‘ SURAJ SPAMMER KEY" title.TextColor3 = Color3.fromRGB(255, 215, 0) title.TextSize = 18 title.Font = Enum.Font.GothamBold title.Parent = frame local input = Instance.new("TextBox") input.Size = UDim2.new(0.9, 0, 0, 35) input.Position = UDim2.new(0.05, 0, 0, 45) input.BackgroundColor3 = Color3.fromRGB(40, 40, 52) input.PlaceholderText = "XXXX-XXXX-XXXX" input.Text = "" input.TextColor3 = Color3.new(1, 1, 1) input.TextSize = 14 input.Font = Enum.Font.Gotham input.ClearTextOnFocus = false input.Parent = frame Instance.new("UICorner", input).CornerRadius = UDim.new(0, 7) local status = Instance.new("TextLabel") status.Size = UDim2.new(0.9, 0, 0, 22) status.Position = UDim2.new(0.05, 0, 0, 83) status.BackgroundTransparency = 1 status.Text = "" status.TextColor3 = Color3.fromRGB(255, 90, 90) status.TextSize = 12 status.Font = Enum.Font.Gotham status.Parent = frame local getKey = Instance.new("TextButton") getKey.Size = UDim2.new(0.28, 0, 0, 34) getKey.Position = UDim2.new(0.05, 0, 1, -43) getKey.BackgroundColor3 = Color3.fromRGB(40, 40, 55) getKey.Text = "🌐 GET KEY" getKey.TextColor3 = Color3.new(1, 1, 1) getKey.TextSize = 11 getKey.Font = Enum.Font.GothamBold getKey.Parent = frame Instance.new("UICorner", getKey).CornerRadius = UDim.new(0, 7) local verify = Instance.new("TextButton") verify.Size = UDim2.new(0.58, 0, 0, 34) verify.Position = UDim2.new(0.37, 0, 1, -43) verify.BackgroundColor3 = Color3.fromRGB(255, 215, 0) verify.Text = "βœ… VERIFY" verify.TextColor3 = Color3.new(0, 0, 0) verify.TextSize = 13 verify.Font = Enum.Font.GothamBold verify.Parent = frame Instance.new("UICorner", verify).CornerRadius = UDim.new(0, 7) getKey.MouseButton1Click:Connect(function() local copied = false if setclipboard then copied = pcall(setclipboard, KEY_GEN_URL) elseif toclipboard then copied = pcall(toclipboard, KEY_GEN_URL) end status.Text = copied and "πŸ“‹ Key URL copied" or KEY_GEN_URL status.TextColor3 = Color3.fromRGB(255, 235, 100) end) local function verifyInput() local valid, reason = validateKey(input.Text) if not valid then status.Text = "❌ " .. reason status.TextColor3 = Color3.fromRGB(255, 90, 90) return end status.Text = "βœ… Valid key" status.TextColor3 = Color3.fromRGB(100, 255, 120) wait(0.35) sg:Destroy() callback() end verify.MouseButton1Click:Connect(verifyInput) input.FocusLost:Connect(function(enterPressed) if enterPressed then verifyInput() end end) end local function startSpammer() local oldGui = parentGui:FindFirstChild("SURAJ_SPAMMER") if oldGui then oldGui:Destroy() end local messages = loadMessages() local msgIndex = 1 local config = { Running = false, Target = "TMX", Symbol = "@", Count = 135, Speed = 0.8 } local sg = Instance.new("ScreenGui") sg.Name = "SURAJ_SPAMMER" sg.ResetOnSpawn = false sg.IgnoreGuiInset = true sg.ZIndexBehavior = Enum.ZIndexBehavior.Global sg.Parent = parentGui local loadFrame = Instance.new("Frame") loadFrame.Size = UDim2.new(1, 0, 1, 0) loadFrame.BackgroundColor3 = Color3.fromRGB(5, 5, 10) loadFrame.ZIndex = 100 loadFrame.Parent = sg local loadTitle = Instance.new("TextLabel") loadTitle.Size = UDim2.new(0.8, 0, 0, 70) loadTitle.Position = UDim2.new(0.1, 0, 0.35, 0) loadTitle.BackgroundTransparency = 1 loadTitle.Text = "SURAJ SPAMMER πŸ₯ΆπŸ˜ˆβš‘" loadTitle.TextColor3 = Color3.fromRGB(255, 215, 0) loadTitle.TextScaled = true loadTitle.Font = Enum.Font.GothamBold loadTitle.ZIndex = 101 loadTitle.Parent = loadFrame local loadStatus = Instance.new("TextLabel") loadStatus.Size = UDim2.new(0.8, 0, 0, 30) loadStatus.Position = UDim2.new(0.1, 0, 0.5, 0) loadStatus.BackgroundTransparency = 1 loadStatus.Text = "⚑ LOADING..." loadStatus.TextColor3 = Color3.new(1, 1, 1) loadStatus.TextSize = 20 loadStatus.Font = Enum.Font.Gotham loadStatus.ZIndex = 101 loadStatus.Parent = loadFrame local barBg = Instance.new("Frame") barBg.Size = UDim2.new(0.6, 0, 0, 12) barBg.Position = UDim2.new(0.2, 0, 0.6, 0) barBg.BackgroundColor3 = Color3.fromRGB(35, 35, 45) barBg.ZIndex = 101 barBg.Parent = loadFrame Instance.new("UICorner", barBg).CornerRadius = UDim.new(1, 0) local bar = Instance.new("Frame") bar.Size = UDim2.new(0, 0, 1, 0) bar.BackgroundColor3 = Color3.fromRGB(255, 215, 0) bar.ZIndex = 102 bar.Parent = barBg Instance.new("UICorner", bar).CornerRadius = UDim.new(1, 0) for i = 1, 100 do bar.Size = UDim2.new(i / 100, 0, 1, 0) loadStatus.Text = "⚑ LOADING " .. i .. "%" wait(0.03) end loadFrame:Destroy() local W, H = 480, 290 local main = Instance.new("Frame") main.Size = UDim2.new(0, W, 0, H) main.Position = UDim2.new(0.5, -W/2, 0.22, 0) main.BackgroundColor3 = Color3.fromRGB(18, 18, 25) main.BorderSizePixel = 0 main.Active = true main.Parent = sg Instance.new("UICorner", main).CornerRadius = UDim.new(0, 14) local titleBar = Instance.new("Frame") titleBar.Size = UDim2.new(1, 0, 0, 45) titleBar.BackgroundColor3 = Color3.fromRGB(8, 8, 12) titleBar.BorderSizePixel = 0 titleBar.Active = true titleBar.Parent = main Instance.new("UICorner", titleBar).CornerRadius = UDim.new(0, 14) local title = Instance.new("TextLabel") title.Size = UDim2.new(1, -55, 1, 0) title.BackgroundTransparency = 1 title.Text = "SURAJ SPAMMER πŸ₯ΆπŸ˜ˆβš‘" title.TextColor3 = Color3.new(1, 1, 1) title.TextSize = 18 title.Font = Enum.Font.GothamBold title.ZIndex = 3 title.Parent = titleBar do local dragging, dragStart, startPos titleBar.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = input.Position startPos = main.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) UserInputService.InputChanged:Connect(function(input) if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then local delta = input.Position - dragStart main.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) end local minBtn = Instance.new("TextButton") minBtn.Size = UDim2.fromOffset(32, 30) minBtn.Position = UDim2.new(1, -42, 0, 7) minBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 50) minBtn.Text = "βˆ’" minBtn.TextColor3 = Color3.new(1, 1, 1) minBtn.TextSize = 18 minBtn.Font = Enum.Font.GothamBold minBtn.ZIndex = 5 minBtn.Parent = main Instance.new("UICorner", minBtn).CornerRadius = UDim.new(0, 6) local floatBtn = Instance.new("TextButton") floatBtn.Size = UDim2.fromOffset(58, 58) floatBtn.Position = UDim2.new(1, -75, 1, -75) floatBtn.BackgroundColor3 = Color3.fromRGB(25, 25, 35) floatBtn.Text = "😈" floatBtn.TextSize = 28 floatBtn.Visible = false floatBtn.ZIndex = 50 floatBtn.Parent = sg Instance.new("UICorner", floatBtn).CornerRadius = UDim.new(1, 0) minBtn.MouseButton1Click:Connect(function() main.Visible = false floatBtn.Visible = true end) floatBtn.MouseButton1Click:Connect(function() main.Visible = true floatBtn.Visible = false end) local yPos = 50 local function addField(labelText, value, y, callback, numeric) local lbl = Instance.new("TextLabel") lbl.Size = UDim2.new(0.42, 0, 0, 16) lbl.Position = UDim2.new(0.05, 0, 0, y) lbl.BackgroundTransparency = 1 lbl.Text = labelText lbl.TextColor3 = Color3.fromRGB(205, 205, 215) lbl.TextSize = 11 lbl.Font = Enum.Font.GothamMedium lbl.TextXAlignment = Enum.TextXAlignment.Left lbl.Parent = main local box = Instance.new("TextBox") box.Size = UDim2.new(0.42, 0, 0, 26) box.Position = UDim2.new(0.05, 0, 0, y + 16) box.BackgroundColor3 = Color3.fromRGB(35, 35, 45) box.Text = tostring(value) box.TextColor3 = Color3.new(1, 1, 1) box.TextSize = 13 box.Font = Enum.Font.Gotham box.ClearTextOnFocus = false box.Parent = main Instance.new("UICorner", box).CornerRadius = UDim.new(0, 6) box.FocusLost:Connect(function() local newVal = box.Text if numeric then newVal = tonumber(newVal) or value box.Text = tostring(newVal) end callback(newVal) end) end addField("🎯 TARGET", config.Target, 50, function(v) config.Target = v end) addField("✏️ SYMBOL", config.Symbol, 50, function(v) config.Symbol = v end) addField("πŸ”’ COUNT", config.Count, 95, function(v) config.Count = tonumber(v) or 135 end, true) addField("⏱️ SPEED", config.Speed, 95, function(v) config.Speed = tonumber(v) or 0.8 end, true) local line = Instance.new("Frame") line.Size = UDim2.new(0.9, 0, 0, 1) line.Position = UDim2.new(0.05, 0, 0, 135) line.BackgroundColor3 = Color3.fromRGB(255, 215, 0) line.Parent = main local editBtn = Instance.new("TextButton") editBtn.Size = UDim2.new(0.25, 0, 0, 36) editBtn.Position = UDim2.new(0.05, 0, 0, 170) editBtn.BackgroundColor3 = Color3.fromRGB(255, 180, 0) editBtn.Text = "πŸ“ EDIT" editBtn.TextColor3 = Color3.new(0, 0, 0) editBtn.TextSize = 15 editBtn.Font = Enum.Font.GothamBold editBtn.Parent = main Instance.new("UICorner", editBtn).CornerRadius = UDim.new(0, 9) local toggleBtn = Instance.new("TextButton") toggleBtn.Size = UDim2.new(0.25, 0, 0, 36) toggleBtn.Position = UDim2.new(0.70, 0, 0, 170) toggleBtn.BackgroundColor3 = Color3.fromRGB(35, 35, 45) toggleBtn.Text = "β–Ά START" toggleBtn.TextColor3 = Color3.new(1, 1, 1) toggleBtn.TextSize = 15 toggleBtn.Font = Enum.Font.GothamBold toggleBtn.Parent = main Instance.new("UICorner", toggleBtn).CornerRadius = UDim.new(0, 9) local statusLabel = Instance.new("TextLabel") statusLabel.Size = UDim2.new(0.9, 0, 0, 22) statusLabel.Position = UDim2.new(0.05, 0, 1, -42) statusLabel.BackgroundTransparency = 1 statusLabel.Text = "πŸ’€ READY" statusLabel.TextColor3 = Color3.new(1, 1, 1) statusLabel.TextSize = 12 statusLabel.Font = Enum.Font.Gotham statusLabel.Parent = main local msgCountLabel = Instance.new("TextLabel") msgCountLabel.Size = UDim2.new(0.9, 0, 0, 18) msgCountLabel.Position = UDim2.new(0.05, 0, 1, -22) msgCountLabel.BackgroundTransparency = 1 msgCountLabel.Text = "πŸ“¨ " .. #messages .. " msgs" msgCountLabel.TextColor3 = Color3.fromRGB(160, 160, 170) msgCountLabel.TextSize = 11 msgCountLabel.Font = Enum.Font.Gotham msgCountLabel.Parent = main local creditLabel = Instance.new("TextLabel") creditLabel.Size = UDim2.new(0, 200, 0, 20) creditLabel.Position = UDim2.new(0, 10, 1, -20) creditLabel.BackgroundTransparency = 1 creditLabel.Text = "POWERED BY SUMIT ⚑" creditLabel.TextColor3 = Color3.fromRGB(255, 215, 0) creditLabel.TextSize = 11 creditLabel.Font = Enum.Font.GothamBold creditLabel.TextXAlignment = Enum.TextXAlignment.Left creditLabel.ZIndex = 2 creditLabel.Parent = main local editor = Instance.new("Frame") editor.Size = UDim2.fromOffset(430, 360) editor.Position = UDim2.new(0.5, -215, 0.28, 0) editor.BackgroundColor3 = Color3.fromRGB(20, 20, 30) editor.BorderColor3 = Color3.fromRGB(255, 180, 0) editor.BorderSizePixel = 2 editor.Visible = false editor.Active = true editor.ZIndex = 20 editor.Parent = sg Instance.new("UICorner", editor).CornerRadius = UDim.new(0, 12) local editorTitle = Instance.new("TextLabel") editorTitle.Size = UDim2.new(1, -45, 0, 42) editorTitle.BackgroundColor3 = Color3.fromRGB(255, 180, 0) editorTitle.Text = "πŸ“ EDIT MESSAGES β€’ DRAG HERE" editorTitle.TextColor3 = Color3.new(0, 0, 0) editorTitle.TextSize = 15 editorTitle.Font = Enum.Font.GothamBold editorTitle.ZIndex = 21 editorTitle.Parent = editor do local dragging, dragStart, startPos editorTitle.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = input.Position startPos = editor.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) UserInputService.InputChanged:Connect(function(input) if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then local delta = input.Position - dragStart editor.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) end local closeEditor = Instance.new("TextButton") closeEditor.Size = UDim2.fromOffset(32, 30) closeEditor.Position = UDim2.new(1, -38, 0, 6) closeEditor.BackgroundColor3 = Color3.fromRGB(190, 45, 45) closeEditor.Text = "X" closeEditor.TextColor3 = Color3.new(1, 1, 1) closeEditor.TextSize = 15 closeEditor.Font = Enum.Font.GothamBold closeEditor.ZIndex = 23 closeEditor.Parent = editor Instance.new("UICorner", closeEditor).CornerRadius = UDim.new(0, 6) local scroll = Instance.new("ScrollingFrame") scroll.Size = UDim2.new(1, -20, 1, -96) scroll.Position = UDim2.fromOffset(10, 48) scroll.BackgroundColor3 = Color3.fromRGB(10, 10, 20) scroll.BorderSizePixel = 0 scroll.ScrollBarThickness = 8 scroll.ScrollBarImageColor3 = Color3.fromRGB(255, 180, 0) scroll.CanvasSize = UDim2.fromOffset(0, 0) scroll.ZIndex = 21 scroll.Parent = editor Instance.new("UICorner", scroll).CornerRadius = UDim.new(0, 6) local addMsgBtn = Instance.new("TextButton") addMsgBtn.Size = UDim2.fromOffset(125, 32) addMsgBtn.Position = UDim2.new(0, 14, 1, -42) addMsgBtn.BackgroundColor3 = Color3.fromRGB(0, 200, 80) addMsgBtn.Text = "βž• ADD" addMsgBtn.TextColor3 = Color3.new(0, 0, 0) addMsgBtn.TextSize = 14 addMsgBtn.Font = Enum.Font.GothamBold addMsgBtn.ZIndex = 22 addMsgBtn.Parent = editor Instance.new("UICorner", addMsgBtn).CornerRadius = UDim.new(0, 6) local saveMsgBtn = Instance.new("TextButton") saveMsgBtn.Size = UDim2.fromOffset(125, 32) saveMsgBtn.Position = UDim2.new(1, -139, 1, -42) saveMsgBtn.BackgroundColor3 = Color3.fromRGB(255, 180, 0) saveMsgBtn.Text = "πŸ’Ύ SAVE" saveMsgBtn.TextColor3 = Color3.new(0, 0, 0) saveMsgBtn.TextSize = 14 saveMsgBtn.Font = Enum.Font.GothamBold saveMsgBtn.ZIndex = 22 saveMsgBtn.Parent = editor Instance.new("UICorner", saveMsgBtn).CornerRadius = UDim.new(0, 6) local function rebuildEditor() for _, child in ipairs(scroll:GetChildren()) do child:Destroy() end local y = 6 for idx, msg in ipairs(messages) do local row = Instance.new("Frame") row.Name = "MsgRow_" .. idx row.Size = UDim2.new(1, -12, 0, 40) row.Position = UDim2.fromOffset(6, y) row.BackgroundColor3 = Color3.fromRGB(35, 35, 46) row.BorderSizePixel = 0 row.ZIndex = 22 row.Parent = scroll Instance.new("UICorner", row).CornerRadius = UDim.new(0, 5) local box = Instance.new("TextBox") box.Name = "MsgText" box.Size = UDim2.new(1, -54, 1, 0) box.Position = UDim2.fromOffset(7, 0) box.BackgroundTransparency = 1 box.Text = tostring(msg) box.PlaceholderText = "Type message here..." box.TextColor3 = Color3.new(1, 1, 1) box.PlaceholderColor3 = Color3.fromRGB(140, 140, 150) box.TextSize = 13 box.Font = Enum.Font.Gotham box.TextXAlignment = Enum.TextXAlignment.Left box.ClearTextOnFocus = false box.TextWrapped = false box.ZIndex = 23 box.Parent = row box.FocusLost:Connect(function() messages[idx] = box.Text row.BackgroundColor3 = Color3.fromRGB(35, 35, 46) end) box.Focused:Connect(function() row.BackgroundColor3 = Color3.fromRGB(60, 55, 35) end) local delBtn = Instance.new("TextButton") delBtn.Size = UDim2.fromOffset(32, 30) delBtn.Position = UDim2.new(1, -38, 0.5, -15) delBtn.BackgroundColor3 = Color3.fromRGB(195, 50, 50) delBtn.Text = "βœ•" delBtn.TextColor3 = Color3.new(1, 1, 1) delBtn.TextSize = 14 delBtn.Font = Enum.Font.GothamBold delBtn.BorderSizePixel = 0 delBtn.ZIndex = 24 delBtn.Parent = row Instance.new("UICorner", delBtn).CornerRadius = UDim.new(0, 5) delBtn.MouseButton1Click:Connect(function() table.remove(messages, idx) rebuildEditor() msgCountLabel.Text = "πŸ“¨ " .. #messages .. " msgs" end) y = y + 45 end if #messages == 0 then local empty = Instance.new("TextLabel") empty.Size = UDim2.new(1, 0, 0, 32) empty.Position = UDim2.fromOffset(0, 8) empty.BackgroundTransparency = 1 empty.Text = "No messages. Click ADD." empty.TextColor3 = Color3.fromRGB(220, 220, 220) empty.TextSize = 14 empty.Font = Enum.Font.Gotham empty.ZIndex = 23 empty.Parent = scroll y = 48 end scroll.CanvasSize = UDim2.fromOffset(0, y + 8) end local editorOpen = false editBtn.MouseButton1Click:Connect(function() editorOpen = not editorOpen editor.Visible = editorOpen if editorOpen then rebuildEditor() end end) closeEditor.MouseButton1Click:Connect(function() editor.Visible = false editorOpen = false end) addMsgBtn.MouseButton1Click:Connect(function() table.insert(messages, "New Message " .. (#messages + 1)) rebuildEditor() msgCountLabel.Text = "πŸ“¨ " .. #messages .. " msgs" end) saveMsgBtn.MouseButton1Click:Connect(function() for _, row in ipairs(scroll:GetChildren()) do if row:IsA("Frame") then local box = row:FindFirstChild("MsgText") local idx = tonumber(row.Name:match("MsgRow_(%d+)")) if box and idx then messages[idx] = box.Text end end end saveMessages(messages) msgCountLabel.Text = "πŸ“¨ " .. #messages .. " msgs" editor.Visible = false editorOpen = false end) toggleBtn.MouseButton1Click:Connect(function() config.Running = not config.Running toggleBtn.Text = config.Running and "β–  STOP" or "β–Ά START" statusLabel.Text = config.Running and "⚑ SPAMMING..." or "πŸ’€ READY" end) spawn(function() while sg.Parent do if config.Running and #messages > 0 then local msg = messages[msgIndex] if msg and msg ~= "" then local cnt = math.clamp(tonumber(config.Count) or 135, 1, 200) local fullMsg = string.rep(config.Symbol, cnt) .. " [" .. config.Target .. "] " .. msg sendMsg(fullMsg) statusLabel.Text = "⚑ " .. msg:sub(1, 28) msgIndex = (msgIndex % #messages) + 1 end end wait(math.max(0.1, tonumber(config.Speed) or 0.8)) end end) main.Size = UDim2.new(0, 0, 0, 0) main.Position = UDim2.new(0.5, 0, 0.25, 0) TweenService:Create(main, TweenInfo.new(0.6, Enum.EasingStyle.Back), { Size = UDim2.new(0, W, 0, H), Position = UDim2.new(0.5, -W/2, 0.25, 0) }):Play() wait(0.5) sendMsg(string.rep("@", 135) .. " SURAJ SPAMMER LOADED πŸ₯ΆπŸ˜ˆβš‘") pcall(function() local sound = Instance.new("Sound") sound.SoundId = "rbxassetid://95131770144654" sound.Volume = 0.8 sound.Looped = true sound.Parent = SoundService sound:Play() end) end showKeyEntry(startSpammer)