local players = game:GetService("Players") local plr = players.LocalPlayer local cd = false local Settings = { Autoparry = { Toggle = true, Range = 25, Delay = 0,Fov = 180, Facing = false,Dodgerange = 3,Aimhelper = false,},ESP = { Toggle = false, Config = {} }, Tpaura = {Toggle = false,}, } local anims = { --saitama ["rbxassetid://10469493270"] = { [1] = 0, [2] = 0.30 }, ["rbxassetid://10469630950"] = { [1] = 0, [2] = 0.30 }, ["rbxassetid://10469639222"] = { [1] = 0, [2] = 0.30 }, ["rbxassetid://10469643643"] = { [1] = 0, [2] = 0.30 }, --hunter ["rbxassetid://13532562418"] = { [1] = 0, [2] = 0.30 }, ["rbxassetid://13532600125"] = { [1] = 0, [2] = 0.30 }, ["rbxassetid://13532604085"] = { [1] = 0, [2] = 0.30 }, ["rbxassetid://13294471966"] = { [1] = 0, [2] = 0.30 }, --cyborg ["rbxassetid://13491635433"] = { [1] = 0, [2] = 0.30 }, ["rbxassetid://13296577783"] = { [1] = 0, [2] = 0.30 }, ["rbxassetid://13295919399"] = { [1] = 0, [2] = 0.30 }, ["rbxassetid://13295936866"] = { [1] = 0, [2] = 0.30 }, --ninja ["rbxassetid://13370310513"] = { [1] = 0, [2] = 0.30 }, ["rbxassetid://13390230973"] = { [1] = 0, [2] = 0.30 }, ["rbxassetid://13378751717"] = { [1] = 0, [2] = 0.30 }, ["rbxassetid://13378708199"] = { [1] = 0, [2] = 0.30 }, abilities = { } } local dodges = { ["rbxassetid://10479335397"] = { [1] = 0, [2] = 0.50 }, ["rbxassetid://13380255751"] = { [1] = 0, [2] = 0.50 } } local barrages = { ["rbxassetid://10466974800"] = { [1] = 0.20, [2] = 1.80 }, ["rbxassetid://12534735382"] = { [1] = 0.20, [2] = 1.80 } } local abilities = { ["rbxassetid://10468665991"] = { [1] = 0.15, [2] = 0.60 }, ["rbxassetid://13376869471"] = { [1] = 0.05, [2] = 1 }, ["rbxassetid://13376962659"] = { [1] = 0, [2] = 2 }, ["rbxassetid://12296882427"] = { [1] = 0.05, [2] = 1 },--sonic ["rbxassetid://13309500827"] = { [1] = 0.05, [2] = 1 },--sonic ["rbxassetid://13365849295"] = { [1] = 0, [2] = 1 },--sonic ["rbxassetid://13377153603"] = { [1] = 0, [2] = 1 },--soni ["rbxassetid://12509505723"] = { [1] = 0.09, [2] = 2 }, -- dash for cyborg lmao } local closestplr, anim, plrDirection, unit, value,dodge function closest() closestplr = {} for i, v in next, players:GetChildren() do -- we want to use GetChildren instead of GetPlayers because we love children (written by mac) if v.Character and plr.Character:WaitForChild("HumanoidRootPart", 1) and v ~= plr and v.Character ~= plr.Character and v.Character:FindFirstChild("HumanoidRootPart") and (v.Character.HumanoidRootPart.Position - plr.Character.HumanoidRootPart.Position).Magnitude < Settings.Autoparry.Range then table.insert(closestplr, v) end end return closestplr end function attackchecker() for i,Anim in next, plr.Character.Humanoid.Animator:GetPlayingAnimationTracks() do z = anims[Anim.Animation.AnimationId] q = dodges[Anim.Animation.AnimationId] j = abilities[Anim.Animation.AnimationId] k = barrages[Anim.Animation.AnimationId] if z or q or j or k then return true else return false end end end function isfacing(object) if Settings.Autoparry.Toggle then if Settings.Autoparry.Facing then plrDirection = plr.Character.Head.CFrame.LookVector unit = (object.Head.CFrame.p - plr.Character.Head.CFrame.p).Unit value = math.pow((plrDirection - unit).Magnitude / 2, 2) if value >= Settings.Autoparry.Fov / 360 then return false else return true end else return true end end end function allowed(enemy) if not plr.Character:FindFirstChild("M1ing") and not attackchecker() and isfacing(enemy) then return true end end local durations = { ["anim" ] = 0.3, ["dodge" ] = 0.9, ["barrage" ] = 0.9, ["ability" ] = 0.6, } function def(action) if cd then return end task.wait(Settings.Autoparry.Delay) print("parry attempt".."|"..action) cd = true plr.Character.Communicate:FireServer({["Goal"] = "KeyPress", ["Key"] = Enum.KeyCode.F}) task.wait(durations[action]) plr.Character.Communicate:FireServer({["Goal"] = "KeyRelease",["Key"] = Enum.KeyCode.F}) cd = false end function barragechecker(enemy) if enemy:FindFirstChild("BarrageBind") then return true else return false end end function lookat(enemy) if Settings.Autoparry.Aimhelper then plr.Character.HumanoidRootPart.CFrame = CFrame.lookAt(plr.Character.HumanoidRootPart.Position, enemy.HumanoidRootPart.Position) end end function parry() for i, c in closest() do if c and plr.Character:WaitForChild("HumanoidRootPart", 2) and c.Character and c.Character:FindFirstChild("Humanoid") and c.Character.Humanoid:FindFirstChild("Animator") then for i, v in next, c.Character.Humanoid.Animator:GetPlayingAnimationTracks() do anim = anims[v.Animation.AnimationId] dodge = dodges[v.Animation.AnimationId] ability = abilities[v.Animation.AnimationId] barrage = barrages[v.Animation.AnimationId] if allowed(c.Character) and anim and v.TimePosition >= anim[1] and v.TimePosition <= anim[2] then task.spawn(function() def("anim") lookat(c.Character) end) elseif allowed(c.Character) and dodge and v.TimePosition > dodge[1] and v.TimePosition < dodge[2] then task.spawn(function() def("dodge") lookat(c.Character) end) elseif allowed(c.Character) and barrage and v.TimePosition > barrage[1] and v.TimePosition < barrage[2] then task.spawn(function() def("barrage") lookat(c.Character) end) elseif allowed(c.Character) and ability and v.TimePosition > ability[1] and v.TimePosition < ability[2] then task.spawn(function() def("ability") lookat(c.Character) end) end end end end end task.spawn(function() game:GetService("RunService").RenderStepped:Connect(function() if Settings.Autoparry.Toggle then parry() end end) end) warn("Executed")