SAI V2
Key RequiredUniversal

SAI V2

Universal Script_S_A_I__S_A_I_ 460 views 358 executesUpdated Feb 24, 2026
Unrated
00
Lua Scriptβ€’186 lines (10486 chars)
--[[
    SAI V2 - DYNAMIC MASTER UPDATE
    "TGR RVX DGN DIVINE PNX VN ON TOP"
    PERSONALIZED FOR DELTA
]]

repeat task.wait() until game:IsLoaded()

local lp = game:GetService("Players").LocalPlayer
local tcs = game:GetService("TextChatService")
local rs = game:GetService("ReplicatedStorage")
local uis = game:GetService("UserInputService")
local cg = game:GetService("CoreGui")
local ts = game:GetService("TweenService")
local run = game:GetService("RunService")

local looping = false
local safeMode = false
local pIdx = 1
local patternIdx = 1

local customPatterns = {
    "_____", 
    "$_$", 
    "&_&", 
    "(?_?_)", 
    "(/\\_ /\\_)", 
    "(#_#_)", 
    "(@_@)"
}

-- 1. UTILS
local function sendGlobal(txt)
    pcall(function()
        if tcs.ChatVersion == Enum.ChatVersion.TextChatService then
            local channel = tcs:FindFirstChild("RBXGeneral", true)
            if channel then channel:SendAsync(txt) end
        else
            rs.DefaultChatSystemChatEvents.SayMessageRequest:FireServer(txt, "All")
        end
    end)
end

local function makeDraggable(gui, dragPart)
    local dragging, dragInput, dragStart, startPos
    dragPart.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
            dragging = true; dragStart = input.Position; startPos = gui.Position
        end
    end)
    uis.InputChanged:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then dragInput = input end
    end)
    run.Heartbeat:Connect(function()
        if dragging and dragInput then
            local delta = dragInput.Position - dragStart
            gui.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
        end
    end)
    uis.InputEnded:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = false end
    end)
end

-- 2. GUI CONSTRUCTION
if cg:FindFirstChild("SAI_V2_FINAL_MASTER") then cg:FindFirstChild("SAI_V2_FINAL_MASTER"):Destroy() end
local sg = Instance.new("ScreenGui", cg); sg.Name = "SAI_V2_FINAL_MASTER"

local main = Instance.new("Frame", sg)
main.Size = UDim2.new(0, 260, 0, 380); main.Position = UDim2.new(0.5, -130, 0.5, -190)
main.BackgroundColor3 = Color3.fromRGB(10, 10, 12); main.Visible = false; main.ClipsDescendants = true
local mainStroke = Instance.new("UIStroke", main); mainStroke.Thickness = 2; mainStroke.Color = Color3.fromRGB(0, 150, 255)
Instance.new("UICorner", main).CornerRadius = UDim.new(0, 10)
makeDraggable(main, main)

-- Tab Navigation
local tabF = Instance.new("Frame", main); tabF.Size = UDim2.new(1,0,0,35); tabF.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
local btnSpam = Instance.new("TextButton", tabF); btnSpam.Size = UDim2.new(0.5,0,1,0); btnSpam.Text = "SPAM"; btnSpam.TextColor3 = Color3.new(1,1,1); btnSpam.BackgroundTransparency = 1; btnSpam.Font = "GothamBold"
local btnCred = Instance.new("TextButton", tabF); btnCred.Size = UDim2.new(0.5,0,1,0); btnCred.Position = UDim2.new(0.5,0,0,0); btnCred.Text = "CREDITS"; btnCred.TextColor3 = Color3.new(1,1,1); btnCred.BackgroundTransparency = 1; btnCred.Font = "GothamBold"

local spamP = Instance.new("Frame", main); spamP.Size = UDim2.new(1,0,0.9,0); spamP.Position = UDim2.new(0,0,0.1,0); spamP.BackgroundTransparency = 1
local credP = Instance.new("ScrollingFrame", main); credP.Visible = false; credP.Size = spamP.Size; credP.Position = spamP.Position; credP.BackgroundTransparency = 1; credP.ScrollBarThickness = 2; credP.CanvasSize = UDim2.new(0,0,1.2,0)

btnSpam.MouseButton1Click:Connect(function() spamP.Visible = true; credP.Visible = false end)
btnCred.MouseButton1Click:Connect(function() spamP.Visible = false; credP.Visible = true end)

