Ad
Log in to vote
0

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

Asked by 4 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.

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)
0
Maybe you're accidentally triggering the touch event several times - try adding some debounce. fredfishy 828 — 4y

1 answer

Log in to vote
1
Answered by
SteamG0D 1633 Moderation Voter
4 years ago
Edited 4 years ago

Add some debounce:

local touch = false
local Door = script.Parent.Parent
Door.TeleIn.Touched:Connect(function(p)
    if not touch then
        touch = true
        --do your stuff
        wait(1) --waits 1 second before allowing another touch event to do anything
        touch = false
    end
end)

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 — 4y
0
It really should not be possible at all for it to do that, make sure you put everything where it should go. SteamG0D 1633 — 4y
0
@TheGreenSuperman What exactly did you do when you tried my solution? SteamG0D 1633 — 4y
0
I fixed it with your help and a bit of tinkering, thanks anyways! TheGreenSuperman 85 — 4y
Ad

Answer this question