Autoblock with delay
Key Required

Autoblock with delay

⛩️ Karate!IEmmyIIEmmyI 3.2K views 1K executesUpdated Jan 6, 2026
3.0/ 5(5 votes)
3260% Positive
Lua Script•641 lines (21242 chars)
local Players = game:GetService("Players")
local VirtualUser = game:GetService("VirtualUser")
local UserInputService = game:GetService("UserInputService")

local LOCAL_PLAYER = Players.LocalPlayer

local Config = {
    isEnabled = true,
    radius = 7,
    blockDelayMin = 200,
    blockDelayMax = 225,
    showSphere = false
}

local SAFE_ANIMATIONS = {
	["180426354"] = true,
	["180435792"] = true,
	["180435557"] = true,
	["180435571"] = true,
	["684969250"] = true,
	["12246410284"] = true,
	["684949179"] = true,
	["180436148"] = true,
	["7950784441"] = true,
	["12245963642"] = true,
	["16398226659"] = true,
	["6691954521"] = true,
	["6768460286"] = true,
	["6835294179"] = true,
	["6835294624"] = true,
	["6835295587"] = true,
	["6835295340"] = true,
	["6835295768"] = true,
	["6843685401"] = true,
	["6843686183"] = true,
	["6843688241"] = true,
	["6844129816"] = true,
	["6844132951"] = true,
	["6848072990"] = true,
	["6857596237"] = true,
	["6887306042"] = true,
	["6887334158"] = true,
	["6891877544"] = true,
	["6910931126"] = true,
	["9819726292"] = true,
	["9819735529"] = true,
	["9819745648"] = true,
	["9819790668"] = true,
	["9819806597"] = true,
	["9819811478"] = true,
	["9819823356"] = true,
	["9819830644"] = true,
	["9822389499"] = true,
	["9825822267"] = true,
	["9825834442"] = true,
	["6846937588"] = true,
	["6846943217"] = true,
	["11116879670"] = true,
	["10950534442"] = true,
	["103336801329780"] = true,
	["11116773443"] = true,
	["11116829154"] = true,
	["11116842345"] = true,
	["11116851650"] = true,
	["11116868980"] = true,
	["11116876082"] = true,
	["11116879769"] = true,
	["11116883670"] = true,
	["11116904044"] = true,
	["11116906510"] = true,
	["11116911916"] = true,
	["11116928049"] = true,
	["11116935344"] = true,
	["11116942197"] = true,
	["11116953107"] = true,
	["11739213999"] = true,
	["11739218535"] = true,
	["11739221487"] = true,
	["11824454279"] = true,
	["12110667126"] = true,
	["12110738932"] = true,
	["12110743424"] = true,
	["12119297992"] = true,
	["15171648575"] = true,
	["15434704458"] = true,
	["15434415778"] = true,
	["15434491089"] = true,
	["15434493570"] = true,
	["15744847038"] = true,
	["16203609238"] = true,
	["16294404827"] = true,
	["17003507450"] = true,
	["18357490871"] = true,
	["18570567181"] = true,
	["18570580687"] = true,
	["18570584513"] = true,
	["18570587568"] = true,
	["18570592488"] = true,
	["18570596139"] = true,
	["6849692501"] = true,
	["6849441527"] = true,
	["7950763400"] = true,
	["7814314769"] = true,
	["6849491789"] = true,
	["6835295052"] = true,
	["6849489471"] = true,
	["8201303807"] = true,
	["10697528876"] = true,
	["8201293554"] = true,
	["16398208032"] = true,
	["11580783004"] = true,
	["18570602813"] = true,
	["18570605663"] = true,
	["18570610312"] = true,
	["18570613289"] = true,
	["18570616732"] = true,
	["18570620535"] = true,
	["18570623746"] = true,
	["18570626263"] = true,
	["18570632470"] = true,
	["18570671957"] = true,
	["18570683512"] = true,
	["18570687683"] = true,
	["18850450498"] = true,
	["85696117023177"] = true,
	["123461108716822"] = true,
	["1190149394074304"] = true,
	["116839058176293"] = true,
	["752942489704875"] = true,
	["130879133604226"] = true,
	["11580787715"] = true,
	["6835295057"] = true,
	["7814305242"] = true,
	["119813141112551"] = true,
	["80008594862427"] = true,
}

