Karate OP Auto Blocker
Key Required

Karate OP Auto Blocker

⛩️ Karate!VyraVyra 4.4K views 1.2K executesUpdated Oct 2, 2025
2.0/ 5(5 votes)
2340% Positive
Lua Script•591 lines (21051 chars)
--[[
	WARNING: Heads up! This script has not been verified by ScriptBlox. Use at your own risk!
]]
-- CRACKED SCRIPT FEEL FREE TO IMPROVE IT!!
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local VirtualUser = game:GetService("VirtualUser")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")

local LOCAL_PLAYER = Players.LocalPlayer
local MIN_RADIUS, MAX_RADIUS = 5, 30
local MIN_DELAY, MAX_DELAY = 0, 500
local DEFAULT_RADIUS = 11

local Config = {
    isEnabled = true,
    radius = DEFAULT_RADIUS,
    blockDelay = 0,
    sphereVisible = true,
    toggleKey = Enum.KeyCode.M,
    blockToggleKey = Enum.KeyCode.B
}

local GUI = {
    statusLabel = nil,
    rangeLabel = nil,
    valueLabel = nil,
    delayLabel = nil,
    visualSphere = nil,
    mainFrame = nil,
    blockToggleKeyLabel = nil
}

local SAFE_ANIMATIONS = {
    ["180426354"] = true,
    ["180435792"] = true,
    ["180435557"] = true,
    ["180435571"] = true,
    ["684969250"] = true,
    ["12246410284"] = true,
    ["684949179"] = true,
    ["180436148"] = 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,
    ["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)
    return id:match("id=(%d+)") or id: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, localRoot = char:FindFirstChild("HumanoidRootPart"), localChar:FindFirstChild("HumanoidRootPart")
    if not (root and localRoot) then return math.huge end
    
    return (root.Position - localRoot.Position).Magnitude
end

local function updateGUIStatus(isBlocking)
    if not GUI.statusLabel then return end
    
    GUI.statusLabel.Text = isBlocking and "Status: Blocking!" or "Status: Active"
    GUI.statusLabel.TextColor3 = isBlocking and Color3.fromRGB(255, 0, 0) or Color3.fromRGB(0, 255, 0)
    
    if GUI.visualSphere and Config.sphereVisible then
        GUI.visualSphere.Color = isBlocking and Color3.new(1, 0, 0) or Color3.new(1, 1, 0)
    end
end

local function updateRadius(percentage)
    Config.radius = MIN_RADIUS + (MAX_RADIUS - MIN_RADIUS) * percentage
    Config.radius = math.floor(Config.radius * 10) / 10
    
    if GUI.valueLabel then
        GUI.valueLabel.Text = string.format("Radius: %.1f studs", Config.radius)
    end
    if GUI.rangeLabel then
        GUI.rangeLabel.Text = string.format("Range: %.1f studs", Config.radius)
    end
    if GUI.visualSphere then
        local newSize = Config.radius * 2
        GUI.visualSphere.Size = Vector3.new(newSize, newSize, newSize)
    end
end

local function updateDelay(percentage)
    Config.blockDelay = math.floor(MIN_DELAY + (MAX_DELAY - MIN_DELAY) * percentage)
    if GUI.delayLabel then
        GUI.delayLabel.Text = string.format("Delay: %d ms", Config.blockDelay)
    end
end

local function handleAnimation(player, animTrack)
    if not (Config.isEnabled and player ~= LOCAL_PLAYER) or UserInputService:GetFocusedTextBox() then return end
    
    local animId = normalizeAnimationId(animTrack.Animation.AnimationId)
    if SAFE_ANIMATIONS[animId] then return end
    
    local distance = getDistance(player)
    if distance > Config.radius then return end

    updateGUIStatus(true)
    task.spawn(function()
        if Config.blockDelay > 0 then
            task.wait(Config.blockDelay/1000)
        end

        if not UserInputService:GetFocusedTextBox() then
            VirtualUser:Button2Down(Vector2.new(0, 0), workspace.CurrentCamera.CFrame)
            animTrack.Stopped:Wait()
            VirtualUser:Button2Up(Vector2.new(0, 0), workspace.CurrentCamera.CFrame)
        end
        
        updateGUIStatus(false)
    end)
end

local function initializePlayerTracking(player)
    local function onCharacterAdded(character)
        local humanoid = character:WaitForChild("Humanoid")
        local animator = humanoid:WaitForChild("Animator")
        
        animator.AnimationPlayed:Connect(function(animTrack)
            handleAnimation(player, animTrack)
        end)
    end
    
    if player.Character then
        onCharacterAdded(player.Character)
    end
    player.CharacterAdded:Connect(onCharacterAdded)
end

local function updateBlockToggleButton(toggleButton)
    if Config.isEnabled then
        toggleButton.BackgroundColor3 = Color3.fromRGB(0, 170, 0)
        toggleButton.Text = "Enabled"
        GUI.statusLabel.Text = "Status: Active"
        GUI.statusLabel.TextColor3 = Color3.fromRGB(0, 255, 0)
        if Config.sphereVisible then
            GUI.visualSphere.Transparency = 0.8
        end
    else
        toggleButton.BackgroundColor3 = Color3.fromRGB(170, 0, 0)
        toggleButton.Text = "Disabled"
        GUI.statusLabel.Text = "Status: Inactive"
        GUI.statusLabel.TextColor3 = Color3.fromRGB(255, 0, 0)
        GUI.visualSphere.Transparency = 1
    end
end

local function createGUI()
    local screenGui = Instance.new("ScreenGui")
    screenGui.Name = "AutoBlockerGUI"
    screenGui.Parent = LOCAL_PLAYER:WaitForChild("PlayerGui")

    local mainFrame = Instance.new("Frame")
    mainFrame.Name = "MainFrame"
    mainFrame.Size = UDim2.new(0, 200, 0, 290)
    mainFrame.Position = UDim2.new(0.8, 0, 0.5, -60)
    mainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
    mainFrame.BorderSizePixel = 0
    mainFrame.Parent = screenGui
    GUI.mainFrame = mainFrame

    local function addCorners(instance, radius)
        local corner = Instance.new("UICorner")
        corner.CornerRadius = UDim.new(0, radius)
        corner.Parent = instance
    end

    local dragging, dragStart, startPos
    
    mainFrame.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 then
            dragging = true
            dragStart = input.Position
            startPos = mainFrame.Position
            input.Changed:Connect(function()
                if input.UserInputState == Enum.UserInputState.End then
                    dragging = false
                end
            end)
        end
    end)

    UserInputService.InputChanged:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseMovement and dragging then
            local delta = input.Position - dragStart
            mainFrame.Position = UDim2.new(
                startPos.X.Scale, startPos.X.Offset + delta.X,
                startPos.Y.Scale, startPos.Y.Offset + delta.Y
            )
        end
    end)

    local titleLabel = Instance.new("TextLabel")
    titleLabel.Name = "TitleLabel"
    titleLabel.Size = UDim2.new(1, 0, 0, 30)
    titleLabel.Position = UDim2.new(0, 0, 0, 0)
    titleLabel.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
    titleLabel.BorderSizePixel = 0
    titleLabel.Text = "Auto Blocker"
    titleLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
    titleLabel.Font = Enum.Font.GothamBold
    titleLabel.TextSize = 14
    titleLabel.Parent = mainFrame

    GUI.statusLabel = Instance.new("TextLabel")
    GUI.statusLabel.Name = "StatusLabel"
    GUI.statusLabel.Size = UDim2.new(1, 0, 0, 20)
    GUI.statusLabel.Position = UDim2.new(0, 0, 0, 35)
    GUI.statusLabel.BackgroundTransparency = 1
    GUI.statusLabel.Text = "Status: Active"
    GUI.statusLabel.TextColor3 = Color3.fromRGB(0, 255, 0)
    GUI.statusLabel.Font = Enum.Font.Gotham
    GUI.statusLabel.TextSize = 12
    GUI.statusLabel.Parent = mainFrame

    GUI.rangeLabel = Instance.new("TextLabel")
    GUI.rangeLabel.Name = "RangeLabel"
    GUI.rangeLabel.Size = UDim2.new(1, 0, 0, 20)
    GUI.rangeLabel.Position = UDim2.new(0, 0, 0, 55)
    GUI.rangeLabel.BackgroundTransparency = 1
    GUI.rangeLabel.Text = string.format("Range: %.1f studs", Config.radius)
    GUI.rangeLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
    GUI.rangeLabel.Font = Enum.Font.Gotham
    GUI.rangeLabel.TextSize = 12
    GUI.rangeLabel.Parent = mainFrame

    local sliderFrame = Instance.new("Frame")
    sliderFrame.Name = "SliderFrame"
    sliderFrame.Size = UDim2.new(0.8, 0, 0, 4)
    sliderFrame.Position = UDim2.new(0.1, 0, 0, 80)
    sliderFrame.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
    sliderFrame.BorderSizePixel = 0
    sliderFrame.Parent = mainFrame

    local sliderButton = Instance.new("TextButton")
    sliderButton.Name = "SliderButton"
    sliderButton.Size = UDim2.new(0, 16, 0, 16)
    sliderButton.Position = UDim2.new(0, -8, 0, -6)
    sliderButton.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
    sliderButton.BorderSizePixel = 0
    sliderButton.Text = ""
    sliderButton.Parent = sliderFrame

    GUI.valueLabel = Instance.new("TextLabel")
    GUI.valueLabel.Name = "ValueLabel"
    GUI.valueLabel.Size = UDim2.new(1, 0, 0, 20)
    GUI.valueLabel.Position = UDim2.new(0, 0, 0, 90)
    GUI.valueLabel.BackgroundTransparency = 1
    GUI.valueLabel.Text = string.format("Radius: %.1f studs", Config.radius)
    GUI.valueLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
    GUI.valueLabel.Font = Enum.Font.Gotham
    GUI.valueLabel.TextSize = 12
    GUI.valueLabel.Parent = mainFrame

    local delaySliderFrame = Instance.new("Frame")
    delaySliderFrame.Name = "DelaySliderFrame"
    delaySliderFrame.Size = UDim2.new(0.8, 0, 0, 4)
    delaySliderFrame.Position = UDim2.new(0.1, 0, 0, 120)
    delaySliderFrame.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
    delaySliderFrame.BorderSizePixel = 0
    delaySliderFrame.Parent = mainFrame

    local delaySliderButton = Instance.new("TextButton")
    delaySliderButton.Name = "DelaySliderButton"
    delaySliderButton.Size = UDim2.new(0, 16, 0, 16)
    delaySliderButton.Position = UDim2.new(0, -8, 0, -6)
    delaySliderButton.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
    delaySliderButton.BorderSizePixel = 0
    delaySliderButton.Text = ""
    delaySliderButton.Parent = delaySliderFrame

    GUI.delayLabel = Instance.new("TextLabel")
    GUI.delayLabel.Name = "DelayLabel"
    GUI.delayLabel.Size = UDim2.new(1, 0, 0, 20)
    GUI.delayLabel.Position = UDim2.new(0, 0, 0, 130)
    GUI.delayLabel.BackgroundTransparency = 1
    GUI.delayLabel.Text = string.format("Delay: %d ms", Config.blockDelay)
    GUI.delayLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
    GUI.delayLabel.Font = Enum.Font.Gotham
    GUI.delayLabel.TextSize = 12
    GUI.delayLabel.Parent = mainFrame

    local keybindButton = Instance.new("TextButton")
    keybindButton.Name = "KeybindButton"
    keybindButton.Size = UDim2.new(0.8, 0, 0, 25)
    keybindButton.Position = UDim2.new(0.1, 0, 0, 160)
    keybindButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
    keybindButton.BorderSizePixel = 0
    keybindButton.Text = "Toggle Key: " .. Config.toggleKey.Name
    keybindButton.TextColor3 = Color3.fromRGB(255, 255, 255)
    keybindButton.Font = Enum.Font.GothamSemibold
    keybindButton.TextSize = 14
    keybindButton.Parent = mainFrame

    local blockToggleKeybindButton = Instance.new("TextButton")
    blockToggleKeybindButton.Name = "BlockToggleKeybindButton"
    blockToggleKeybindButton.Size = UDim2.new(0.8, 0, 0, 25)
    blockToggleKeybindButton.Position = UDim2.new(0.1, 0, 0, 190)
    blockToggleKeybindButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
    blockToggleKeybindButton.BorderSizePixel = 0
    blockToggleKeybindButton.Text = "Block Key: " .. Config.blockToggleKey.Name
    blockToggleKeybindButton.TextColor3 = Color3.fromRGB(255, 255, 255)
    blockToggleKeybindButton.Font = Enum.Font.GothamSemibold
    blockToggleKeybindButton.TextSize = 14
    blockToggleKeybindButton.Parent = mainFrame

    local sphereToggleButton = Instance.new("TextButton")
    sphereToggleButton.Name = "SphereToggleButton"
    sphereToggleButton.Size = UDim2.new(0.8, 0, 0, 25)
    sphereToggleButton.Position = UDim2.new(0.1, 0, 0, 220)
    sphereToggleButton.BackgroundColor3 = Color3.fromRGB(0, 170, 170)
    sphereToggleButton.BorderSizePixel = 0
    sphereToggleButton.Text = "Sphere Visible"
    sphereToggleButton.TextColor3 = Color3.fromRGB(255, 255, 255)
    sphereToggleButton.Font = Enum.Font.GothamSemibold
    sphereToggleButton.TextSize = 14
    sphereToggleButton.Parent = mainFrame

    local toggleButton = Instance.new("TextButton")
    toggleButton.Name = "ToggleButton"
    toggleButton.Size = UDim2.new(0.8, 0, 0, 25)
    toggleButton.Position = UDim2.new(0.1, 0, 0, 250)
    toggleButton.BackgroundColor3 = Color3.fromRGB(0, 170, 0)
    toggleButton.BorderSizePixel = 0
    toggleButton.Text = "Enabled"
    toggleButton.TextColor3 = Color3.fromRGB(255, 255, 255)
    toggleButton.Font = Enum.Font.GothamSemibold
    toggleButton.TextSize = 14
    toggleButton.Parent = mainFrame

    addCorners(mainFrame, 6)
    addCorners(toggleButton, 4)
    addCorners(sphereToggleButton, 4)
    addCorners(sliderButton, 8)
    addCorners(delaySliderButton, 8)
    addCorners(keybindButton, 4)
    addCorners(blockToggleKeybindButton, 4)

    GUI.visualSphere = Instance.new("Part")
    GUI.visualSphere.Shape = Enum.PartType.Ball
    GUI.visualSphere.Size = Vector3.new(Config.radius * 2, Config.radius * 2, Config.radius * 2)
    GUI.visualSphere.Transparency = 0.8
    GUI.visualSphere.CanCollide = false
    GUI.visualSphere.Anchored = true
    GUI.visualSphere.Color = Color3.new(1, 1, 0)
    GUI.visualSphere.Parent = workspace

    local isDragging = false
    local isDelayDragging = false

    sliderButton.MouseButton1Down:Connect(function()
        isDragging = true
    end)

    delaySliderButton.MouseButton1Down:Connect(function()
        isDelayDragging = true
    end)

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

    UserInputService.InputChanged:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseMovement then
            if isDragging then
                local mousePos = UserInputService:GetMouseLocation()
                local sliderPos = sliderFrame.AbsolutePosition
                local sliderWidth = sliderFrame.AbsoluteSize.X
                local percentage = math.clamp((mousePos.X - sliderPos.X) / sliderWidth, 0, 1)
                sliderButton.Position = UDim2.new(percentage, -8, 0, -6)
                updateRadius(percentage)
            elseif isDelayDragging then
                local mousePos = UserInputService:GetMouseLocation()
                local sliderPos = delaySliderFrame.AbsolutePosition
                local sliderWidth = delaySliderFrame.AbsoluteSize.X
                local percentage = math.clamp((mousePos.X - sliderPos.X) / sliderWidth, 0, 1)
                delaySliderButton.Position = UDim2.new(percentage, -8, 0, -6)
                updateDelay(percentage)
            end
        end
    end)

    local function updateKeybindText()
        keybindButton.Text = "Toggle Key: " .. Config.toggleKey.Name
        blockToggleKeybindButton.Text = "Block Key: " .. Config.blockToggleKey.Name
    end

    local function handleKeybindChange(isBlockToggle)
        local button = isBlockToggle and blockToggleKeybindButton or keybindButton
        local originalText = button.Text
        button.Text = "Press any key..."
        
        local connection
        connection = UserInputService.InputBegan:Connect(function(input)
            if input.UserInputType == Enum.UserInputType.Keyboard then
                if isBlockToggle then
                    Config.blockToggleKey = input.KeyCode
                else
                    Config.toggleKey = input.KeyCode
                end
                updateKeybindText()
                connection:Disconnect()
            end
        end)
    end

    keybindButton.MouseButton1Click:Connect(function()
        handleKeybindChange(false)
    end)

    blockToggleKeybindButton.MouseButton1Click:Connect(function()
        handleKeybindChange(true)
    end)

    sphereToggleButton.MouseButton1Click:Connect(function()
        Config.sphereVisible = not Config.sphereVisible
        if Config.sphereVisible then
            sphereToggleButton.BackgroundColor3 = Color3.fromRGB(0, 170, 170)
            sphereToggleButton.Text = "Sphere Visible"
            if Config.isEnabled then
                GUI.visualSphere.Transparency = 0.8
            end
        else
            sphereToggleButton.BackgroundColor3 = Color3.fromRGB(170, 85, 85)
            sphereToggleButton.Text = "Sphere Hidden"
            GUI.visualSphere.Transparency = 1
        end
    end)

    toggleButton.MouseButton1Click:Connect(function()
        Config.isEnabled = not Config.isEnabled
        updateBlockToggleButton(toggleButton)
    end)
