Ajuda com script 2

Recentemente to fazendo um script pra treinar as tables, aqui

E no final eu quero botar tables[1].Touched:Connect(function(player2)
mas no final sempre da erro de ‘end’

local tables = {script.Parent.Door,script.Parent.Key.Union, script.Parent.Floor}
local newp = Instance.new("BoolValue")
newp.Value = false
local cd = false
local cd2 = false
for i = 1,#tables do
	
		tables[2].Touched:Connect(function(player)
			if cd == false then
			newp.Name = "KeyCard"
			local e = Instance.new("Part", script.Parent.Key)
			e.Name = "Union"
			e.Anchored = true
			e.Position = Vector3.new(17.468, 1, 9.816)
            tables[2]:Destroy()
			print(tables[1])
			newp.Value = true
			cd = true
			newp.Parent = workspace	
			end
		
		tables[1].Touched:Connect(function(player2)
			if newp.Value == true and cd2 == false then
			tables[1].Transparency = 1
			tables[1].CanCollide = false
			print(tables[1])
			cd2 = true
			for i = 1,1000 do
			wait(0.1)
			local rng = math.random(1,3)
			if rng == 1 then
			wait(0.2)
			tables[3].BrickColor = BrickColor.Blue()
				elseif rng == 2 then
				wait(0.2)
				tables[3].BrickColor = BrickColor.Black()
				elseif rng == 3 then
				wait(0.2)
				tables[3].BrickColor = BrickColor.Green()
		end)

				end
			end
		end
		
		
		
		end)
end

Já conseguiu resolver? Às vezes, quando me perco no fechamento dos blocos, eu faço uma versão resumida para ir vendo qual que eu errei

local tables = {1, 2}
for i = 1, 10 do
	tables[2].Touched:Connect(function(player)
		if true then
			
		end
		tables[1].Touched:Connect(function(player2)
			if true and true then
				for i = 1, 10 do
					if true then
						
					elseif true then
						
					elseif true then
						
					end
				end
			end
		end)
	end)
end

No caso aí, os 2 parênteses ficam no penúltimo e antipenúltimo ends

1 Curtida