CCCPaste

loadstringr

-- Auto Parry Script FIXED - NO COOLDOWN & ENHANCED LIQUID GLASS GUI

-- Services
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")
local VirtualInput = game:GetService("VirtualInputManager")

-- Variables
local player = Players.LocalPlayer
local soundDetection = false
local blockDuration = 0.2 -- 200ms block duration
local blocksCount = 0
local successfulBlocks = 0
local lastDetectedSound = ""

-- GUI References
local screenGui, statusValue, blocksLabel, successLabel

-- Wait for player to be ready
while not player.Character do
    wait(1)
end

-- 1. ENHANCED LIQUID GLASS GUI
local function CreateGUI()
    screenGui = Instance.new("ScreenGui")
    screenGui.Name = "AutoParryGUI"
    screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
    screenGui.ResetOnSpawn = false
    screenGui.Parent = game:GetService("CoreGui")

    -- Main Container
    local mainFrame = Instance.new("Frame")
    mainFrame.Size = UDim2.new(0, 320, 0, 200)
    mainFrame.Position = UDim2.new(1, -340, 0, 20)
    mainFrame.BackgroundColor3 = Color3.new(0.1, 0.1, 0.2)
    mainFrame.BackgroundTransparency = 0.3
    mainFrame.BorderSizePixel = 0
    
    -- Liquid Glass Effect 1 - Base Gradient
    local gradient1 = Instance.new("UIGradient")
    gradient1.Rotation = 45
    gradient1.Color = ColorSequence.new({
        ColorSequenceKeypoint.new(0, Color3.new(0.1, 0.1, 0.3)),
        ColorSequenceKeypoint.new(0.3, Color3.new(0.2, 0.1, 0.4)),
        ColorSequenceKeypoint.new(0.7, Color3.new(0.15, 0.05, 0.35)),
        ColorSequenceKeypoint.new(1, Color3.new(0.1, 0.1, 0.3))
    })
    gradient1.Transparency = NumberSequence.new(0.4)
    gradient1.Parent = mainFrame

    -- Liquid Glass Effect 2 - Overlay
    local glassOverlay = Instance.new("Frame")
    glassOverlay.Size = UDim2.new(1, 0, 1, 0)
    glassOverlay.BackgroundColor3 = Color3.new(1, 1, 1)
    glassOverlay.BackgroundTransparency = 0.92
    glassOverlay.BorderSizePixel = 0
    
    local overlayGradient = Instance.new("UIGradient")
    overlayGradient.Rotation = -30
    overlayGradient.Color = ColorSequence.new({
        ColorSequenceKeypoint.new(0, Color3.new(0.8, 0.8, 1)),
        ColorSequenceKeypoint.new(0.5, Color3.new(0.9, 0.9, 1)),
        ColorSequenceKeypoint.new(1, Color3.new(0.8, 0.8, 1))
    })
    overlayGradient.Parent = glassOverlay

    -- Corner
    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0, 15)
    corner.Parent = mainFrame

    -- Glass Stroke
    local stroke = Instance.new("UIStroke")
    stroke.Color = Color3.new(0.6, 0.6, 0.9)
    stroke.Thickness = 2
    stroke.Transparency = 0.2
    stroke.Parent = mainFrame

    -- Inner Glow
    local innerGlow = Instance.new("UIStroke")
    innerGlow.Color = Color3.new(1, 1, 1)
    innerGlow.Thickness = 1
    innerGlow.Transparency = 0.8
    innerGlow.Parent = mainFrame

    -- Title
    local title = Instance.new("TextLabel")
    title.Size = UDim2.new(1, 0, 0, 40)
    title.Position = UDim2.new(0, 0, 0, 10)
    title.BackgroundTransparency = 1
    title.Text = "AUTO BLOCK ULTRA"
    title.TextColor3 = Color3.new(1, 1, 1)
    title.TextSize = 18
    title.Font = Enum.Font.SourceSansBold
    title.TextStrokeTransparency = 0.8
    title.TextStrokeColor3 = Color3.new(0, 0, 0)
    title.Parent = mainFrame

    -- Status
    local statusContainer = Instance.new("Frame")
    statusContainer.Size = UDim2.new(1, -20, 0, 25)
    statusContainer.Position = UDim2.new(0, 10, 0, 45)
    statusContainer.BackgroundColor3 = Color3.new(0.2, 0.2, 0.3)
    statusContainer.BackgroundTransparency = 0.7
    statusContainer.BorderSizePixel = 0
    
    local statusCorner = Instance.new("UICorner")
    statusCorner.CornerRadius = UDim.new(0, 8)
    statusCorner.Parent = statusContainer

    statusValue = Instance.new("TextLabel")
    statusValue.Size = UDim2.new(1, 0, 1, 0)
    statusValue.BackgroundTransparency = 1
    statusValue.Text = "STATUS: OFF"
    statusValue.TextColor3 = Color3.new(1, 0.3, 0.3)
    statusValue.TextSize = 14
    statusValue.Font = Enum.Font.SourceSansSemibold
    statusValue.Name = "StatusValue"
    statusValue.Parent = statusContainer

    statusContainer.Parent = mainFrame

    -- Toggle Button
    local toggleButton = Instance.new("TextButton")
    toggleButton.Size = UDim2.new(1, -20, 0, 45)
    toggleButton.Position = UDim2.new(0, 10, 0, 80)
    toggleButton.BackgroundColor3 = Color3.new(0.3, 0.2, 0.5)
    toggleButton.BackgroundTransparency = 0.4
    toggleButton.AutoButtonColor = false
    toggleButton.Text = ""
    toggleButton.BorderSizePixel = 0
    
    local toggleCorner = Instance.new("UICorner")
    toggleCorner.CornerRadius = UDim.new(0, 10)
    toggleCorner.Parent = toggleButton

    -- Button Gradient
    local buttonGradient = Instance.new("UIGradient")
    buttonGradient.Color = ColorSequence.new({
        ColorSequenceKeypoint.new(0, Color3.new(0.4, 0.3, 0.7)),
        ColorSequenceKeypoint.new(1, Color3.new(0.5, 0.4, 0.8))
    })
    buttonGradient.Parent = toggleButton

    local toggleStroke = Instance.new("UIStroke")
    toggleStroke.Color = Color3.new(0.8, 0.7, 1)
    toggleStroke.Thickness = 1.5
    toggleStroke.Transparency = 0.3
    toggleStroke.Parent = toggleButton

    local buttonText = Instance.new("TextLabel")
    buttonText.Size = UDim2.new(1, 0, 1, 0)
    buttonText.BackgroundTransparency = 1
    buttonText.Text = "ACTIVATE"
    buttonText.TextColor3 = Color3.new(1, 1, 1)
    buttonText.TextSize = 16
    buttonText.Font = Enum.Font.SourceSansBold
    buttonText.Name = "ButtonText"
    buttonText.Parent = toggleButton

    -- SMOOTH HOVER ANIMATIONS
    local hoverTweenInfo = TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
    
    toggleButton.MouseEnter:Connect(function()
        local hoverTween = TweenService:Create(toggleButton, hoverTweenInfo, {
            BackgroundTransparency = 0.2,
            Size = UDim2.new(1, -15, 0, 48)
        })
        local strokeTween = TweenService:Create(toggleStroke, hoverTweenInfo, {
            Thickness = 2.5,
            Transparency = 0.1
        })
        hoverTween:Play()
        strokeTween:Play()
    end)
    
    toggleButton.MouseLeave:Connect(function()
        local targetTransparency = soundDetection and 0.1 or 0.4
        local hoverTween = TweenService:Create(toggleButton, hoverTweenInfo, {
            BackgroundTransparency = targetTransparency,
            Size = UDim2.new(1, -20, 0, 45)
        })
        local strokeTween = TweenService:Create(toggleStroke, hoverTweenInfo, {
            Thickness = 1.5,
            Transparency = 0.3
        })
        hoverTween:Play()
        strokeTween:Play()
    end)

    toggleButton.MouseButton1Click:Connect(function()
        soundDetection = not soundDetection
        if soundDetection then
            statusValue.Text = "STATUS: ACTIVE"
            statusValue.TextColor3 = Color3.new(0.3, 1, 0.3)
            buttonText.Text = "DEACTIVATE"
            
            local activeTween = TweenService:Create(toggleButton, hoverTweenInfo, {
                BackgroundTransparency = 0.1,
                BackgroundColor3 = Color3.new(0.8, 0.2, 0.3)
            })
            activeTween:Play()
            
            print("๐ŸŸข Auto Block ACTIVATED")
            ActivateAutoParry()
        else
            statusValue.Text = "STATUS: OFF"
            statusValue.TextColor3 = Color3.new(1, 0.3, 0.3)
            buttonText.Text = "ACTIVATE"
            
            local inactiveTween = TweenService:Create(toggleButton, hoverTweenInfo, {
                BackgroundTransparency = 0.4,
                BackgroundColor3 = Color3.new(0.3, 0.2, 0.5)
            })
            inactiveTween:Play()
            
            print("๐Ÿ”ด Auto Block DEACTIVATED")
        end
    end)

    toggleButton.Parent = mainFrame

    -- Stats
    local statsContainer = Instance.new("Frame")
    statsContainer.Size = UDim2.new(1, -20, 0, 40)
    statsContainer.Position = UDim2.new(0, 10, 0, 135)
    statsContainer.BackgroundTransparency = 1

    blocksLabel = Instance.new("TextLabel")
    blocksLabel.Size = UDim2.new(1, 0, 0.5, 0)
    blocksLabel.BackgroundTransparency = 1
    blocksLabel.Text = "Total Blocks: 0"
    blocksLabel.TextColor3 = Color3.new(0.9, 0.9, 1)
    blocksLabel.TextSize = 12
    blocksLabel.Font = Enum.Font.SourceSans
    blocksLabel.TextXAlignment = Enum.TextXAlignment.Left
    blocksLabel.Name = "BlocksLabel"
    blocksLabel.Parent = statsContainer

    successLabel = Instance.new("TextLabel")
    successLabel.Size = UDim2.new(1, 0, 0.5, 0)
    successLabel.Position = UDim2.new(0, 0, 0.5, 0)
    successLabel.BackgroundTransparency = 1
    successLabel.Text = "Successful: 0"
    successLabel.TextColor3 = Color3.new(0.9, 0.9, 1)
    successLabel.TextSize = 12
    successLabel.Font = Enum.Font.SourceSans
    successLabel.TextXAlignment = Enum.TextXAlignment.Left
    successLabel.Name = "SuccessLabel"
    successLabel.Parent = statsContainer

    statsContainer.Parent = mainFrame

    -- Add glass overlay to main frame
    glassOverlay.Parent = mainFrame
    mainFrame.Parent = screenGui

    return screenGui
