Necesitarás los tiles de la puerta cerrada y la puerta abierta. Tienes que escoger una flag o una variable para poder determinar si la puerta está o no abierta (por ejemplo, si el valor de la variable es 0, está cerrada; y si es 1, está abierta). Luego tienes que poner un poste y hacer el script para que se abra o se cierre (dependiendo del valor de la variable, que es la que determina si está cerrado o abierto). Por último, pones un script de nivel de tipo 01 para que la puerta permanezca abierta o cerrada como tú dices.
EDITO: Con el comando setmaptile, que es el que necesitas para cambiar de tiles cuando abres o cierras, puedes determinar también si se puede o no pasar.