a doorscript and only one triggerzone was my first idea too but wouldnt be bulletproof....if the player does not enter the room after opening the door the door would close and it wouldnt be possible to open it again.
here is a doorscript that closes the door when the player enters a triggerzone behind the door. It stays closed until a other triggerzone or any other entity with "activateifused=1" and the doorname in its IS USED field activates it:
;Artificial Intelligence Script
;scripted by ctm
;Header
desc = Use Door (Open) Auto (Close) waits for activated=5 to close and activated=1 to become usable again
;Triggers
:state=0:hudreset,hudx=50,hudy=90,hudimagefine=gamecore\text\pressentertouse.tga,hudname=usedoorprompt,hudhide=1,hudmake=display,state=5
:state=5:localvar=0
:state=5,varequal=1,activated=5:setvar=2,sound=$1,colon,state=50
:state=5,plrdistwithin=50,varequal=0:state=10
:state=5,plrdistwithin=50,varequal=2,activated=1:setvar=3,state=10
:state=5,plrdistwithin=50,varequal=3:state=10
:state=10,plrdistwithin=50:hudshow=usedoorprompt,hudfadeout=usedoorprompt
:state=10,plrdistwithin=50,plrusingaction=1:state=20
:state=20:state=30,setframe=0,sound=$0
:state=30:incframe=0
:state=30,frameatend=0:state=55,coloff
:state=40,plrdistfurther=60:state=50,sound=$1,colon
:state=50:decframe=0
:state=50,frameatstart=0:state=5,setframe=0,activate=0
:state=55:localvar=0
:state=55,varequal=0,activated=0:setvar=1,state=5
:state=55,varequal=3:state=40
;End of Script
and the script for the triggerzone behind the door:
;Artificial Intelligence Script
;Header
desc = Plr In Zone, activate entity specified in IF USED >>fires only once<<
;Triggers
:state=0,plrwithinzone=1:activateifused=5,sound=$0,state=1
;End of Script