Saludos Zorropa
Lo que pides es algo que se puede verificando facilmente. Simplemente crea una variable que gestione si esta abierta o no, lo puedes hacer desde el mismo objeto puerta
abierta = false;
with(instance_create(xx, yy, obj_interruptor));
Mipuerta = other.id;
Ahora simplemente añade en el objeto interruptor, una condicion para abrir la puerta que nos creo (servira mejor creando el interruptor desde el objeto puerta). Usare como ejemplo el evento colision
if (Mipuerta.abierta == false)
Mipuerta.abierta = true;
Ahora, si te preguntas como poder crear los interruptores en distintas parte de la room sin tener que crear otra puerta... Pues simplemente añade una variable unica, en el "creation code" de la instancia de la puerta añadida en la room
xx = 320;
yy = 240;
Si lo notaste bien, al principio de este tema (en la parte donde creamos el interruptor), creamos la instancia del interruptor con los valores de esas variables unicas, que serian "xx" "yy"
Bueno espero que te sirva este metodo