zu 1:
Du könntest hinter der Tür eine unsichtbare Entity setzen, die ein Event auslöst wenn der Player gegen sie läuft.
siehe im Handbuch: Event
Die Eventfunktion macht dann ein Textobjekt oder ein Panel (mit dem Text als Bild)
sichtbar.
siehe im Handbuch: Panels, text
Für einen Abspann kannst du ein Panel verwenden, auf dessen bmap dann der Abspannfilm abgespielt wird.
siehe im Handbuch: media_play
zu 2:
Es kommt darauf an welches Scritp du verwendest.
Du könntest die scanreichweite des Payers reduzieren oder
eine if-abfrage mit vec_dist einbauen
playerentfernung=vec_dist(player.x,my.x); //Entfernung zum player berechnen
if(playerentfernung<200){door_open();} //Nur Tür öffnen wenn näher als 200