So this works fine, the only problem I'm having is that the NPC has to finish 100% before going to a new point. This is a pretty big issue.
So my question is how can I stop MoveToFinished before it's finished, is there a way to cancel it out and start over if the player has moved positions and there is a new endpoint?
There aren't too many examples on the new PathfindingService and this is the first time I've used it.
local PathfindingService = game:GetService("PathfindingService") function find(pos) local dis = 10000 local tor = nil for i,v in pairs(game.Players:GetPlayers()) do if v.Character then if v.Character:FindFirstChild("HumanoidRootPart") and v.Character:FindFirstChild("Humanoid") then local hrp,hum = v.Character.HumanoidRootPart,v.Character.Humanoid if hum.Health > 0 then if (hrp.Position - pos).magnitude < dis then tor = hrp dis = (hrp.Position - pos).magnitude end end end end end return tor end while wait(.25) do local target = find(script.Parent.HumanoidRootPart.Position) if target ~= nil then local path = PathfindingService:FindPathAsync(script.Parent.HumanoidRootPart.Position, target.Position) local waypoints = path:GetWaypoints() for currentPoint = 1, #waypoints do local waypoint = waypoints[currentPoint] script.Parent.Humanoid:MoveTo(waypoint.Position) if waypoint.Action == Enum.PathWaypointAction.Jump then script.Parent.Humanoid.Jump = true end script.Parent.Humanoid.MoveToFinished:Wait() end end end