op aoi todo/yuji/mahito script works (discontinnued)
Key Required

op aoi todo/yuji/mahito script works (discontinnued)

[SKY ASSASSIN] Jujutsu Shenanigansnagizaronaginagizaronagi 3.6K views 3.1K executesUpdated Feb 23, 2026
5.0/ 5(6 votes)
60100% Positive
Lua Script•203 lines (8830 chars)
--[[
	CUBO V4 FINAL - JJS STABLE PRECISION
	- NORMAL: 0.5s Cravados
	- GROUND: Frame Perfect (2-1 frames antes do fim)
	- DETECÇÃO: Torso no chão ativa a lógica de frames.
]]

local player = game.Players.LocalPlayer
local mouse = player:GetMouse()
local UIS = game:GetService("UserInputService")
local VIM = game:GetService("VirtualInputManager")
local RunService = game:GetService("RunService")

local scriptActive = true
local isThrottled = false
local lockedTargetRoot = nil
local isLocked = false
local isMobile = UIS.TouchEnabled

-- Simulações
local function press(key)
    VIM:SendKeyEvent(true, key, false, game)
    task.wait(0.01)
    VIM:SendKeyEvent(false, key, false, game)
end

local function click()
    VIM:SendMouseButtonEvent(0, 0, 0, true, game, 0)
    task.wait(0.01)
    VIM:SendMouseButtonEvent(0, 0, 0, false, game, 0)
end

-- DETECÇÃO FÍSICA: TORSO NO CHÃO
local function isEnemyOnGround()
    local target = (isLocked and lockedTargetRoot and lockedTargetRoot.Parent) or (mouse.Target and mouse.Target.Parent)
    if not target then return false end
    
    local torso = target:FindFirstChild("Torso") or target:FindFirstChild("UpperTorso") or target:FindFirstChild("HumanoidRootPart")
    if torso then
        -- Verifica se o Torso está inclinado (horizontal)
        local isLyingDown = math.abs(torso.CFrame.UpVector.Y) < 0.5
        return isLyingDown
    end
    return false
end

-- ==========================================
-- LÓGICA PERFECT SWAP (T)
-- ==========================================
local function executePerfectSwap()
    if not SkillStates["perfect"] then return end
    local char = player.Character
    local hum = char and char:FindFirstChild("Humanoid")
    if not hum then return end

    press(Enum.KeyCode.R) -- Inicia Boogie Woogie

    task.spawn(function()
        if isEnemyOnGround() then
            -- LÓGICA POR FRAMES (2-1 ANTES DO FIM)
            local detectedAnim = nil
            local start = tick()
            while tick() - start < 0.3 do
                for _, track in pairs(hum:GetPlayingAnimationTracks()) do
                    if track.Name:lower():find("boogie") or track.Name:lower():find("swap") then
                        detectedAnim = track
                        break
                    end
                end
                if detectedAnim then break end
                RunService.Heartbeat:Wait()
            end

            if detectedAnim then
                -- 2 frames = 0.033s | 1 frame = 0.016s
                -- Usamos um valor intermediário para garantir precisão
                local waitTime = detectedAnim.Length - (2 / 60) 
                if waitTime > 0 then task.wait(waitTime) end
            else
                task.wait(0.25) -- Fallback
            end
        else
            -- LÓGICA NORMAL: EXATOS 0.5 SEGUNDOS
            task.wait(0.5)
        end
        click() -- M1
    end)
end

-- ==========================================
-- INTERFACE MOBILE E MENU ORIGINAL
-- ==========================================
local MobileGui = Instance.new("ScreenGui", player.PlayerGui)
MobileGui.Name = "JJS_Mobile_System"

local function createMobileBtn(id, text, color, pos)
    local btn = Instance.new("TextButton", MobileGui)
    btn.Size = UDim2.new(0, 60, 0, 60); btn.Position = pos; btn.Text = text
    btn.BackgroundColor3 = color; btn.Visible = false; btn.TextColor3 = Color3.new(1,1,1)
    btn.Font = Enum.Font.Code; btn.TextSize = 10
    Instance.new("UICorner", btn).CornerRadius = UDim.new(1, 0)
    return btn
end