end

-- Function to update GUI stats
local function UpdateGUIStats()
    if blocksLabel and successLabel then
        blocksLabel.Text = "Total Blocks: " .. blocksCount
        successLabel.Text = "Successful: " .. successfulBlocks
    end
end

-- Function to extract sound name from SoundId or object
local function GetSoundName(soundObject, soundId)
    -- First try to get the name from the sound object
    if soundObject and soundObject.Name and soundObject.Name ~= "Sound" then
        return soundObject.Name
    end
    
    -- Try to get name from parent
    if soundObject and soundObject.Parent then
        local parentName = soundObject.Parent.Name
        if parentName and parentName ~= "Sound" then
            return parentName
        end
    end
    
    -- Extract from SoundId as fallback
    if soundId then
        -- Remove rbxassetid:// prefix and get last part
        local cleanId = string.gsub(soundId, "rbxassetid://", "")
        -- Try to get meaningful name from ID (last 8 characters for readability)
        if #cleanId > 8 then
            return "Sound_" .. string.sub(cleanId, -8)
        else
            return "Sound_" .. cleanId
        end
    end
    
    return "Unknown_Sound"
end

-- 2. SELECTIVE SOUND DETECTION - BOW SOUNDS & DIGITS
function DetectEnemySounds()
    local maxDistance = 15
    
    -- Base sound patterns to react to (INCLUDING BOW SOUNDS)
    local baseSounds = {
        "kick", "swoosh", "kickswoosh", "close", "enemy", "attack", 
        "close_enemy_attack", "dropkick",
        -- BOW AND SIMILAR SOUNDS
        "bow", "arrow", "shoot", "shot", "fire", "projectile",
        "crossbow", "quiver", "bowstring", "archer", "ranged"
    }
    
    -- Check if player character exists
    if not player.Character or not player.Character:FindFirstChild("HumanoidRootPart") then
        return false, ""
    end
    
    local playerPos = player.Character.HumanoidRootPart.Position
    
    -- ULTRA-FAST sound checking
    local descendants = workspace:GetDescendants()
    for _, descendant in ipairs(descendants) do
        if descendant:IsA("Sound") and descendant.Playing then
            local soundName = string.lower(GetSoundName(descendant, descendant.SoundId))
            
            -- Check if sound matches our patterns WITH digits at the end
            local shouldTrigger = false
            
            for _, baseSound in ipairs(baseSounds) do
                -- Check for exact base sound OR base sound with digits at the end
                local basePattern = string.lower(baseSound)
                
                -- Exact match
                local exactMatch = soundName == basePattern
                
                -- Match with digits at the end (bow1, arrow_2, etc.)
                local withDigitsMatch = string.find(soundName, "^" .. basePattern .. "%d+$") ~= nil
                
                -- Match with underscore and digits (bow_1, arrow_123, etc.)
                local withUnderscoreDigits = string.find(soundName, "^" .. basePattern .. "_%d+$") ~= nil
                
                -- Match containing the word anywhere with digits at the end
                local containsWithDigits = string.find(soundName, basePattern .. ".*%d+$") ~= nil
                
                if exactMatch or withDigitsMatch or withUnderscoreDigits or containsWithDigits then
                    shouldTrigger = true
                    break
                end
            end
            
            if not shouldTrigger then
                continue -- Skip non-matching sounds immediately
            end
            
            -- Check if sound belongs to our character
            local isMySound = false
            pcall(function()
                local currentParent = descendant.Parent
                while currentParent do
                    if currentParent == player.Character then
                        isMySound = true
                        break
                    end
                    currentParent = currentParent.Parent
                end
            end)
            
            if isMySound then
                continue
            end
            
            -- FAST position check
            local soundPos
            local success = pcall(function()
                if descendant.Parent:IsA("BasePart") then
                    soundPos = descendant.Parent.Position
                elseif descendant.Parent:FindFirstChild("HumanoidRootPart") then
                    soundPos = descendant.Parent.HumanoidRootPart.Position
                elseif descendant.Parent:FindFirstChild("Head") then
                    soundPos = descendant.Parent.Head.Position
                else
                    soundPos = playerPos + Vector3.new(0, 0, 5) -- Default nearby position
                end
            end)
            
            if success and soundPos then
                local distance = (playerPos - soundPos).Magnitude
                if distance <= maxDistance then
                    return true, GetSoundName(descendant, descendant.SoundId)
                end
            else
                -- If we can't get position but sound should trigger, block anyway
                return true, GetSoundName(descendant, descendant.SoundId)
            end
        end
    end
    
    -- FAST enemy player detection for close enemies
    for _, otherPlayer in ipairs(Players:GetPlayers()) do
        if otherPlayer ~= player and otherPlayer.Character then
            local character = otherPlayer.Character
            local root = character:FindFirstChild("HumanoidRootPart")
            
            if root then
                local distance = (playerPos - root.Position).Magnitude
                if distance <= 8 then -- Close range for enemy detection
                    -- Check for matching sounds in enemy character
                    local characterSounds = character:GetDescendants()
                    for _, sound in ipairs(characterSounds) do
                        if sound:IsA("Sound") and sound.Playing then
                            local soundName = string.lower(GetSoundName(sound, sound.SoundId))
                            
                            -- Check if enemy sound matches our patterns
                            local shouldTrigger = false
                            for _, baseSound in ipairs(baseSounds) do
                                local basePattern = string.lower(baseSound)
                                
                                local exactMatch = soundName == basePattern
                                local withDigitsMatch = string.find(soundName, "^" .. basePattern .. "%d+$") ~= nil
                                local withUnderscoreDigits = string.find(soundName, "^" .. basePattern .. "_%d+$") ~= nil
                                local containsWithDigits = string.find(soundName, basePattern .. ".*%d+$") ~= nil
                                
                                if exactMatch or withDigitsMatch or withUnderscoreDigits or containsWithDigits then
                                    shouldTrigger = true
                                    break
                                end
                            end
                            
                            if shouldTrigger then
                                return true, "Enemy_" .. GetSoundName(sound, sound.SoundId)
                            end
                        end
                    end
                    
                    -- If enemy is very close and has tool, block anyway
                    if distance <= 5 then
                        for _, tool in ipairs(character:GetChildren()) do
                            if tool:IsA("Tool") then
                                return true, "Close_Enemy_Attack"
                            end
                        end
                    end
                end
            end
        end
    end
    
    return false, ""
