This is a ServerScript
inside of my NPC
local PathFindService = game:GetService("PathfindingService") local Path = PathFindService:CreatePath() local LTH = script.Parent local Humanoid = LTH.Humanoid local Destination = game.Workspace.PartAfterSides local WayPoints local CurrentWayPointIndex local function ShowWayPoint() local part = Instance.new("Part") part.Shape = "Ball" part.Material = "Neon" part.Size = Vector3.new(0.6, 0.6, 0.6) part.Position = WayPoints[CurrentWayPointIndex].Position part.Anchored = true part.CanCollide = false part.Parent = game.Workspace end local function FollowPath(Destination) Path:ComputeAsync(LTH['Torso'].Position, Destination.Position) WayPoints = {} if Path.Status == Enum.PathStatus.Success then WayPoints = Path:GetWaypoints() CurrentWayPointIndex = 1 ShowWayPoint() Humanoid:MoveTo(WayPoints[CurrentWayPointIndex].Position) else Humanoid:MoveTo(LTH.HumanoidRootPart.Position) end end local function onWaypointReached(reached) if reached and CurrentWayPointIndex < #WayPoints then CurrentWayPointIndex = CurrentWayPointIndex + 1 ShowWayPoint() Humanoid:MoveTo(WayPoints[CurrentWayPointIndex].Position) end end local function OnPathBlocked(BlockedWaypointIndex) if BlockedWaypointIndex > CurrentWayPointIndex then FollowPath(Destination) end end -- Connect 'Blocked' event to the 'onPathBlocked' function Path.Blocked:Connect(OnPathBlocked) -- Connect 'MoveToFinished' event to the 'onWaypointReached' function Humanoid.MoveToFinished:Connect(onWaypointReached) FollowPath(Destination)
The first time when MoveTo
is called in FollowPath
, MoveToFinished
is successful and CurrentWayPointIndex
becomes 2, however when MoveTo
is run inside OnWaypointReached
, the variable reached
would be false so the NPC would stop following the path.
If you have questions ask them in the comments. Thanks for reading!