--// OBI TOOL - FINAL VERSION local Players = game:GetService("Players") local TextChatService = game:GetService("TextChatService") local SoundService = game:GetService("SoundService") local RunService = game:GetService("RunService") local ReplicatedStorage = game:GetService("ReplicatedStorage") local StarterGui = game:GetService("StarterGui") -- SAFE PLAYER LOAD local player = Players.LocalPlayer or Players.PlayerAdded:Wait() local pGui = player:WaitForChild("PlayerGui") -- REMOVE OLD GUI local oldGui = pGui:FindFirstChild("OBI TOOL") if oldGui then oldGui:Destroy() end -- SETTINGS local MESSAGE_DELAY = 3 -- PHRASES local phrases = { "πŸ”₯ OBI KI SCRIPT HAI πŸ”₯", "Tmkx me finger☝🏻", "Tmkx me right hand βœ‹πŸ»", "tmkx me mirchi 🌢️", "tmkx me lassan πŸ§„", "tmkx me lassi πŸ₯›", "tmkx me pani πŸ’§", "tmkx me killer βš”οΈ", "tmkx me ghost 😈", "tmkx me shadow πŸŒ‘", "Tmxk me snow ❄️", "LwdeπŸ‘½", "tmkx me calcium", "CxD🀑", "Tu or tera slow spam πŸ₯±", "Bhaag ja 😎", "Kya hua nhi ho para 😭", "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", "TMKX ME TOURNAMENT", } -- STATES local active = false local rgbEnabled = false -- LOAD MESSAGE task.spawn(function() task.wait(1) local loadMsg = [[ --- --- πŸ”₯ OBI SPAMMER LOADED πŸ”₯ --- --- ]] pcall(function() StarterGui:SetCore("ChatMakeSystemMessage", { Text = loadMsg, Color = Color3.fromRGB(255,80,80), Font = Enum.Font.GothamBold, TextSize = 18 }) end) end) -- POPUP local notify = Instance.new("Hint") notify.Text = "πŸ”₯ OBI SPAMMER LOADED πŸ”₯" notify.Parent = workspace task.delay(5,function() if notify then notify:Destroy() end end) -- SOUND local clickSound = Instance.new("Sound") clickSound.SoundId = "rbxassetid://6895079853" clickSound.Volume = 5.5 clickSound.Parent = SoundService pcall(function() clickSound.Loaded:Wait() end) -- GUI local gui = Instance.new("ScreenGui") gui.Name = "OBI TOOL" gui.Parent = pGui gui.ResetOnSpawn = false local main = Instance.new("Frame") main.Parent = gui main.Size = UDim2.new(0,300,0,350) main.Position = UDim2.new(0.5,-150,0.3,0) main.BackgroundColor3 = Color3.fromRGB(20,20,20) main.Active = true pcall(function() main.Draggable = true end) Instance.new("UICorner", main) local stroke = Instance.new("UIStroke") stroke.Parent = main stroke.Color = Color3.fromRGB(255,0,0) stroke.Thickness = 2 -- TITLE local title = Instance.new("TextLabel") title.Parent = main title.Size = UDim2.new(1,0,0,40) title.Position = UDim2.new(0,0,0,0) title.BackgroundTransparency = 1 title.Text = "OBI TOOL PRO" title.TextColor3 = Color3.new(1,1,1) title.Font = Enum.Font.GothamBold title.TextSize = 16 local originalTitlePos = title.Position -- INPUT local input = Instance.new("TextBox") input.Parent = main input.Size = UDim2.new(0.9,0,0,35) input.Position = UDim2.new(0.05,0,0.2,0) input.PlaceholderText = "Enter message..." input.BackgroundColor3 = Color3.fromRGB(30,30,30) input.TextColor3 = Color3.new(1,1,1) Instance.new("UICorner", input) -- START BUTTON local startBtn = Instance.new("TextButton") startBtn.Parent = main startBtn.Size = UDim2.new(0.9,0,0,35) startBtn.Position = UDim2.new(0.05,0,0.35,0) startBtn.Text = "START" startBtn.BackgroundColor3 = Color3.fromRGB(0,170,80) startBtn.TextColor3 = Color3.new(1,1,1) Instance.new("UICorner", startBtn) -- RGB BUTTON local rgbBtn = Instance.new("TextButton") rgbBtn.Parent = main rgbBtn.Size = UDim2.new(0.9,0,0,35) rgbBtn.Position = UDim2.new(0.05,0,0.5,0) rgbBtn.Text = "RGB: OFF" rgbBtn.BackgroundColor3 = Color3.fromRGB(40,40,40) rgbBtn.TextColor3 = Color3.new(1,1,1) Instance.new("UICorner", rgbBtn) -- CLOSE BUTTON local close = Instance.new("TextButton") close.Parent = main close.Size = UDim2.new(0,25,0,25) close.Position = UDim2.new(1,-30,0,5) close.Text = "X" close.BackgroundColor3 = Color3.fromRGB(50,50,50) close.TextColor3 = Color3.new(1,1,1) Instance.new("UICorner", close) -- CHAT FUNCTION local function sendMessage(msg) pcall(function() local channels = TextChatService:FindFirstChild("TextChannels") if channels and channels:FindFirstChild("RBXGeneral") then channels.RBXGeneral:SendAsync(msg) else local chatEvents = ReplicatedStorage:FindFirstChild("DefaultChatSystemChatEvents") if chatEvents and chatEvents:FindFirstChild("SayMessageRequest") then chatEvents.SayMessageRequest:FireServer(msg,"All") end end end) end -- START LOGIC startBtn.MouseButton1Click:Connect(function() active = not active startBtn.Text = active and "STOP" or "START" pcall(function() clickSound:Stop() clickSound:Play() end) if active then task.spawn(function() while active do local msg = "Default" if input.Text ~= "" then local randomPhrase = (#phrases > 0) and phrases[math.random(1,#phrases)] or "" local symbols = string.rep("@",150) msg = symbols .. " " .. input.Text .. " " .. randomPhrase else if #phrases > 0 then msg = phrases[math.random(1,#phrases)] end end sendMessage(msg) task.wait(MESSAGE_DELAY) end end) end end) -- RGB + SHAKE rgbBtn.MouseButton1Click:Connect(function() rgbEnabled = not rgbEnabled rgbBtn.Text = "RGB: " .. (rgbEnabled and "ON" or "OFF") end) RunService.RenderStepped:Connect(function() if rgbEnabled then local c = Color3.fromHSV((tick()%5)/5,1,1) stroke.Color = c title.TextColor3 = c local x = math.random(-2,2) local y = math.random(-2,2) title.Position = originalTitlePos + UDim2.new(0,x,0,y) else title.Position = originalTitlePos end end) -- CLOSE close.MouseButton1Click:Connect(function() active = false if gui then gui:Destroy() end end)