--[[ WARNING: Heads up! This script has not been verified by ScriptBlox. Use at your own risk! ]] --[[ OBI_SPAMMER - ULTIMATE RESTORED FEATURES: Hater List (Save/Load), All Themes, Headshot, Credits, 2s Gap. ]] local Players = game:GetService("Players") local TextChatService = game:GetService("TextChatService") local SoundService = game:GetService("SoundService") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local HttpService = game:GetService("HttpService") local player = Players.LocalPlayer local pGui = player:WaitForChild("PlayerGui") -- 1. PREFIX & PHRASE DATA local execPrefix = "M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M" local execMsg = "OBI SPAMMER👑🔫" local roastPrefixes = { [1] = "D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D_D", [2] = "T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T_T", [3] = "Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q_Q", [4] = "Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z_Z", [5] = "U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U_U", [6] = "M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M_M" } local phrases = { OBI SPAMMER LODED🗿,"fhat gyi kya", "Bhag mat", "Tmkx meh jajla", "Tmkx meh table", "Tmkx meh chair", "Tmkx meh noob", "G", "Tmkx meh gareeb", "Ro mat noobde", "Apne baap ko h8 dega", "Kyu hila diya na", "Tmkl meh lol", "Bhag mat", "Ro kyu rha hai", "tmkl", "chal chal chal", "Beta tera baap aaya", "Abhi roega kya?", "Skill issue hai tera", "Keyboard tod de bhai", "Server chhod ke bhag ja", "Game khelna sikh le" OBI KI NALAYAK AULAD, TMKX ME TOURNAMENT, } -- 2. STATE & AUDIO local clickEnabled, rgbEnabled, menuVisible = true, false, true local ClickSound = Instance.new("Sound", SoundService) ClickSound.SoundId = "rbxassetid://6895079853"; ClickSound.Volume = 3.5 -- 3. MAIN GUI SETUP local ScreenGui = Instance.new("ScreenGui", pGui); ScreenGui.Name = "OBI SPAMMER ROST REWORK"; ScreenGui.ResetOnSpawn = false local OpenToggle = Instance.new("TextButton", ScreenGui) OpenToggle.Size = UDim2.new(0, 45, 0, 45); OpenToggle.Position = UDim2.new(0, 10, 0.5, -22); OpenToggle.BackgroundColor3 = Color3.fromRGB(20, 20, 20); OpenToggle.Text = "M"; OpenToggle.TextColor3 = Color3.fromRGB(255, 0, 0); OpenToggle.Font = Enum.Font.GothamBold; OpenToggle.TextSize = 22; Instance.new("UICorner", OpenToggle).CornerRadius = UDim.new(1, 0) local TStroke = Instance.new("UIStroke", OpenToggle); TStroke.Color = Color3.fromRGB(255, 0, 0); TStroke.Thickness = 2 local MainFrame = Instance.new("Frame", ScreenGui) MainFrame.Size = UDim2.new(0, 360, 0, 420); MainFrame.Position = UDim2.new(0.5, -180, 0.3, 0); MainFrame.BackgroundColor3 = Color3.fromRGB(12, 12, 12); MainFrame.Active = true; MainFrame.Draggable = true; Instance.new("UICorner", MainFrame) local UIStroke = Instance.new("UIStroke", MainFrame); UIStroke.Thickness = 2; UIStroke.Color = Color3.fromRGB(255, 0, 0) -- PLAYER PROFILE DATA local ProfFrame = Instance.new("Frame", MainFrame); ProfFrame.Size = UDim2.new(0, 120, 0, 40); ProfFrame.Position = UDim2.new(1, -130, 0, 5); ProfFrame.BackgroundTransparency = 1 local ProfImg = Instance.new("ImageLabel", ProfFrame); ProfImg.Size = UDim2.new(0, 32, 0, 32); ProfImg.Position = UDim2.new(0,0,0,4); ProfImg.BackgroundColor3 = Color3.fromRGB(30,30,30); ProfImg.Image = Players:GetUserThumbnailAsync(player.UserId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size48x48); Instance.new("UICorner", ProfImg).CornerRadius = UDim.new(1,0) local ProfID = Instance.new("TextLabel", ProfFrame); ProfID.Size = UDim2.new(0, 80, 1, 0); ProfID.Position = UDim2.new(0, 38, 0, 0); ProfID.Text = "ID: "..player.UserId; ProfID.TextColor3 = Color3.new(1,1,1); ProfID.TextSize = 10; ProfID.Font = Enum.Font.GothamBold; ProfID.BackgroundTransparency = 1; ProfID.TextXAlignment = Enum.TextXAlignment.Left local Title = Instance.new("TextLabel", MainFrame); Title.Size = UDim2.new(0, 200, 0, 45); Title.Position = UDim2.new(0, 15, 0, 0); Title.Text = "OBI SPAMMER V1 ROAST REWORK"; Title.TextColor3 = Color3.new(1, 1, 1); Title.TextSize = 17; Title.Font = Enum.Font.GothamBold; Title.BackgroundTransparency = 1; Title.TextXAlignment = Enum.TextXAlignment.Left OpenToggle.MouseButton1Click:Connect(function() menuVisible = not menuVisible MainFrame.Visible = menuVisible if clickEnabled then ClickSound:Play() end end) -- 4. TABS SYSTEM local TabBar = Instance.new("Frame", MainFrame); TabBar.Size = UDim2.new(1, -20, 0, 30); TabBar.Position = UDim2.new(0, 10, 0, 50); TabBar.BackgroundColor3 = Color3.fromRGB(20, 20, 20); Instance.new("UICorner", TabBar) local Pages = Instance.new("Frame", MainFrame); Pages.Size = UDim2.new(1, -20, 1, -110); Pages.Position = UDim2.new(0, 10, 0, 90); Pages.BackgroundTransparency = 1 local function createPage(name) local f = Instance.new("ScrollingFrame", Pages); f.Name = name; f.Size = UDim2.new(1, 0, 1, 0); f.BackgroundTransparency = 1; f.Visible = false; f.ScrollBarThickness = 0; f.CanvasSize = UDim2.new(0, 0, 1.8, 0) return f end local SpamP = createPage("Spam"); local ThemeP = createPage("Themes"); local HaterP = createPage("Haters"); local CreditP = createPage("Credits") SpamP.Visible = true local function open(name) if clickEnabled then ClickSound:Play() end for _, p in pairs(Pages:GetChildren()) do p.Visible = (p.Name == name) end end local function addTab(name, pos, width) local b = Instance.new("TextButton", TabBar); b.Size = UDim2.new(width, 0, 1, 0); b.Position = pos; b.Text = name; b.BackgroundTransparency = 1; b.TextColor3 = Color3.new(1,1,1); b.TextSize = 11; b.Font = Enum.Font.GothamBold; b.MouseButton1Click:Connect(function() open(name) end) end addTab("Spam", UDim2.new(0,0,0,0), 0.25); addTab("Themes", UDim2.new(0.25,0,0,0), 0.25); addTab("Haters", UDim2.new(0.5,0,0,0), 0.25); addTab("Credits", UDim2.new(0.75,0,0,0), 0.25) -- 5. SPAM PAGE Instance.new("UIListLayout", SpamP).Padding = UDim.new(0, 10) local TargetInput = Instance.new("TextBox", SpamP); TargetInput.Size = UDim2.new(0.95, 0, 0, 35); TargetInput.PlaceholderText = "Target Name"; TargetInput.BackgroundColor3 = Color3.fromRGB(25, 25, 25); TargetInput.TextColor3 = Color3.new(1, 1, 1); Instance.new("UICorner", TargetInput) local CustomInput = Instance.new("TextBox", SpamP); CustomInput.Size = UDim2.new(0.95, 0, 0, 35); CustomInput.PlaceholderText = "Custom Message"; CustomInput.BackgroundColor3 = Color3.fromRGB(25, 25, 25); CustomInput.TextColor3 = Color3.new(1, 1, 1); Instance.new("UICorner", CustomInput) local RoastBtn = Instance.new("TextButton", SpamP); RoastBtn.Size = UDim2.new(0.95, 0, 0, 35); RoastBtn.Text = "START ROASTS (,2s GAP)"; RoastBtn.BackgroundColor3 = Color3.fromRGB(0, 180, 80); RoastBtn.TextColor3 = Color3.new(1, 1, 1); Instance.new("UICorner", RoastBtn) local CustomBtn = Instance.new("TextButton", SpamP); CustomBtn.Size = UDim2.new(0.95, 0, 0, 35); CustomBtn.Text = "START CUSTOM"; CustomBtn.BackgroundColor3 = Color3.fromRGB(0, 180, 80); CustomBtn.TextColor3 = Color3.new(1, 1, 1); Instance.new("UICorner", CustomBtn) -- 6. HATER LIST Instance.new("UIListLayout", HaterP).Padding = UDim.new(0, 8) local CleanBtn = Instance.new("TextButton", HaterP); CleanBtn.Size = UDim2.new(0.95, 0, 0, 30); CleanBtn.Text = "CLEAN ALL HATERS"; CleanBtn.BackgroundColor3 = Color3.fromRGB(150, 0, 0); CleanBtn.TextColor3 = Color3.new(1, 1, 1); CleanBtn.Font = Enum.Font.GothamBold; Instance.new("UICorner", CleanBtn) local ListCont = Instance.new("Frame", HaterP); ListCont.Size = UDim2.new(0.95, 0, 0, 150); ListCont.BackgroundTransparency = 1; Instance.new("UIListLayout", ListCont).Padding = UDim.new(0, 5) local hFile = "OBI_SPAMMER ug.txt" local function saveHaters() local names = {} for _, child in pairs(ListCont:GetChildren()) do if child:IsA("TextButton") then table.insert(names, child.Text) end end writefile(hFile, HttpService:JSONEncode(names)) end local function addHaterUI(name, save) local b = Instance.new("TextButton", ListCont); b.Size = UDim2.new(1, 0, 0, 30); b.Text = name; b.BackgroundColor3 = Color3.fromRGB(35,35,35); b.TextColor3 = Color3.new(1,1,1); Instance.new("UICorner", b) b.MouseButton1Click:Connect(function() TargetInput.Text = name; open("Spam") end) if save then saveHaters() end end CleanBtn.MouseButton1Click:Connect(function() for _, v in pairs(ListCont:GetChildren()) do if v:IsA("TextButton") then v:Destroy() end end writefile(hFile, "[]") end) local AddHBox = Instance.new("TextBox", HaterP); AddHBox.Size = UDim2.new(0.95,0,0,35); AddHBox.PlaceholderText = "Add Hater Name..."; AddHBox.BackgroundColor3 = Color3.fromRGB(25,25,25); AddHBox.TextColor3 = Color3.new(1,1,1); Instance.new("UICorner", AddHBox) AddHBox.FocusLost:Connect(function(e) if e and AddHBox.Text ~= "" then addHaterUI(AddHBox.Text, true); AddHBox.Text = "" end end) if isfile(hFile) then local success, data = pcall(function() return HttpService:JSONDecode(readfile(hFile)) end) if success then for _, n in pairs(data) do addHaterUI(n, false) end end end -- 7. THEMES & RGB Instance.new("UIListLayout", ThemeP).Padding = UDim.new(0, 6); ThemeP.UIListLayout.HorizontalAlignment = "Center" local RgbBtn = Instance.new("TextButton", ThemeP); RgbBtn.Size = UDim2.new(0.95,0,0,35); RgbBtn.Text = "RGB MODE: OFF"; RgbBtn.BackgroundColor3 = Color3.fromRGB(40,40,40); RgbBtn.TextColor3 = Color3.new(1,1,1); Instance.new("UICorner", RgbBtn) RgbBtn.MouseButton1Click:Connect(function() rgbEnabled = not rgbEnabled; RgbBtn.Text = "RGB MODE: "..(rgbEnabled and "ON" or "OFF") end) local function tme(n, c) local b = Instance.new("TextButton", ThemeP); b.Size = UDim2.new(0.95,0,0,32); b.Text = n; b.TextColor3 = c; b.BackgroundColor3 = Color3.fromRGB(25,25,25); Instance.new("UICorner", b) b.MouseButton1Click:Connect(function() rgbEnabled = false; UIStroke.Color = c; TStroke.Color = c; Title.TextColor3 = Color3.new(1,1,1) end) end tme("Red Diamond", Color3.fromRGB(255,0,0)); tme("Gold Ingot", Color3.fromRGB(255,215,0)); tme("Midnight Blue", Color3.fromRGB(0, 100, 255)); tme("Emerald Gem", Color3.fromRGB(0, 255, 120)) RunService.RenderStepped:Connect(function() if rgbEnabled then local c = Color3.fromHSV(tick()%5/5, 1, 1); UIStroke.Color = c; TStroke.Color = c; Title.TextColor3 = c end end) -- 8. CREDITS local Creds = Instance.new("TextLabel", CreditP); Creds.Size = UDim2.new(1,0,0,100); Creds.Text = "Developed by OBI\n\nUser=OBI\n\nV1 OBI EIDITION Creds.TextColor3 = Color3.new(1,1,1); Creds.TextSize = 18; Creds.Font = Enum.Font.GothamBold; Creds.BackgroundTransparency = 1 -- 9. SPAM LOGIC local rAct, cAct = false, false RoastBtn.MouseButton1Click:Connect(function() rAct = not rAct; RoastBtn.Text = rAct and "STOP ROASTS" or "START ROASTS (2s GAP)" if rAct then task.spawn(function() local c = TextChatService:WaitForChild("TextChannels"):WaitForChild("RBXGeneral") while rAct do for i, p in ipairs(phrases) do if not rAct then break end local prefix = roastPrefixes[((i-1) % 6) + 1] or execPrefix c:SendAsync(prefix .. " " .. TargetInput.Text .. " " .. p) task.wait(3) end end end) end end) CustomBtn.MouseButton1Click:Connect(function() cAct = not cAct; CustomBtn.Text = cAct and "STOP CUSTOM" or "START CUSTOM" if cAct then task.spawn(function() local c = TextChatService:WaitForChild("TextChannels"):WaitForChild("RBXGeneral") while cAct do c:SendAsync(execPrefix .. " " .. CustomInput.Text); task.wait(3) end end) end end) local X = Instance.new("TextButton", MainFrame); X.Size = UDim2.new(0, 28, 0, 28); X.Position = UDim2.new(1, -35, 0, 8); X.Text = "✕"; X.BackgroundColor3 = Color3.fromRGB(40,40,40); X.TextColor3 = Color3.new(1,1,1); Instance.new("UICorner", X).CornerRadius = UDim.new(1,0) X.MouseButton1Click:Connect(function() ScreenGui:Destroy() end) task.spawn(function() local gen = TextChatService:WaitForChild("TextChannels"):WaitForChild("RBXGeneral") if gen then gen:SendAsync(execPrefix .. " " .. execMsg) end end)