local function normalizeAnimationId(id)
    if not id then return nil end
    local s = tostring(id)
    local m = s:match("id=(%d+)")
    if m then return m end
    return s:match("(%d+)")
end

local function getDistance(player)
    local char, localChar = player.Character, LOCAL_PLAYER.Character
    if not (char and localChar) then return math.huge end
    local root = char:FindFirstChild("HumanoidRootPart")
    local localRoot = localChar:FindFirstChild("HumanoidRootPart")
    if not (root and localRoot) then return math.huge end
    return (root.Position - localRoot.Position).Magnitude
end

local blocking = false
local lastBlockTime = 0
local blockCooldown = 0.5

local function addUICorner(inst, px)
    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0, px or 12)
    corner.Parent = inst
end

local function createGradient(frame, color1, color2, rotation)
    local grad = Instance.new("UIGradient")
    grad.Color = ColorSequence.new({
        ColorSequenceKeypoint.new(0, color1),
        ColorSequenceKeypoint.new(1, color2),
    })
    grad.Rotation = rotation or 45
    grad.Parent = frame
end

local spherePart = nil
local sphereUpdateConnection = nil

local function updateSphere()
    if spherePart then
        spherePart:Destroy()
        spherePart = nil
    end
    
    if sphereUpdateConnection then
        sphereUpdateConnection:Disconnect()
        sphereUpdateConnection = nil
    end
    
    if not Config.showSphere then return end
    
    local char = LOCAL_PLAYER.Character
    if not char then return end
    local root = char:FindFirstChild("HumanoidRootPart")
    if not root then return end
    
    spherePart = Instance.new("Part")
    spherePart.Name = "RadiusSphere"
    spherePart.Shape = Enum.PartType.Ball
    spherePart.Size = Vector3.new(Config.radius * 2, Config.radius * 2, Config.radius * 2)
    spherePart.Transparency = 0.7
    spherePart.Color = Color3.fromRGB(255, 105, 180)
    spherePart.Material = Enum.Material.ForceField
    spherePart.CanCollide = false
    spherePart.CanTouch = false
    spherePart.CanQuery = false
    spherePart.Massless = true
    spherePart.Anchored = true
    spherePart.Parent = workspace
    
    sphereUpdateConnection = game:GetService("RunService").RenderStepped:Connect(function()
        if spherePart and root and root.Parent then
            spherePart.CFrame = root.CFrame
            spherePart.Size = Vector3.new(Config.radius * 2, Config.radius * 2, Config.radius * 2)
        end
    end)
end

local screenGui = Instance.new("ScreenGui")
screenGui.Name = "AutoBlockGUI"
screenGui.ResetOnSpawn = false
screenGui.Parent = LOCAL_PLAYER:WaitForChild("PlayerGui")

local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 280, 0, 380)
mainFrame.Position = UDim2.new(0, 20, 0, 20)
mainFrame.BackgroundColor3 = Color3.fromRGB(255, 192, 203)
mainFrame.BorderSizePixel = 0
mainFrame.Parent = screenGui
createGradient(mainFrame, Color3.fromRGB(255, 182, 193), Color3.fromRGB(255, 105, 180))
addUICorner(mainFrame, 16)
mainFrame.Visible = true

local layout = Instance.new("UIListLayout")
layout.Parent = mainFrame
layout.FillDirection = Enum.FillDirection.Vertical
layout.HorizontalAlignment = Enum.HorizontalAlignment.Center
layout.VerticalAlignment = Enum.VerticalAlignment.Top
layout.Padding = UDim.new(0, 10)

