SHOW:
|
|
- or go back to the newest paste.
| 1 | local NPC = workspace.Dummy | |
| 2 | function getClosestPlayer() | |
| 3 | local closest_player, closest_distance = nil, 200 | |
| 4 | for i, player in pairs(workspace:GetChildren()) do | |
| 5 | if player:FindFirstChild("Humanoid") and player ~= NPC then
| |
| 6 | local distance = (NPC.PrimaryPart.Position - player.PrimaryPart.Position).Magnitude | |
| 7 | if distance < closest_distance then | |
| 8 | closest_player = player | |
| 9 | closest_distance = distance | |
| 10 | end | |
| 11 | end | |
| 12 | end | |
| 13 | return closest_player, closest_distance | |
| 14 | end | |
| 15 | while true do | |
| 16 | local player, distance = getClosestPlayer() | |
| 17 | if player and distance > 10 then | |
| 18 | NPC.Humanoid:MoveTo(player.PrimaryPart.Position) | |
| 19 | local stopped | |
| 20 | NPC.Humanoid.MoveToFinished:Connect(function() | |
| 21 | stopped = true | |
| 22 | end) | |
| 23 | repeat | |
| 24 | local distance = (NPC.PrimaryPart.Position-player.PrimaryPart.Position).Magnitude | |
| 25 | if distance < 10 then | |
| 26 | NPC.Humanoid:MoveTo((NPC.HumanoidRootPart.CFrame*CFrame.new(0,0,-3)).p) | |
| 27 | break | |
| 28 | end | |
| 29 | wait() | |
| 30 | until stopped == true | |
| 31 | else | |
| 32 | wait(1) | |
| 33 | end | |
| 34 | ||
| 35 | end |