Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

Open multiple doors with ONE script?

I have 3 doors and soon will have more but how do I open all doors with 1 script WITH A DEBOUNCE that WONT stop other doors from opening other than the one that has been pressed. Now I have made this script which DOES indeed work and opens all doors in the game from 1 script however you can multiple-click doors which I do not want to happen so how do I do it? Code is here:

--variables--
local debounce = false

local Doors = game.Workspace.Doors:GetChildren()

for i, v in pairs(Doors)do 
	function open()
	local Door1 = v.Door1
	local Door2 = v.Door2
	local Sound = v.Frame.OpenSound	
	Sound:Play()
	Sound.Pitch = 1
		for i = 1, 30 do 
			Door1.CFrame = Door1.CFrame - Vector3.new(.1,0,0)
			Door2.CFrame = Door2.CFrame + Vector3.new(.1,0,0)
			wait(.01)
		end
		wait(.5)
		Sound:Play()
		Sound.Pitch = .7
		for i = 1, 30 do 
			Door1.CFrame = Door1.CFrame + Vector3.new(.1,0,0)
			Door2.CFrame = Door2.CFrame - Vector3.new(.1,0,0)
			wait(.01)
		end
	end
	v.Panel1.Button.ClickDetector.MouseClick:connect(open)
	v.Panel2.Button.ClickDetector.MouseClick:connect(open)
end


1 answer

I assume you want something like this?

--variables--
local Doors = game.Workspace.Doors:GetChildren()

for i, v in pairs(Doors) do 
	local debounce = true -- Surprisingly this will actually work, because it's local to this scope. Next loop, this same line will create a new local variable, local to the next loop. Here is live proof of that: https://repl.it/CADc

	local function open()
		-- Your original script didn't seem to have any debounce, but it's should be just same debounce logic. Most important thing is the local debounce variable.
		if debounce then
			debounce = false

			local Door1 = v.Door1
			local Door2 = v.Door2
			local Sound = v.Frame.OpenSound 
			Sound:Play()
			Sound.Pitch = 1
			for i = 1, 30 do 
				Door1.CFrame = Door1.CFrame - Vector3.new(.1,0,0)
				Door2.CFrame = Door2.CFrame + Vector3.new(.1,0,0)
				wait(.01)
			end
			wait(.5)
			Sound:Play()
			Sound.Pitch = .7
			for i = 1, 30 do 
				Door1.CFrame = Door1.CFrame + Vector3.new(.1,0,0)
				Door2.CFrame = Door2.CFrame - Vector3.new(.1,0,0)
				wait(.01)
			end

			debounce = true
		end
	end

	v.Panel1.Button.ClickDetector.MouseClick:connect(open)
	v.Panel2.Button.ClickDetector.MouseClick:connect(open)
end

This discussion is preserved as it was. New answers, comments, and votes are closed.