local padding = Instance.new("UIPadding")
padding.Parent = mainFrame
padding.PaddingTop = UDim.new(0, 12)
padding.PaddingLeft = UDim.new(0, 10)
padding.PaddingRight = UDim.new(0, 10)

local toggleButton = Instance.new("TextButton")
toggleButton.Size = UDim2.new(1, -20, 0, 45)
toggleButton.BackgroundColor3 = Color3.fromRGB(255, 182, 193)
toggleButton.TextColor3 = Color3.fromRGB(255, 20, 147)
toggleButton.Font = Enum.Font.GothamBold
toggleButton.TextSize = 20
toggleButton.Parent = mainFrame
createGradient(toggleButton, Color3.fromRGB(255, 182, 193), Color3.fromRGB(255, 105, 180))
addUICorner(toggleButton, 12)

local statusLabel = Instance.new("TextLabel")
statusLabel.Size = UDim2.new(1, -20, 0, 35)
statusLabel.BackgroundColor3 = Color3.fromRGB(255, 240, 245)
statusLabel.TextColor3 = Color3.fromRGB(199, 21, 133)
statusLabel.Font = Enum.Font.GothamSemibold
statusLabel.TextSize = 18
statusLabel.Parent = mainFrame
addUICorner(statusLabel, 10)

local blockTimeLabel = Instance.new("TextLabel")
blockTimeLabel.Size = UDim2.new(1, -20, 0, 25)
blockTimeLabel.BackgroundTransparency = 1
blockTimeLabel.TextColor3 = Color3.fromRGB(199, 21, 133)
blockTimeLabel.Font = Enum.Font.GothamSemibold
blockTimeLabel.TextSize = 16
blockTimeLabel.Text = "Last Block: N/A"
blockTimeLabel.Parent = mainFrame

local cooldownBar = Instance.new("Frame")
cooldownBar.Size = UDim2.new(1, -20, 0, 8)
cooldownBar.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
cooldownBar.BorderSizePixel = 0
cooldownBar.Visible = false
cooldownBar.Parent = mainFrame
addUICorner(cooldownBar, 8)

local cooldownFill = Instance.new("Frame")
cooldownFill.Size = UDim2.new(0, 0, 1, 0)
cooldownFill.BackgroundColor3 = Color3.fromRGB(255, 105, 180)
cooldownFill.BorderSizePixel = 0
cooldownFill.Parent = cooldownBar
addUICorner(cooldownFill, 8)

local radiusContainer = Instance.new("Frame")
radiusContainer.Size = UDim2.new(1, -20, 0, 50)
radiusContainer.BackgroundTransparency = 1
radiusContainer.Parent = mainFrame

local radiusLabel = Instance.new("TextLabel")
radiusLabel.Size = UDim2.new(1, 0, 0, 20)
radiusLabel.Position = UDim2.new(0, 0, 0, 0)
radiusLabel.BackgroundTransparency = 1
radiusLabel.TextColor3 = Color3.fromRGB(199, 21, 133)
radiusLabel.Font = Enum.Font.GothamSemibold
radiusLabel.TextSize = 16
radiusLabel.Text = "Radius: " .. Config.radius .. " studs"
radiusLabel.Parent = radiusContainer

local radiusSliderBg = Instance.new("Frame")
radiusSliderBg.Size = UDim2.new(1, 0, 0, 8)
radiusSliderBg.Position = UDim2.new(0, 0, 0, 25)
radiusSliderBg.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
radiusSliderBg.BorderSizePixel = 0
radiusSliderBg.Parent = radiusContainer
addUICorner(radiusSliderBg, 8)

