I have this Pathfinding
Script
inside a character Model
(NPC) which, for the time being, loops around the map. It works 100% in general.
However, online it seems to stop for a second before going to the next co-ordinate to the location, and in Studio
it proceeds normally. How come?
local curnode = workspace.PathNodes.PathNode1 --Current location variable local nextnode = workspace.PathNodes.PathNode2 --Next location variable function getCurrentPos() --Get the current location for _,node in pairs(workspace.PathNodes:GetChildren()) do if (node.Position - script.Parent.Torso.Position).magnitude < 4 then curnode = node end end end function getNextPos() -Decide the next one based on your current if curnode == workspace.PathNodes.PathNode1 then local rnd = math.random(1,2) if rnd == 1 then nextnode = workspace.PathNodes.PathNode2 else nextnode = workspace.PathNodes.PathNode15 end --Yes, the nodes are a bit messy elseif curnode == workspace.PathNodes.PathNode2 then local rnd = math.random(1,2) if rnd == 1 then nextnode = workspace.PathNodes.PathNode10 else nextnode = workspace.PathNodes.PathNode11 end elseif curnode == workspace.PathNodes.PathNode3 then nextnode = workspace.PathNodes.PathNode4 elseif curnode == workspace.PathNodes.PathNode4 then nextnode = workspace.PathNodes.PathNode5 elseif curnode == workspace.PathNodes.PathNode5 then local rnd = math.random(1,2) if rnd == 1 then nextnode = workspace.PathNodes.PathNode13 else nextnode = workspace.PathNodes.PathNode6 end elseif curnode == workspace.PathNodes.PathNode6 then nextnode = workspace.PathNodes.PathNode7 elseif curnode == workspace.PathNodes.PathNode7 then nextnode = workspace.PathNodes.PathNode8 elseif curnode == workspace.PathNodes.PathNode8 then nextnode = workspace.PathNodes.PathNode9 elseif curnode == workspace.PathNodes.PathNode9 then nextnode = workspace.PathNodes.PathNode10 elseif curnode == workspace.PathNodes.PathNode10 then nextnode = workspace.PathNodes.PathNode14 elseif curnode == workspace.PathNodes.PathNode11 then nextnode = workspace.PathNodes.PathNode7 elseif curnode == workspace.PathNodes.PathNode12 then nextnode = workspace.PathNodes.PathNode8 elseif curnode == workspace.PathNodes.PathNode13 then nextnode = workspace.PathNodes.PathNode16 elseif curnode == workspace.PathNodes.PathNode14 then nextnode = workspace.PathNodes.PathNode1 elseif curnode == workspace.PathNodes.PathNode15 then nextnode = workspace.PathNodes.PathNode3 else nextnode = workspace.PathNodes.PathNode12 end end function moveToPos() --Find the path to the destination and go for it for _,point in pairs(game:GetService("PathfindingService"):ComputeRawPathAsync(curnode.Position,nextnode.Position,130):GetPointCoordinates()) do script.Parent.Humanoid.WalkToPoint = point repeat wait() until (point - script.Parent.Torso.Position).magnitude < 3 end end while game.Players.NumPlayers > 0 do --This loop is here so i can do more stuff later getCurrentPos() getNextPos() moveToPos() end --General reminder that this script works.