-- UPDATED CREDITS SECTION
local crText = Instance.new("TextLabel", credP)
crText.Size = UDim2.new(0.9, 0, 0, 320); crText.Position = UDim2.new(0.05, 0, 0.05, 0); crText.BackgroundTransparency = 1; crText.TextColor3 = Color3.new(1, 1, 1); crText.TextWrapped = true; crText.Font = "GothamBold"; crText.TextSize = 14; crText.TextYAlignment = 0; crText.TextXAlignment = 0
crText.Text = "SCRIPT BY SAI πŸ‘‘\nUSERNAME: Jack_fine5\n\nIf you want to join my clan DGN(Dragon) put DGN in ur name and send me a friend request I will give ur rankπŸ˜‰\n\nthx for using my script and if you want more scripts let me know:)\n\nPeace ✌🏻"

-- SPAM ELEMENTS
local nIn = Instance.new("TextBox", spamP); nIn.Size = UDim2.new(0.9,0,0,30); nIn.Position = UDim2.new(0.05,0,0.05,0); nIn.Text = "TARGET"; nIn.BackgroundColor3 = Color3.fromRGB(25,25,30); nIn.TextColor3 = Color3.new(1,1,1); Instance.new("UICorner", nIn)
local dIn = Instance.new("TextBox", spamP); dIn.Size = UDim2.new(0.9,0,0,30); dIn.Position = UDim2.new(0.05,0,0.16,0); dIn.Text = "1.4"; dIn.BackgroundColor3 = Color3.fromRGB(25,25,30); dIn.TextColor3 = Color3.new(1,1,1); Instance.new("UICorner", dIn)

local safeBtn = Instance.new("TextButton", spamP); safeBtn.Size = UDim2.new(0.9,0,0,30); safeBtn.Position = UDim2.new(0.05,0,0.28,0); safeBtn.Text = "Safe Mode: OFF"; safeBtn.BackgroundColor3 = Color3.fromRGB(30,30,35); safeBtn.TextColor3 = Color3.new(1,1,1); Instance.new("UICorner", safeBtn)
local startB = Instance.new("TextButton", spamP); startB.Size = UDim2.new(0.9,0,0,35); startB.Position = UDim2.new(0.05,0,0.45,0); startB.Text = "START SPAM"; startB.BackgroundColor3 = Color3.fromRGB(0, 150, 70); startB.TextColor3 = Color3.new(1,1,1); Instance.new("UICorner", startB)
local stopB = Instance.new("TextButton", spamP); stopB.Size = UDim2.new(0.9,0,0,35); stopB.Position = UDim2.new(0.05,0,0.58,0); stopB.Text = "STOP SPAM"; stopB.BackgroundColor3 = Color3.fromRGB(180, 0, 0); stopB.TextColor3 = Color3.new(1,1,1); Instance.new("UICorner", stopB)

-- 3. S-BUTTON & TRAIL ORBS
local sHold = Instance.new("Frame", sg); sHold.Size = UDim2.new(0, 65, 0, 65); sHold.Position = UDim2.new(0, 30, 0.5, -30); sHold.BackgroundTransparency = 1
local sBtn = Instance.new("TextButton", sHold); sBtn.Size = UDim2.new(0.7,0,0.7,0); sBtn.Position = UDim2.new(0.15,0,0.15,0); sBtn.BackgroundColor3 = Color3.new(0,0,0); sBtn.Text = "S"; sBtn.TextColor3 = Color3.new(1,1,1); sBtn.Font = "FredokaOne"; sBtn.TextSize = 24; Instance.new("UICorner", sBtn).CornerRadius = UDim.new(1,0); Instance.new("UIStroke", sBtn).Color = Color3.fromRGB(0, 150, 255)
makeDraggable(sHold, sBtn)

local function createOrb(color)
    local o = Instance.new("Frame", sHold); o.Size = UDim2.new(0,10,0,10); o.BackgroundColor3 = color; Instance.new("UICorner", o).CornerRadius = UDim.new(1,0)
    task.spawn(function()
        while task.wait(0.05) do
            local trail = Instance.new("Frame", sg); trail.Size = o.Size; trail.BackgroundColor3 = o.BackgroundColor3; trail.Position = o.AbsolutePosition + Vector2.new(5,5); trail.BorderSizePixel = 0; Instance.new("UICorner", trail).CornerRadius = UDim.new(1,0)
            ts:Create(trail, TweenInfo.new(0.4), {Size = UDim2.new(0,0,0,0), BackgroundTransparency = 1}):Play()
            task.wait(0.4); trail:Destroy()
        end
    end)
    return o