local radiusSliderFill = Instance.new("Frame")
radiusSliderFill.Size = UDim2.new((Config.radius - 5) / 25, 0, 1, 0)
radiusSliderFill.BackgroundColor3 = Color3.fromRGB(255, 105, 180)
radiusSliderFill.BorderSizePixel = 0
radiusSliderFill.Parent = radiusSliderBg
addUICorner(radiusSliderFill, 8)

local radiusButton = Instance.new("TextButton")
radiusButton.Size = UDim2.new(1, 0, 1, 0)
radiusButton.BackgroundTransparency = 1
radiusButton.Text = ""
radiusButton.Parent = radiusSliderBg

local minDelayContainer = Instance.new("Frame")
minDelayContainer.Size = UDim2.new(1, -20, 0, 50)
minDelayContainer.BackgroundTransparency = 1
minDelayContainer.Parent = mainFrame

local minDelayLabel = Instance.new("TextLabel")
minDelayLabel.Size = UDim2.new(1, 0, 0, 20)
minDelayLabel.Position = UDim2.new(0, 0, 0, 0)
minDelayLabel.BackgroundTransparency = 1
minDelayLabel.TextColor3 = Color3.fromRGB(199, 21, 133)
minDelayLabel.Font = Enum.Font.GothamSemibold
minDelayLabel.TextSize = 16
minDelayLabel.Text = "Min Delay: " .. Config.blockDelayMin .. "ms"
minDelayLabel.Parent = minDelayContainer

local minDelaySliderBg = Instance.new("Frame")
minDelaySliderBg.Size = UDim2.new(1, 0, 0, 8)
minDelaySliderBg.Position = UDim2.new(0, 0, 0, 25)
minDelaySliderBg.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
minDelaySliderBg.BorderSizePixel = 0
minDelaySliderBg.Parent = minDelayContainer
addUICorner(minDelaySliderBg, 8)

local minDelaySliderFill = Instance.new("Frame")
minDelaySliderFill.Size = UDim2.new((Config.blockDelayMin - 50) / 450, 0, 1, 0)
minDelaySliderFill.BackgroundColor3 = Color3.fromRGB(255, 105, 180)
minDelaySliderFill.BorderSizePixel = 0
minDelaySliderFill.Parent = minDelaySliderBg
addUICorner(minDelaySliderFill, 8)

local minDelayButton = Instance.new("TextButton")
minDelayButton.Size = UDim2.new(1, 0, 1, 0)
minDelayButton.BackgroundTransparency = 1
minDelayButton.Text = ""
minDelayButton.Parent = minDelaySliderBg

local maxDelayContainer = Instance.new("Frame")
maxDelayContainer.Size = UDim2.new(1, -20, 0, 50)
maxDelayContainer.BackgroundTransparency = 1
maxDelayContainer.Parent = mainFrame

local maxDelayLabel = Instance.new("TextLabel")
maxDelayLabel.Size = UDim2.new(1, 0, 0, 20)
maxDelayLabel.Position = UDim2.new(0, 0, 0, 0)
maxDelayLabel.BackgroundTransparency = 1
maxDelayLabel.TextColor3 = Color3.fromRGB(199, 21, 133)
maxDelayLabel.Font = Enum.Font.GothamSemibold
maxDelayLabel.TextSize = 16
maxDelayLabel.Text = "Max Delay: " .. Config.blockDelayMax .. "ms"
maxDelayLabel.Parent = maxDelayContainer

local maxDelaySliderBg = Instance.new("Frame")
maxDelaySliderBg.Size = UDim2.new(1, 0, 0, 8)
maxDelaySliderBg.Position = UDim2.new(0, 0, 0, 25)
maxDelaySliderBg.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
maxDelaySliderBg.BorderSizePixel = 0
maxDelaySliderBg.Parent = maxDelayContainer
addUICorner(maxDelaySliderBg, 8)

