local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))() local workspace = game:GetService("Workspace") local players = game:GetService("Players") local localPlayer = players.LocalPlayer local UserInputService = game:GetService("UserInputService") local replicatedStorage = game:GetService("ReplicatedStorage") local heartbeatConnection local Window = Rayfield:CreateWindow({ Name = "Blade Ball", LoadingTitle = "Baconking", LoadingSubtitle = "by baconking", ConfigurationSaving = { Enabled = false, FolderName = "Inferno Scripts", FileName = "Inferno Scripts" }, Discord = { Enabled = true, Invite = "hNX8VxcjMF", RememberJoins = true }, KeySystem = false, KeySettings = { Title = "Inferno Scripts", Subtitle = "Key System", Note = "Join the discord (discord.gg/hNX8VxcjMF)", FileName = "InfernoKey", SaveKey = true, GrabKeyFromSite = false, Key = "Hello" } }) local AutoParry = Window:CreateTab("Auto Parry", 13014537525) local function startAutoParry() local player = game.Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local replicatedStorage = game:GetService("ReplicatedStorage") local runService = game:GetService("RunService") local parryButtonPress = replicatedStorage.Remotes.ParryButtonPress local ballsFolder = workspace:WaitForChild("Balls") print("Script successfully ran.") local function onCharacterAdded(newCharacter) character = newCharacter end player.CharacterAdded:Connect(onCharacterAdded) local focusedBall = nil local function chooseNewFocusedBall() local balls = ballsFolder:GetChildren() focusedBall = nil for _, ball in ipairs(balls) do if ball:GetAttribute("realBall") == true then focusedBall = ball break end end end chooseNewFocusedBall() local function timeUntilImpact(ballVelocity, distanceToPlayer, playerVelocity) local directionToPlayer = (character.HumanoidRootPart.Position - focusedBall.Position).Unit local velocityTowardsPlayer = ballVelocity:Dot(directionToPlayer) - playerVelocity:Dot(directionToPlayer) if velocityTowardsPlayer <= 0 then return math.huge end local distanceToBeCovered = distanceToPlayer - 20 return distanceToBeCovered / velocityTowardsPlayer end local BASE_THRESHOLD = 0.15 local VELOCITY_SCALING_FACTOR = 0.002 local function getDynamicThreshold(ballVelocityMagnitude) local adjustedThreshold = BASE_THRESHOLD - (ballVelocityMagnitude * VELOCITY_SCALING_FACTOR) return math.max(0.12, adjustedThreshold) end local function checkBallDistance() if not character:FindFirstChild("Highlight") then return end local charPos = character.PrimaryPart.Position local charVel = character.PrimaryPart.Velocity if focusedBall and not focusedBall.Parent then chooseNewFocusedBall() end if not focusedBall then return end local ball = focusedBall local distanceToPlayer = (ball.Position - charPos).Magnitude if distanceToPlayer < 10 then parryButtonPress:Fire() return end local timeToImpact = timeUntilImpact(ball.Velocity, distanceToPlayer, charVel) local dynamicThreshold = getDynamicThreshold(ball.Velocity.Magnitude) if timeToImpact < dynamicThreshold then parryButtonPress:Fire() end end heartbeatConnection = game:GetService("RunService").Heartbeat:Connect(function() checkBallDistance() end) end local function stopAutoParry() if heartbeatConnection then heartbeatConnection:Disconnect() heartbeatConnection = nil end end local AutoParryToggle = AutoParry:CreateToggle({ Name = "Auto Parry", CurrentValue = false, Flag = "AutoParryFlag", Callback = function(value) if Value then startAutoParry() else stopAutoParry() end end, })