Ok So I am trying to update my chase script for my zombies from the deprecated and older system of GetPointCoordinates() to GetWaypoints(). Right now my script works but as you can see in the script I have to tell NPC's to jump and to be honest it is not the best pathfinding script. If anyone has any suggestions, a better NEW pathfinding script or can help me re-code this I would be very grateful for the help. Thanks in advance.
workspace:WaitForChild("Wave0") local p=game:GetService("PathfindingService") p.EmptyCutoff=0.024 function addz(v) spawn(function() v:WaitForChild("Humanoid").WalkSpeed=16 local parts={} local target=v.Head v.Humanoid.Died:connect(function()wait(5)v:Destroy().Parent=workspace.Wave0 end) while wait()do if v.Humanoid.Health==0 then break end if target==v.Head or not target:IsDescendantOf(workspace)then local r={} for _,v in pairs(game.Players:GetPlayers())do pcall(function() r[#r+1]=v.Character.Head end) end target=#r>0 and r[math.random(1,#r)]or target end for _,v in pairs(parts)do v:health(-20)end parts={} local path=p:FindPathAsync(v.Head.Position,target.Position) if(v.Head.Position-target.Position).magnitude<3 and target~=v.Head then end local points=path:GetPointCoordinates() if #points>1 then for i=2,5 do local part,point=workspace:FindPartOnRay(Ray.new(points[math.min(#points,i)],Vector3.new(0,0.5,0))) local part,point2=workspace:FindPartOnRay(Ray.new(points[math.min(#points,i+1)],Vector3.new(0,0.5,0))) local count=0 while math.min((point2-v.Head.Position).magnitude,(point*Vector3.new(1,0,1)-v.Head.Position*Vector3.new(1,0,1)).magnitude)>3 and count<50 do count=count+1 v.Humanoid:MoveTo(point2) if workspace:FindPartOnRay(Ray.new(v.Head.Position,CFrame.new(v.Head.Position*Vector3.new(1,0,1),point2*Vector3.new(1,0,1)).lookVector*4))then v.Humanoid:MoveTo(point) end if workspace:FindPartOnRay(Ray.new(v.Head.Position,CFrame.new(v.Head.Position*Vector3.new(1,0,1),point*Vector3.new(1,0,1)).lookVector*3))then v.Humanoid.Jump=true end wait() end end else v.Humanoid:MoveTo(target.Position) if target.Position.Y>=v.Humanoid.Torso.Position.Y+1 then v.Humanoid.Jump=true end end end end) end workspace.Wave0.ChildAdded:connect(addz) for _,v in pairs(workspace.Wave0:GetChildren())do wait(.1) addz(v) end