local mButtons = {
    faint = createMobileBtn("faint", "FEINT", Color3.fromRGB(130, 50, 220), UDim2.new(0.85, 0, 0.15, 0)),
    perfect = createMobileBtn("perfect", "PERF", Color3.fromRGB(220, 130, 50), UDim2.new(0.75, 0, 0.25, 0)),
    yuji = createMobileBtn("yuji", "YUJI", Color3.fromRGB(50, 130, 220), UDim2.new(0.85, 0, 0.35, 0)),
    todoBF = createMobileBtn("todoBF", "TODO", Color3.fromRGB(220, 50, 100), UDim2.new(0.75, 0, 0.45, 0)),
    lockOn = createMobileBtn("lockOn", "LOCK", Color3.fromRGB(100, 100, 100), UDim2.new(0.85, 0, 0.55, 0))
}

local ScreenGui = Instance.new("ScreenGui", player.PlayerGui)
ScreenGui.Name = "CuboV4_Final_Timer"
local MainFrame = Instance.new("Frame", ScreenGui)
MainFrame.Size = UDim2.new(0, 180, 0, 480); MainFrame.Position = UDim2.new(0.02, 0, 0.2, 0)
MainFrame.BackgroundColor3 = Color3.fromRGB(10, 10, 20); MainFrame.Active = true; MainFrame.Draggable = true
local Close = Instance.new("TextButton", MainFrame)
Close.Text = "X"; Close.Size = UDim2.new(0, 25, 0, 25); Close.Position = UDim2.new(1, -30, 0, 5); Close.BackgroundColor3 = Color3.fromRGB(150, 0, 0)
Close.MouseButton1Click:Connect(function() ScreenGui:Destroy(); MobileGui:Destroy(); scriptActive = false end)
local Content = Instance.new("Frame", MainFrame)
Content.Size = UDim2.new(1, -20, 1, -80); Content.Position = UDim2.new(0, 10, 0, 40); Content.BackgroundTransparency = 1
Instance.new("UIListLayout", Content).Padding = UDim.new(0, 8)

local Skills = {
    {id = "faint", Name = "Feint Swap (E)", Color = Color3.fromRGB(130, 50, 220)},
    {id = "perfect", Name = "Perfect Swap (T)", Color = Color3.fromRGB(220, 130, 50)},
    {id = "yuji", Name = "BlackFlash (3)", Color = Color3.fromRGB(50, 130, 220)},
    {id = "yujiTP", Name = "BlackFlash TP", Color = Color3.fromRGB(0, 255, 150)},
    {id = "todoBF", Name = "Todo BF (X)", Color = Color3.fromRGB(220, 50, 100)},
    {id = "todoTP", Name = "Todo TP (X)", Color = Color3.fromRGB(255, 0, 255)},
    {id = "lockOn", Name = "Lock (H)", Color = Color3.fromRGB(100, 100, 100)}
}

SkillStates = {}
for _, data in ipairs(Skills) do
    SkillStates[data.id] = false
    local btn = Instance.new("TextButton", Content)
    btn.Size = UDim2.new(1, 0, 0, 45); btn.BackgroundColor3 = Color3.fromRGB(30, 30, 40)
    btn.Text = data.Name .. "\n[OFF]"; btn.TextColor3 = Color3.new(1, 1, 1); btn.Font = Enum.Font.Code; btn.TextSize = 10
    btn.MouseButton1Click:Connect(function()
        SkillStates[data.id] = not SkillStates[data.id]
        btn.Text = SkillStates[data.id] and data.Name .. "\n[ON]" or data.Name .. "\n[OFF]"
        btn.BackgroundColor3 = SkillStates[data.id] and data.Color or Color3.fromRGB(30, 30, 40)
        if isMobile and mButtons[data.id] then mButtons[data.id].Visible = SkillStates[data.id] end
    end)
end

-- LÓGICAS ADICIONAIS
local function doLockOn()
    if not SkillStates["lockOn"] then return end
    if isLocked then isLocked = false; lockedTargetRoot = nil
    else
        local t = (mouse.Target and mouse.Target.Parent:FindFirstChild("HumanoidRootPart"))
        if t then lockedTargetRoot = t; isLocked = true end
    end
end

local function doBlackFlash()
    if not SkillStates["yuji"] or isThrottled then return end
    isThrottled = true
    task.spawn(function()
        task.wait(0.3); if SkillStates["yujiTP"] then
            local t = (isLocked and lockedTargetRoot) or (mouse.Target and mouse.Target.Parent:FindFirstChild("HumanoidRootPart"))
            if t then player.Character:PivotTo(t.CFrame * CFrame.new(0, 0, 3)) end
        end
        press(Enum.KeyCode.Three); task.wait(0.3); isThrottled = false
    end)
end