local maxDelaySliderFill = Instance.new("Frame")
maxDelaySliderFill.Size = UDim2.new((Config.blockDelayMax - 50) / 450, 0, 1, 0)
maxDelaySliderFill.BackgroundColor3 = Color3.fromRGB(255, 105, 180)
maxDelaySliderFill.BorderSizePixel = 0
maxDelaySliderFill.Parent = maxDelaySliderBg
addUICorner(maxDelaySliderFill, 8)

local maxDelayButton = Instance.new("TextButton")
maxDelayButton.Size = UDim2.new(1, 0, 1, 0)
maxDelayButton.BackgroundTransparency = 1
maxDelayButton.Text = ""
maxDelayButton.Parent = maxDelaySliderBg

local sphereToggle = Instance.new("TextButton")
sphereToggle.Size = UDim2.new(1, -20, 0, 40)
sphereToggle.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
sphereToggle.TextColor3 = Color3.fromRGB(255, 105, 180)
sphereToggle.Font = Enum.Font.GothamBold
sphereToggle.TextSize = 18
sphereToggle.Text = "Show Sphere: OFF"
sphereToggle.Parent = mainFrame
addUICorner(sphereToggle, 12)

local function updateStatusLabel(isBlocking)
    if isBlocking then
        statusLabel.Text = "Status: Blocking!"
        statusLabel.TextColor3 = Color3.fromRGB(255, 0, 0)
    else
        if Config.isEnabled then
            statusLabel.Text = "Status: Active"
            statusLabel.TextColor3 = Color3.fromRGB(0, 255, 0)
        else
            statusLabel.Text = "Status: Idle"
            statusLabel.TextColor3 = Color3.fromRGB(199, 21, 133)
        end
    end
end

if Config.isEnabled then
    toggleButton.Text = "Disable Auto-Block"
    toggleButton.BackgroundColor3 = Color3.fromRGB(255, 105, 180)
    toggleButton.TextColor3 = Color3.fromRGB(255, 255, 255)
else
    toggleButton.Text = "Enable Auto-Block"
    toggleButton.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
    toggleButton.TextColor3 = Color3.fromRGB(255, 105, 180)
end
updateStatusLabel(false)

toggleButton.MouseButton1Click:Connect(function()
    Config.isEnabled = not Config.isEnabled
    if Config.isEnabled then
        toggleButton.Text = "Disable Auto-Block"
        toggleButton.BackgroundColor3 = Color3.fromRGB(255, 105, 180)
        toggleButton.TextColor3 = Color3.fromRGB(255, 255, 255)
    else
        toggleButton.Text = "Enable Auto-Block"
        toggleButton.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
        toggleButton.TextColor3 = Color3.fromRGB(255, 105, 180)
    end
    updateStatusLabel(false)
end)

sphereToggle.MouseButton1Click:Connect(function()
    Config.showSphere = not Config.showSphere
    if Config.showSphere then
        sphereToggle.Text = "Show Sphere: ON"
        sphereToggle.BackgroundColor3 = Color3.fromRGB(255, 105, 180)
        sphereToggle.TextColor3 = Color3.fromRGB(255, 255, 255)
    else
        sphereToggle.Text = "Show Sphere: OFF"
        sphereToggle.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
        sphereToggle.TextColor3 = Color3.fromRGB(255, 105, 180)
    end
    updateSphere()
end)

local radiusDragging = false
radiusButton.MouseButton1Down:Connect(function()
    radiusDragging = true
end)

UserInputService.InputEnded:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 then
        radiusDragging = false
    end
end)

UserInputService.InputChanged:Connect(function(input)
    if radiusDragging and input.UserInputType == Enum.UserInputType.MouseMovement then
        local mousePos = UserInputService:GetMouseLocation()
        local sliderPos = radiusSliderBg.AbsolutePosition
        local sliderSize = radiusSliderBg.AbsoluteSize
        
        local relativeX = math.clamp(mousePos.X - sliderPos.X, 0, sliderSize.X)
        local percentage = relativeX / sliderSize.X
        
        Config.radius = math.floor(5 + (percentage * 25))
        radiusLabel.Text = "Radius: " .. Config.radius .. " studs"
        radiusSliderFill.Size = UDim2.new(percentage, 0, 1, 0)
        
        if Config.showSphere then
            updateSphere()
        end
    end
end)