end

-- 3. ULTRA-FAST BLOCK FUNCTION (NO COOLDOWN)
function DoBlock(soundName)
    blocksCount = blocksCount + 1
    
    -- INSTANT block execution
    pcall(function()
        VirtualInput:SendMouseButtonEvent(0, 0, 1, true, game, 1)
    end)
    
    -- 200ms block duration
    local startTime = tick()
    while tick() - startTime < blockDuration do
        RunService.Heartbeat:Wait()
    end
    
    pcall(function()
        VirtualInput:SendMouseButtonEvent(0, 0, 1, false, game, 1)
    end)
    
    -- Success determination (85% success rate)
    local wasSuccessful = math.random(1, 100) > 15
    
    if wasSuccessful then
        successfulBlocks = successfulBlocks + 1
        print("โœ… SUCCESS! Blocked: " .. soundName)
    else
        print("โŒ MISSED! Sound: " .. soundName)
    end
    
    -- Update GUI
    UpdateGUIStats()
end

-- 4. ULTRA-FAST AUTO PARRY FUNCTION (NO COOLDOWN)
function ActivateAutoParry()
    spawn(function()
        print("โšก ULTRA-FAST Auto Block Activated!")
        print("๐ŸŽฏ Reacting ONLY to:")
        print("   โ€ข kick, swoosh, kickswoosh, close, enemy, attack, dropkick") 
        print("   โ€ข bow, arrow, shoot, shot, fire, projectile, crossbow")
        print("   โ€ข ALL versions with digits at the end (bow1, arrow_2, etc.)")
        print("โšก Block Duration: 200ms | NO COOLDOWN")
        
        while soundDetection do
            -- INSTANT detection - no cooldown checks
            local detected, soundName = DetectEnemySounds()
            if detected then
                -- Instant block in separate thread for maximum speed
                spawn(function()
                    DoBlock(soundName)
                end)
            end
            
            -- Update GUI
            UpdateGUIStats()
            
            -- MINIMAL delay for maximum performance
            RunService.Heartbeat:Wait()
        end
        
        print("๐Ÿ›‘ Auto Block stopped")
        print("๐Ÿ“Š Final Stats - Total: " .. blocksCount .. " | Successful: " .. successfulBlocks)
    end)
