Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

How do I break this loop when it finds an an empty value?

Asked by 6 years ago

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.

01local Door = script.Parent.Parent
02Door.TeleIn.Touched:Connect(function(p)
03    local plr = game.Workspace:WaitForChild(p.Name)
04    wait()
05    if closed.Value ~= true then -- if it should teleport the player
06        for _,v in pairs (spots:GetChildren()) do -- gets the 'spots' to teleport to
07        if v.using.Value ~= true then -- if that spot is empty
08            plr.Humanoid.WalkSpeed = 0
09            plr.HumanoidRootPart.CFrame = CFrame.new(v.Position) -- teleports player
10            v.using.Value = true -- sets that position as taken
11            break -- this should stop the loop where it is
12        end
13    end
14    end
15end)
0
Maybe you're accidentally triggering the touch event several times - try adding some debounce. fredfishy 833 — 6y

1 answer

Log in to vote
1
Answered by
SteamG00B 1633 Moderation Voter
6 years ago
Edited 6 years ago

Add some debounce:

01local touch = false
02local Door = script.Parent.Parent
03Door.TeleIn.Touched:Connect(function(p)
04    if not touch then
05        touch = true
06        --do your stuff
07        wait(1) --waits 1 second before allowing another touch event to do anything
08        touch = false
09    end
10end)

This will still trigger as many times as it did before, but the difference is that debounce only allows stuff you want to happen once.

0
well, now it waiting one second before going to the next part, and its still looping through all of them :/ TheGreenSuperman 85 — 6y
0
It really should not be possible at all for it to do that, make sure you put everything where it should go. SteamG00B 1633 — 6y
0
@TheGreenSuperman What exactly did you do when you tried my solution? SteamG00B 1633 — 6y
0
I fixed it with your help and a bit of tinkering, thanks anyways! TheGreenSuperman 85 — 6y
Ad

Answer this question