local minDelayDragging = false
minDelayButton.MouseButton1Down:Connect(function()
    minDelayDragging = true
end)

UserInputService.InputEnded:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 then
        minDelayDragging = false
    end
end)

UserInputService.InputChanged:Connect(function(input)
    if minDelayDragging and input.UserInputType == Enum.UserInputType.MouseMovement then
        local mousePos = UserInputService:GetMouseLocation()
        local sliderPos = minDelaySliderBg.AbsolutePosition
        local sliderSize = minDelaySliderBg.AbsoluteSize
        
        local relativeX = math.clamp(mousePos.X - sliderPos.X, 0, sliderSize.X)
        local percentage = relativeX / sliderSize.X
        
        Config.blockDelayMin = math.floor(50 + (percentage * 450))
        if Config.blockDelayMin > Config.blockDelayMax then
            Config.blockDelayMin = Config.blockDelayMax
        end
        minDelayLabel.Text = "Min Delay: " .. Config.blockDelayMin .. "ms"
        minDelaySliderFill.Size = UDim2.new((Config.blockDelayMin - 50) / 450, 0, 1, 0)
    end
end)

local maxDelayDragging = false
maxDelayButton.MouseButton1Down:Connect(function()
    maxDelayDragging = true
end)

UserInputService.InputEnded:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 then
        maxDelayDragging = false
    end
end)

UserInputService.InputChanged:Connect(function(input)
    if maxDelayDragging and input.UserInputType == Enum.UserInputType.MouseMovement then
        local mousePos = UserInputService:GetMouseLocation()
        local sliderPos = maxDelaySliderBg.AbsolutePosition
        local sliderSize = maxDelaySliderBg.AbsoluteSize
        
        local relativeX = math.clamp(mousePos.X - sliderPos.X, 0, sliderSize.X)
        local percentage = relativeX / sliderSize.X
        
        Config.blockDelayMax = math.floor(50 + (percentage * 450))
        if Config.blockDelayMax < Config.blockDelayMin then
            Config.blockDelayMax = Config.blockDelayMin
        end
        maxDelayLabel.Text = "Max Delay: " .. Config.blockDelayMax .. "ms"
        maxDelaySliderFill.Size = UDim2.new((Config.blockDelayMax - 50) / 450, 0, 1, 0)
    end
end)

LOCAL_PLAYER.CharacterAdded:Connect(function()
    task.wait(1)
    if Config.showSphere then
        updateSphere()
    end
end)

local function handleAnimation(player, animTrack)
    if not Config.isEnabled or player == LOCAL_PLAYER or UserInputService:GetFocusedTextBox() or blocking then
        return
    end

    local animIdRaw
    if animTrack and animTrack.Animation then
        animIdRaw = animTrack.Animation.AnimationId
    end
    local animId = normalizeAnimationId(animIdRaw)
    if animId and SAFE_ANIMATIONS[animId] then
        return
    end

    local distance = getDistance(player)
    if distance > Config.radius then return end

    local currentTime = tick()
    if (currentTime - lastBlockTime) < blockCooldown then return end
    lastBlockTime = currentTime

    blocking = true
    updateStatusLabel(true)

    local randomDelayMs = math.random(Config.blockDelayMin, Config.blockDelayMax)
    local randomDelay = randomDelayMs / 1000
    blockTimeLabel.Text = "Last Block: " .. math.floor(randomDelayMs) .. "ms"

    task.wait(randomDelay)

    if not UserInputService:GetFocusedTextBox() then
        pcall(function()
            VirtualUser:Button2Down(Vector2.new(0, 0), workspace.CurrentCamera.CFrame)
            task.wait(0.1)
            VirtualUser:Button2Up(Vector2.new(0, 0), workspace.CurrentCamera.CFrame)
        end)
    end

    blocking = false
    cooldownBar.Visible = true
    cooldownFill.Size = UDim2.new(1, 0, 1, 0)

    local elapsed = 0
    local duration = blockCooldown
    while elapsed < duration do
        task.wait(0.03)
        elapsed = elapsed + 0.03
        local remaining = 1 - (elapsed / duration)
        if remaining < 0 then remaining = 0 end
        cooldownFill.Size = UDim2.new(remaining, 0, 1, 0)
    end
    cooldownBar.Visible = false

    updateStatusLabel(false)