end

local function initialize()
    createGUI()
    
    UserInputService.InputBegan:Connect(function(input, gameProcessed)
        if UserInputService:GetFocusedTextBox() then return end
        
        if input.UserInputType == Enum.UserInputType.Keyboard then
            if input.KeyCode == Config.toggleKey then
                GUI.mainFrame.Visible = not GUI.mainFrame.Visible
            elseif input.KeyCode == Config.blockToggleKey then
                Config.isEnabled = not Config.isEnabled
                updateBlockToggleButton(GUI.mainFrame:FindFirstChild("ToggleButton"))
            end
        end
    end)
    
    RunService.Heartbeat:Connect(function()
        if not (Config.isEnabled and GUI.visualSphere) then return end
        
        local character = LOCAL_PLAYER.Character
        if not character then return end
        
        local rootPart = character:FindFirstChild("HumanoidRootPart")
        if rootPart then
            GUI.visualSphere.Position = rootPart.Position
        end
    end)
    
    for _, player in ipairs(Players:GetPlayers()) do
        initializePlayerTracking(player)
    end
    
    Players.PlayerAdded:Connect(initializePlayerTracking)
end

initialize()

Features & Information

🔒 OP Auto Block system for Karate 🥋 Instantly blocks enemy hits with zero delay ⚡ Smooth & fast response time 🔧 Easy to toggle on/off anytime 🎯 Works consistently during battles 🛡️ Gives you max defense power

Community Comments (4)

ScriptRequesterScriptRequesterOct 2, 2025

Don't work on moblie it seems

bubbabubbaOct 2, 2025

doesn't really block all the time/ it's a 50/50

jjjjjjjjjjhjjjjjjjjjjhOct 3, 2025

Kicks aren't getting blocked. Someone fix this.

skidsenseskidsenseJan 5, 2026

using my script :3

More Scripts for ⛩️ Karate!