Lpc Manpages

NewDoor()

FUNKTION:
     varargs int NewDoor(mixed cmds, string dest, mixed ids, mixed props);

DEFINIERT IN:
     /std/room/doors.c

ARGUMENTE:
     cmds
          String oder Array von Strings mit den Befehlen, mit denen man
          durch die Tuer geht (in der Regel Richtungen wie "norden").
     dest
          Name des Zielraumes
     ids
          String oder Array von Strings mit den Bezeichnern der Tuer. Kann
          auch 0 sein; in diesem Fall laesst sich die Tuer nur als "tuer"
          ansprechen.
     props
          Die Eigenschaften der Tuer

BESCHREIBUNG:
     Es wird eine neue Tuer geschaffen. Die Tuer laesst sich, wenn sie
     geoeffnet ist, mit den in cmds angegebenen Befehlen durchschreiten. Man
     gelangt dann in den Raum dest.

     Die Kommandos werden bei geoeffneter Tuer in die Liste der sichtbaren
     Ausgaenge eingefuegt.

     In props lassen sich Aussehen und Eigenschaften der Tuer festlegen. In
     <room/doors.h> sind dazu folgende Eigenschaften definiert:
     D_FLAGS
          Hier kann man einige Zustaende der Tuer angeben. In <room/doors.h>
          sind folgende Flags definiert:
          DOOR_OPEN
               Die Tuer ist beim Erzeugen geoeffnet.

          DOOR_CLOSED
               Die Tuer ist beim Erzeugen geschlossen.

          DOOR_NEEDKEY
               Man benoetigt einen Schluessel zum Oeffnen der Tuer.

          DOOR_CLOSEKEY
               Man benoetigt einen Schluessel zum Schliessen der Tuer.

          DOOR_RESET_CL
               Die Tuer schliesst sich beim Reset.

          DOOR_RESET_OP
               Die Tuer oeffnet sich beim Reset.

     D_LONG
          Die Langbeschreibung der Tuer. Ein "%s" wird durch den Tuerzustand
          (geoeffnet, geschlossen, abgeschlossen) ersetzt.

          Default: "Eine Tuer.\n"

     D_SHORT
          Die Kurzbeschreibung der Tuer. Ein "%s" wird durch "geoeffnet",
          "geschlossen" bzw. "abgeschlossen" ersetzt.

          Es werden die Kurzbeschreibungen aller im Raum vorhandenen Tueren
          aneinandergehaengt (es wird jeweils ein Leerzeichen eingeschoben),
          das Ganze mit break_string() umgebrochen und an P_INT_LONG
          angehaengt.

          Default: "Eine %se Tuer."

     D_NAME
          Der Name der Tuer. Dieser Name wird beim Oeffnen und Schliessen
          der Tuer sowie bei Fehlermeldungen ausgegeben. Man kann wie bei
          P_NAME einen String oder ein Array von Strings angeben.

          Default: "Tuer"

     D_GENDER
          Das Geschlecht der Tueer.

          Default: FEMALE

     D_MSGS
          String oder Array von drei Strings. Diese Strings werden beim
          Durchschreiten der Tuer an move() als dir bzw. dir, textout und
          textin uebergeben.

     D_FUNC
          String mit dem Namen einer Funktion, die im Startraum vor dem
          Durchschreiten der Tuer aufgerufen werden soll. Diese Funktion
          kann das Durchschreiten jedoch nicht verhindern!

     D_FUNC2
          String mit dem Namen einer Funktion, die im Zielraum nach dem
          Durchschreiten der Tuer aufgerufen werden soll.
          
     D_KEYTESTFUNC
          Falls auf den Namen einer Funktion gesetzt, testet diese, ob
          die Tuer aufgeschlossen (d.h. mit einem Schluessel geoeffnet)
          werden darf. Sie wird im Startraum aufgerufen, wenn bereits
          der richtige Schluessel vorliegt. Wenn sie einen Wert ungleich
          0 zurueckliefert, kann die Tuer nicht mit dem Schluessel
          geoeffnet werden.

     D_OPENTESTFUNC
          Falls auf den Namen einer Funktion gesetzt, testet diese, ob
          die Tuer geoeffnet werden darf. Sie wird im Startraum aufgerufen,
          und zwar nach einem eventuellen D_KEYTESTFUNC-Aufruf. Wenn sie
          einen Wert ungleich 0 zurueckliefert, kann die Tuer nicht ge-
          oeffnet werden.

     D_TESTFUNC
          Falls auf den Namen einer Funktion gesetzt, wird diese Funktion
          vor dem Durchschreiten im Startraum aufgerufen. Wenn sie einen
          Wert ungleich 0 zurueckliefert, wird die Tuer NICHT
          durchschritten. Die Aktion ist dann nicht erfolgreich (also in der
          Funktion notify_fail() entsprechend setzen!).

     D_CLOSETESTFUNC
          Falls auf den Namen einer Funktion gesetzt, wird diese Funktion
          vor dem Schliessen der Tuer aufgerufen. Wenn sie einen Wert
          ungleich 0 zurueckliefert, kann die Tuer nicht geschlossen
          werden.

RUECKGABEWERT:
     1, wenn die Tuer ordungsgemaess eingebaut werden konnte, sonst 0.

BEMERKUNGEN:
     Zwei Tuerseiten gelten als verschiedene Seiten einer Tuer, wenn als
     Ziel in Raum A Raum B und in Raum B Raum A angegeben ist. Der Zustand
     wird abgefragt, wenn die Tuer geoeffnet/geschlossen wird, P_INT_LONG
     oder P_EXITS abgefragt wird und beim Reset.

     Es sind auch Tueren moeglich, die nur auf einer Seite existieren, oder
     auch solche, die auf beiden Seiten verschieden aussehen oder gar auf
     einer Seite nur mit einem Schluessel zu oeffnen sind, auf der anderen
     jedoch kein Schluessel noetig ist.

     Wer aus irgendeinem Grund den Zustand einer Tuer selber abfragen oder
     veraendern will, kann dafuer in /master/door_master die Funktionen
     QueryDoorStatus(ziel) bzw. SetDoorStatus(ziel, status) aufrufen.
     
BEISPIELE:

     // Dies ist eine gewoehnliche Tuer ohne besondere Beschreibung.
     NewDoor( "sueden", "/players/mupfel/room/test1");

     // Ein Portal
     NewDoor( "norden","/players/mupfel/room/test2","portal",
               ({ D_NAME,"Portal",
                  D_GENDER, NEUTER,
                  D_SHORT,"Im Norden siehst Du ein %ses Portal. ",
                  D_LONG, "Das Portal ist einfach nur gigantisch.\n"
               }) );

     // Wenn man zum Teufel will...
     NewDoor( "teufel", "/room/devil", ({ D_MSGS, "zum Teufel" });

     NewDoor("norden", "/room/see2",
             ({D_MSGS, ({"nach Norden", "schwimmt",
                         "kommt hereingeschwommen" })
             }) );
             
     Ein Beispiel fuer D_KEYTESTFUNC ist in /d/zoo/room/k8/zoo31.c

SIEHE AUCH:
     QueryDoorKey(), QueryDoorStatus(), SetDoorStatus(), /std/room/doors.c,
     /master/door_master.c