I've made an npc and a script to go with it which are supposed to track down the nearest player and get to them through pathfinding. However, when I try to run the script, the npc does not move at all. Here is the script:
local findNearestTorso = function() local torsotracked = nil local torsodisttemp = nil local torsodist = 0 if game.Players:GetChildren() then for i,v in pairs(game.Players:GetChildren()) do if v.Character:FindFirstChild("HumanoidRootPart") then torsodisttemp = (v.Character.Torso.Position - script.Parent.Torso.Position).magnitude if torsodisttemp > torsodist then torsotracked = v.Character.Torso torsodist = (v.Character.Torso.Position - script.Parent.Torso.Position).magnitude end end end return(torsotracked) end end local table1 = {} local pathservice = game:GetService("PathfindingService") while wait() do local start = script.Parent.Torso local finish = findNearestTorso() if finish then local path = pathservice:FindPathAsync(start.Position,finish.Position) local points = path:GetWaypoints() for i,v in pairs(points) do local brick = Instance.new("Part",workspace) brick.Size = Vector3.new(0.3,0.3,0.3) brick.Anchored = true brick.CanCollide = false brick.Material = "Neon" brick.Color = Color3.new(1,1,1) brick.CFrame = CFrame.new(v.Position) table.insert(table1,brick) if v.Action == "Walk" then script.Parent.Humanoid.WalkToPoint = v.Position repeat local dist = (start.Position-v.Position).magnitude wait(3) until dist < 1 elseif v.Action == "Jump" then script.Parent.Humanoid.WalkToPoint = v.Position repeat script.Parent.Humanoid.Jump = true local dist = (start.Position-v.Position).magnitude wait(3) until dist < 1 end wait() end for i,v in pairs(table1) do v:Destroy() end end end
The thing with 'brick' is to visualize the path and it works, even though the npc does not move. Also, there is no error in output. What am I doing wrong?