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)