-- 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 --