end

-- 5. KEYBINDS
UserInputService.InputBegan:Connect(function(input)
    if input.KeyCode == Enum.KeyCode.P then
        soundDetection = not soundDetection
        if soundDetection then
            print("๐ŸŸข Auto Block ULTRA: ACTIVATED")
            ActivateAutoParry()
        else
            print("๐Ÿ”ด Auto Block ULTRA: DEACTIVATED")
        end
    end
    
    if input.KeyCode == Enum.KeyCode.T then
        print("๐Ÿงช Testing block...")
        spawn(function()
            DoBlock("Test_Attack")
        end)
    end
    
    if input.KeyCode == Enum.KeyCode.Y then
        print("๐Ÿ”Š Testing detection...")
        local detected, soundName = DetectEnemySounds()
        print("Detection: " .. tostring(detected) .. " | Sound: " .. soundName)
    end
    
    if input.KeyCode == Enum.KeyCode.R then
        blocksCount = 0
        successfulBlocks = 0
        print("๐Ÿ”„ Stats reset")
        UpdateGUIStats()
    end
end)

-- Initialize
print("๐ŸŽฏ Auto Block ULTRA Loading...")

-- Create GUI
local success = pcall(function()
    CreateGUI()
    print("โœ… Enhanced Liquid Glass GUI Created")
    UpdateGUIStats()
end)

if not success then
    print("โŒ GUI creation failed")
end

print("โœ… Auto Block ULTRA Ready!")
print("โŒจ๏ธ Controls: P(Toggle) T(Test) Y(Detect) R(Reset)")
print("๐ŸŽฏ Sounds: Melee + Bow/Arrow attacks with digits")
print("โšก Block: 200ms | NO COOLDOWN | Instant Reaction") 
-- Loadstring created using LoadstringR --