local function doTodoBF()
    if not SkillStates["todoBF"] then return end
    task.spawn(function()
        press(Enum.KeyCode.Three); task.wait(0.7); press(Enum.KeyCode.R); task.wait(0.38); press(Enum.KeyCode.Two)
        if SkillStates["todoTP"] then task.delay(0.5, function()
            local t = (isLocked and lockedTargetRoot) or (mouse.Target and mouse.Target.Parent:FindFirstChild("HumanoidRootPart"))
            if t then player.Character:PivotTo(t.CFrame * CFrame.new(0, 0, 3)) end
        end) end
        task.wait(0.7); press(Enum.KeyCode.Two)
    end)
end

-- INPUTS
UIS.InputBegan:Connect(function(i, p)
    if p or not scriptActive then return end
    if i.KeyCode == Enum.KeyCode.H then doLockOn() end
    if i.KeyCode == Enum.KeyCode.T then executePerfectSwap() end
    if i.KeyCode == Enum.KeyCode.E then task.spawn(function() press(Enum.KeyCode.R); task.wait(0.1); click() end) end
    if i.KeyCode == Enum.KeyCode.X then doTodoBF() end
    if i.KeyCode == Enum.KeyCode.Three then doBlackFlash() end
end)

mButtons.perfect.MouseButton1Click:Connect(executePerfectSwap)
mButtons.lockOn.MouseButton1Click:Connect(doLockOn)
mButtons.yuji.MouseButton1Click:Connect(doBlackFlash)
mButtons.todoBF.MouseButton1Click:Connect(doTodoBF)
mButtons.faint.MouseButton1Click:Connect(function() press(Enum.KeyCode.R); task.wait(0.1); click() end)

RunService.RenderStepped:Connect(function()
    if scriptActive and SkillStates["lockOn"] and isLocked and lockedTargetRoot and lockedTargetRoot.Parent then
        workspace.CurrentCamera.CFrame = CFrame.new(workspace.CurrentCamera.CFrame.Position, lockedTargetRoot.Position)
    end
end)

Features & Information

simple blackflash for todo/yuji/mahito, gonna add for heian sukuna bcs why not? there is now an perfect swap and feint swap for TODO. have fun! it's a pretty simple script and i hope you enjoy (edit) now i fixed some bugs. so enjoy i think. key in the comments

Community Comments (18)

nagizaronaginagizaronagiFeb 23, 2026

is the script good? tell me if you guys want me to add something

nagizaronaginagizaronagiFeb 23, 2026

added todo blackflash and fixing todo perfect swap

nagizaronaginagizaronagiFeb 23, 2026

added auto todo blackflash. have fun!

nagizaronaginagizaronagiFeb 24, 2026

yo if ya using my ultra simple script. i am gonna add yuji/mahito backflash where it teleports. i couldn't bypass so i am gonna try making it only TP on 40-25 studs away from the humanoid. and he teleports directly to the back of the enemy. so yeah have fun. and making a new UI

nagizaronaginagizaronagiFeb 24, 2026

fixed tp blackflash, added lock on, and separated blackflash yuji/mahito and blackflash tp. have fun!

nagizaronaginagizaronagiFeb 24, 2026

the yuji/mahito blackflash was fixed. and it works for heian sukuna (good if you are heian sukuna at roulette gamemode)

nagizaronaginagizaronagiFeb 25, 2026

should i add FLY? ping me if i should aight?

nagizaronaginagizaronagiFeb 25, 2026

don't execute the script. rn

nagizaronaginagizaronagiFeb 25, 2026

unpatched it

NewguysNewguysMar 1, 2026

Its a great script , but can i ask for perfect todo swap when ragdoll?

Replying to @Newguys
nagizaronaginagizaronagiMar 1, 2026

@Newguys oh sorry. ok! imma do my best to make it

Replying to @Newguys
nagizaronaginagizaronagiMar 1, 2026

@Newguys added mobile version (idk if it works bcs i am pc) and the perfect swap ragdoll i might not finish it today

nagizaronaginagizaronagiMar 2, 2026

key is: CUBO_V4_SECRET_2024

nagizaronaginagizaronagiMar 6, 2026

aoi todo ragdoll swap a bit hard ngl.

Riven101Riven101Mar 6, 2026

ll

rykerr743rykerr743Apr 13, 2026

really good script 10/10

Replying to @rykerr743
nagizaronaginagizaronagiApr 14, 2026

@rykerr743 thanks. i might continue it but for now imma try working on other simple scripts.

Erko_01Erko_01Aug 20, 2026

Bro u good really script is awosome

More Scripts for [SKY ASSASSIN] Jujutsu Shenanigans