local Players = game:GetService("Players") local Workspace = game:GetService("Workspace") local VirtualInputManager = game:GetService("VirtualInputManager") local Debris = game:GetService("Debris") local LocalPlayer = Players.LocalPlayer local Character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait() local HumanoidRootPart = Character:WaitForChild("HumanoidRootPart") local PARRY_DISTANCE = 25 -- How close an attack has to be to trigger a parry -- Function to perform the parry action local function parry() -- Simulate holding and releasing the right mouse button (Block key) VirtualInputManager:SendMouseButtonEvent(0, 0, 1, true, game, 1) task.wait(0.05) -- Hold for a very short duration VirtualInputManager:SendMouseButtonEvent(0, 0, 1, false, game, 1) end -- The core of the script: listen for new attack hitboxes being added to the workspace Workspace.ChildAdded:Connect(function(child) -- Check if the new object is an attack hitbox. -- Game developers often name these things with specific keywords like "Hitbox", "Hit", "Slash", etc. -- We also check if it has a valuable attribute like "Damage". if child:IsA("Part") and (child.Name:lower():find("hitbox") or child.Name:lower():find("hit") or child.Name:lower():find("slash") or child:GetAttribute("Damage")) then -- Check if the hitbox belongs to another player local creator = child:GetAttribute("Creator") if creator and creator ~= LocalPlayer then -- Check if the hitbox is close enough to us local distance = (HumanoidRootPart.Position - child.Position).Magnitude if distance <= PARRY_DISTANCE then -- If all conditions are met, parry immediately parry() end end end end) print("Working Auto Parry script loaded. Listening for attack hitboxes.")