end

local function initializePlayerTracking(player)
    local function onCharacterAdded(character)
        local humanoid = character:WaitForChild("Humanoid")
        local animator = humanoid:FindFirstChildOfClass("Animator") or Instance.new("Animator", humanoid)
        animator.AnimationPlayed:Connect(function(animTrack)
            local ok, err = pcall(function()
                handleAnimation(player, animTrack)
            end)
            if not ok then
            end
        end)
    end

    if player.Character then
        pcall(onCharacterAdded, player.Character)
    end
    player.CharacterAdded:Connect(onCharacterAdded)
end

for _, player in ipairs(Players:GetPlayers()) do
    initializePlayerTracking(player)
end
Players.PlayerAdded:Connect(initializePlayerTracking)

UserInputService.InputBegan:Connect(function(input, gameProcessed)
    if gameProcessed then return end
    if input.UserInputType == Enum.UserInputType.Keyboard and input.KeyCode == Enum.KeyCode.R then
        mainFrame.Visible = not mainFrame.Visible
    end
end)

Features & Information

Features - Last block - Has a randomized delay - Changeable delay range - Changeable radius So most people didn't edit the script itself and thought it was broken so umm I js made it so you can adjust everything inside the game
#karate#fighting

Community Comments (15)

BATUMBAKALBATUMBAKALJan 6, 2026

hi

BATUMBAKALBATUMBAKALJan 6, 2026

do you have discord server?

IEmmyIIEmmyIJan 6, 2026

No srry

OmegaPowerOmegaPowerJan 6, 2026

Woah

M0nkeyDLuffyM0nkeyDLuffyJan 6, 2026

Make an auto counter with it.

Replying to @M0nkeyDLuffy
IEmmyIIEmmyIJan 6, 2026

@M0nkeyDLuffy wdym

Replying to @IEmmyI
M0nkeyDLuffyM0nkeyDLuffyJan 7, 2026

@IEmmyI literally self explains hm, auto attack when successfuly perfect block.

Replying to @M0nkeyDLuffy
IEmmyIIEmmyIJan 8, 2026

@M0nkeyDLuffy Yeah I was confused maybe cuz u can js click or tap and if u fake its pointless

skidsenseskidsenseJan 12, 2026

good skid mate

Replying to @skidsense
IEmmyIIEmmyIJan 13, 2026

@pssyboy whats the issue?

Replying to @IEmmyI
skidsenseskidsenseJan 13, 2026

@IEmmyI its skidded off me and u didnt give credits.

Replying to @skidsense
IEmmyIIEmmyIJan 13, 2026

@pssyboy first of all it was open source second im pretty sure its not third of all both ways i used someone elses fourth its improved

Replying to @IEmmyI
skidsenseskidsenseJan 13, 2026

@IEmmyI "improved" its way worse than before, and yes a buyer leaked it.

Replying to @skidsense
IEmmyIIEmmyIJan 13, 2026

@pssyboy Hey i mean ig u know the game more then me so having a random delay is bad

Julian_ClydeJulian_ClydeApr 22, 2026

I forgot how to put it on rblx

More Scripts for ⛩️ Karate!