end
local o1, o2 = createOrb(Color3.fromRGB(0, 180, 255)), createOrb(Color3.fromRGB(0, 100, 255))

run.Heartbeat:Connect(function() 
    local r = tick() * 4
    o1.Position = UDim2.new(0.5 + math.cos(r)*1.1, -5, 0.5 + math.sin(r)*1.1, -5)
    o2.Position = UDim2.new(0.5 - math.cos(r)*1.1, -5, 0.5 - math.sin(r)*1.1, -5) 
end)

-- 4. SPAM ENGINE
local phrases = {
    "TMKX MEH INDIA πŸ˜’", "TMKX MEH KERALA πŸ˜‰", "TMKX MEH ATLANTIC OCEAN πŸ˜”",
    "PER KHOL 😏⚑", "PAPA KO H8 WHY😭?", "BHEEK MANG 6KEEπŸ˜”βœŒπŸ»",
    "TERI MAA KA REP AAJ KIYA H MENEπŸ’₯", "ROO KYU RA HπŸ€”", "ITNI JALDI BHAAG GYAπŸ₯΄",
    "SAI V2 USE KAR πŸ₯±", "GOP GOP KAR 🍭", "PAPA AA GYE H πŸ€ͺπŸ€™",
    "PAPA SE PANGA NHI MUNNA 🀫", "TMKX MEH PASINA 😏", "BAAP KO H8 DEGA 🀣",
    "DADDY SAI RUNS YOU πŸ˜‚", "SCRIPT BY SAI πŸ‘‘βš‘"
}

safeBtn.MouseButton1Click:Connect(function()
    safeMode = not safeMode
    safeBtn.Text = safeMode and "Safe Mode: ON" or "Safe Mode: OFF"
    safeBtn.TextColor3 = safeMode and Color3.new(0,1,0) or Color3.new(1,1,1)
end)

startB.MouseButton1Click:Connect(function() looping = true end)
stopB.MouseButton1Click:Connect(function() looping = false end)

task.spawn(function()
    while true do
        if looping then
            local target = nIn.Text; local phrase = phrases[pIdx]; local pat = customPatterns[patternIdx]
            local maxLen = 198 
            local currentLen = #target + #phrase + 2
            local available = maxLen - currentLen
            local finalPattern = string.sub(string.rep(pat, 50), 1, math.max(available, 5))
            sendGlobal(finalPattern .. " " .. target .. " " .. phrase)
            pIdx = (pIdx >= #phrases) and 1 or (pIdx + 1)
            patternIdx = (patternIdx >= #customPatterns) and 1 or (patternIdx + 1)
            
            local waitTime = tonumber(dIn.Text) or 1.4
            if safeMode then waitTime = waitTime + (math.random(-2, 2)/10) end
            task.wait(math.max(waitTime, 0.1))
        else task.wait(0.5) end
    end
end)

-- 5. UPDATED INTRO & STARTUP (____ PATTERN)
task.spawn(function()
    local startupPattern = string.rep("____", 40) -- Creates long pattern
    sendGlobal(startupPattern .. " SAI V2 LOADED 😏✌🏻")

    local iS = Instance.new("ScreenGui", cg); local box = Instance.new("Frame", iS); box.Size = UDim2.new(0, 400, 0, 150); box.Position = UDim2.new(0.5, -200, 0.45, -75); box.BackgroundColor3 = Color3.new(0,0,0); box.BackgroundTransparency = 0.2; Instance.new("UIStroke", box).Color = Color3.new(0, 0.6, 1)
    local l = Instance.new("TextLabel", box); l.Size = UDim2.new(1,0,1,0); l.BackgroundTransparency = 1; l.TextColor3 = Color3.new(1,1,1); l.Font = "Code"; l.TextSize = 18; l.Text = ""; l.TextWrapped = true
    
    local function typeW(str)
        l.Text = ""
        for i = 1, #str do l.Text = str:sub(1,i); task.wait(0.03) end
        task.wait(1.5)
        local t = ts:Create(l, TweenInfo.new(0.3), {TextTransparency = 1})
        t:Play()
        t.Completed:Wait()
        l.TextTransparency = 0
    end
    
    typeW("SAI V2 LOADED 😏✌🏻")
    typeW("TGR RVX DGN DIVINE PNX VN ON TOP πŸ€«πŸ‘‘")
    
    iS:Destroy(); main.Visible = true
end)

sBtn.MouseButton1Click:Connect(function() main.Visible = not main.Visible end)

Features & Information

MADE FOR SPAM
#TGR RVX DGN DIVINE PNX VN ON TOP

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts