I am trying to make a part teleport the player to a part (lets call this door) that is not taken, so that if multiple players touch "door" it will line them up instead of teleporting a player to a position that is taken, but when I run this code it does not stop, and instead goes through all of the parts stopping at the last one.
local Door = script.Parent.Parent
Door.TeleIn.Touched:Connect(function(p)
local plr = game.Workspace:WaitForChild(p.Name)
wait()
if closed.Value ~= true then -- if it should teleport the player
for _,v in pairs (spots:GetChildren()) do -- gets the 'spots' to teleport to
if v.using.Value ~= true then -- if that spot is empty
plr.Humanoid.WalkSpeed = 0
plr.HumanoidRootPart.CFrame = CFrame.new(v.Position) -- teleports player
v.using.Value = true -- sets that position as taken
break -- this should stop the loop where it is
end
end
end
end)

1 comment
Maybe you're accidentally triggering the touch event several times - try adding some debounce.