AddExit() ========= FUNKTION -------- :: void AddExit(string|string* cmd, closure|string dest); DEFINIERT IN ------------ :: /std/room/exits ARGUMENTE --------- :: string/string* cmd die Richtung(en), in die der Ausgang fuehrt string/closure dest das Ziel des Ausgangs mit Text/Closure BESCHREIBUNG ------------ :: Es wird ein Ausgang in die Richtung(en) cmd eingefuegt. Die Art des Ausgangs haengt ab von dest: - ein String: - mit einem Dateinamen: Der Ausgang fuehrt in den Raum, den der Dateiname bezeichnet. - der Form "#dateiname" Der Ausgang fuehrt in den Raum, den der Dateiname bezeichnet, bei der Benutzung wird jedoch statt " geht nach " " geht nach " ausgegeben. - eine Closure: Die Closure wird bei Nutzung des Ausgangs aufgerufen. Das entspricht eine SpecialExit - in der gerufenen Funktion muss man den Spieler selbst in den Zielraum bewegen. Gegebenenfalls kann das durch AddCmd() ersetzt werden. BEMERKUNGEN ----------- :: Man kann fuer den Dateinamen des Zielraumes auch einen relativen Pfad angeben. Die Auswertung erfolgt nach folgendem Schema: - "./" Es wird ein Zielraum relativ zum gleichen Verzeichnis wie dieser Raum angesprochen. - "../" Es wird ein Zielraum relativ zur Verzeichnisebene ueber der dieses Raumes angesprochen (analog mit mehrerern "../..") Mittels P_HIDE_EXITS kann man Ausgaenge verstecken. Bei der Benutzung eines Ausgangs wird der Hook H_HOOK_EXIT_USE ausgeloest. BEISPIELE --------- :: ### normale Ausgaenge ### // Beim Kommando "sueden" kommt: " geht nach Sueden." AddExit("sueden", "/gilden/abenteurer"); // Beim Kommando "sueden" kommt: " geht in die Gilde." AddExit("sueden", "in die Gilde#/gilden/abenteurer"); ### Ausgaenge mit relativen Pfaden ### // Der Name des Raumes sei "/d/inseln/wargon/hafen1" // Dieser Ausgang geht nach "/d/inseln/wargon/kneipe": AddExit("norden", "./kneipe" ); // Und dieser nach "/d/inseln/anthea/anlege": AddExit("sueden", "../anthea/anlege" ); ### dynamische Ausgaenge ### // ein Ausgang soll nur von Froeschen benutzbar sein: static int lochfkt(string dir); // Prototyp ... AddExit("loch", #'lochfkt); // auch identisch zu: // AddSpecialExit("loch", #'lochfkt); [eine Closure] oder // AddSpecialExit("loch", "lochfkt"); [ein Funktionsname] static int lochfkt(string dir) { if (!(this_player()->QueryProp(P_FROG))) { // Kein Frosch => passt nicht! notify_fail("Du bist zu gross!\n"); return 0; } // Meldungen werden im move() gleich mitgegeben return this_player()->move("/room/loch", M_GO, 0, "huepft ins Loch", "huepft herein"); } SIEHE AUCH ---------- :: AddSpecialExit(), GetExits(), RemoveExit(), RemoveSpecialExit(), GuardExit(), H_HOOK_EXIT_USE, P_EXITS, P_HIDE_EXITS, /std/room/exits.c ausgaenge Letzte Aenderung: 22.12.2016, Bugfix