local NPC = workspace.Dummy function getClosestPlayer() local closest_player, closest_distance = nil, 200 for i, player in pairs(workspace:GetChildren()) do if player:FindFirstChild("Humanoid") and player ~= NPC then local distance = (NPC.PrimaryPart.Position - player.PrimaryPart.Position).Magnitude if distance < closest_distance then closest_player = player closest_distance = distance end end end return closest_player, closest_distance end while true do local player, distance = getClosestPlayer() if player and distance > 10 then NPC.Humanoid:MoveTo(player.PrimaryPart.Position) local stopped NPC.Humanoid.MoveToFinished:Connect(function() stopped = true end) repeat local distance = (NPC.PrimaryPart.Position-player.PrimaryPart.Position).Magnitude if distance < 10 then NPC.Humanoid:MoveTo((NPC.HumanoidRootPart.CFrame*CFrame.new(0,0,-3)).p) break end wait() until stopped == true else wait(1) end end