Standard-Raeume: ================ Man kann die Ausgaenge wie folgt definieren: set_exit(string Filename, string Kommando) oder set_exits(string *Filenamen, string *Kommandos) z.B.: set_exit("/d/Vaniorh/uluji/ile/central_plaza1","westen"); set_exits( ({ "/d/Vaniorh/uluji/market_place", "/d/Vaniorh/uluji/harbour_street1" }), ({ "norden", "westen" }) ); Map-Raeume: =========== Per Voreinstellung sind acht Ausgaenge definiert: Norden, Nordosten, Osten, etc. Man kann Ausgaenge sperren: delete_exit(string Kommando) oder delete_exits(string *Kommandos) z.B.: delete_exits( ({ "norden","westen", "suedosten" }) ); Man kann Ausgaenge hinzufuegen: add_exit(string Filename, string Kommando) oder add_exits(string *Filenamen, string *Kommandos) Man kann auch alle auf einmal ueberlagern: set_exit(string Filename, string Kommando) oder set_exits(string *Filenamen, string *Kommandos) All diese Befehle funktionieren auch fuer Standardraeume. Verbindung von Map- und Standard-Raeumen: ========================================= Map-Raeume koennen ja in den unterschiedlichsten Subdirectorys der einzelnen Domains liegen. Im geladenen Zustand dagegen kann man diese Herkunft nicht mehr am File-Namen erkennen. Bsp: "/d/Arktis/uluji/m0_0" auf Festplatte, "/map/m3_1020" im geladenen Zustand in der Map. Im Allgemeinen ist es egal, welchen Namen man angibt, da alle System-Routinen zum Laden von Raeumen die Efun "touch(..)" verwenden, die sich den richtigen Namen heraussucht. "touch" verwendet intern folgende Efuns, um "Domain"-Namen in "Map"-Namen und umgekehrt zu verwandeln: domain2map("/d/Arktis/uluji/m0_0") -> "/map/m3_1020" map2domain("/map/m3_1020") -> "/d/Arktis/uluji/m0_0" Versteckte Ausgaenge: ===================== Von set_exit/set_exits gesetzte Ausgaenge sind SICHTBAR, dass heisst sie werden beim Rumlaufen und bei 'schau' nach der Raumbeschreibung angezeigt. Die von der Map in Mapraeumen gesetzten 8 Standardausgaenge sind dagegen NICHT SICHTBAR, sie werden nicht angezeigt. (Eigenschaft NOLIST) Anderer Ausgaenge sind sogar versteckt, das heisst auch andere Spieler bekomen nicht die Richtung mit, wenn man sich durch sie entfernt. (Eigenschaft HIDDEN) Man kann jedoch einzelne oder mehrer Ausgaenge von Hand sichtbar bzw. unsichtbar machen. Dazu gibt es die Funktionen: hide_exit ([string Kommando | string *Kommandos]); nolist_exit([string Kommando | string *Kommandos]); show_exit ([string Kommando | string *Kommandos]); Z.B.: hide_exit("norden"); versteckt den Ausgang nach Norden. hide_exit(({"norden", "osten" })); versteckt die Ausgaenge Norden und Osten. hide_exit() versteckt alle Ausgaenge Filtern von Bewegungen: ======================= Wenn man zusaetzliche Bedingungen mit der Benutzung einzelner Ausgaenge verknuepfen will, schreibt man jeweils eine Routine mit dem Namen: int filter_(object who) { } Bei Benutzung der entsprechenden Richtung wird diese aufgerufen; liefert sie 0 zurueck (oder existiert sie nicht), so wird die Bewegung durch- gefuehrt, ansonsten wird die Bewegung verweigert. Unsichtbare Goetter koennen damit allerdings NICHT aufgehalten werden ! Beispiel: /* Der Raum besitzt zwei Ausgaenge, wobei der zweite gefiltert werden soll. */ set_exits(({"/d/..../raum1","/d/.../raum2"}),({"norden","runter"})); int filter_runter(object who) { write("PUHH..... Geht die Falltuer schwer auf.\n"); return 0; /* Bewegung erlaubt. */ } oder: int filter_runter(object who) { if (present("ork",this_object())) { write("Ein Ork versperrt dir den Weg.\n"); return 1; } return 0; } Zusaetzliche (hoffentlich wichtige) Ausgangsfunktionen: ======================================================= - Um Standardbewegungsmeldungen zu ueberlagern: set_exit_msg(string dir, string raus, string rein) Beispiel: set_exit_msg( "nordosten", "$Der(OBJ_TP) laeuft den Pfad nach Nordosten hoch", "$Ein(OBJ_TP) kommt von Suedwesten den Pfad hochgelaufen"); Flags zu Ausgaengen: ==================== Folgende Konstanten aus room.h stehen zur Verfuegung: EXIT_VISIBLE Der Ausgang wird sichtbar. (nicht nolist oder versteckt) EXIT_NOLIST Der Ausgang wird nicht angezeigt. (Mapausgaenge) EXIT_HIDDEN Der Ausgang ist versteckt, Man kann ihn benutzen, aber man sieht ihn nicht als Spieler, und andere sehen es nicht (deutlich), wenn ein Spieler ihn benutzt, im Gegensatz zu EXIT_NOLIST. EXIT_LOCKED Der Ausgang wird gesperrt. EXIT_UNLOCKED Der Ausgang wird entsperrt. EXIT_VIEW Beim Betrachten des Raumes sieht der Spieler dort befindliche PCs + NPCs, sofern er bei den Helligkeitsverhaeltnissen in der Lage waere zu sehen. und koennen in folgenden Funktionen verwendet werden: add_exit, add_exit_flag, query_exit_flag, query_command_list, query_exit_list, query_flag_list, set_exit BEISPIEL: add_exit_flag(({"norden", "osten"}), EXIT_NOLIST); Fuer VISIBLE, NOLIST, HIDDEN, LOCKED und UNLOCKED gibt es eigene Funktionen: show_exit, nolist_exit, hide_exit, lock_exit, unlock_exit siehe dort.