Hi guys, I have finished coding my NPC script. I have made it so the NPC is local (inside the CurrentCamera) and have used pathfinding to make the character move around in an random part of an area (outlined by an invisible brick.)
It works when I use it in Play Solo, but when I test it in a server, it refuses to work. Nothing is printed or errors out, even if I add prints to my code. I don't understand why it doesn't work. I even tried my code in a LocalScript with little success.
Here is my script:
math.randomseed(tick()) local paths = game.Lighting.Paths:GetChildren() local npc = script.Parent local hum = npc.Humanoid local torso = npc.Torso local head = npc.Head local dialog = head.ChatDialog local player function RandomiseLocation(part) local function r(a,b) return a + (b-a) * math.random() end local c1 = part.Position + (part.Size/2) local c2 = part.Position - (part.Size/2) return Vector3.new(r(c1.X,c2.X),r(c1.Y,c2.Y),r(c1.Z,c2.Z)) end player = npc.Player.Value while true do wait() print("Doing eet") if dialog.InUse ~= true then wait() hum.WalkSpeed = 16 print("Doing eet2") local rand = math.random(1,#paths) local randLoc = RandomiseLocation(paths[rand]) print("Doing eet3") if (randLoc - torso.Position).magnitude < 10 then repeat wait() randLoc = RandomiseLocation(paths[rand]) until (randLoc - torso.Position).magnitude >= 10 end randLoc = Vector3.new(randLoc.X, torso.Position.Y, randLoc.Z) print(randLoc.X, randLoc.Y, randLoc.Z) local path = game:GetService("PathfindingService"):ComputeRawPathAsync(torso.Position,randLoc,500) if path.Status == Enum.PathStatus.Success then local points = path:GetPointCoordinates() for _,pos in pairs(points) do hum:MoveTo(pos) repeat wait() until (pos - torso.Position).magnitude <= 3 end hum:MoveTo(randLoc) local speed = hum.Running:wait() if speed ~= 0 then repeat if dialog.InUse ~= true then speed = hum.Running:wait() end until speed == 0 end wait(.25) end else wait() hum.WalkSpeed = 0 torso.CFrame = CFrame.new(torso.Position, Vector3.new(player.Character.Torso.Position.X,torso.Position.Y,player.Character.Torso.Position.Z)) end end
Any help is appreciated, thanks!