blob: ca0af0e4a4e20eb24cbcd4849b954f1b1ed3b60b [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001AddExit()
Zesstra953f9972017-02-18 15:37:36 +01002*********
MG Mud User88f12472016-06-24 23:31:02 +02003
MG Mud User88f12472016-06-24 23:31:02 +02004
Zesstra953f9972017-02-18 15:37:36 +01005FUNKTION
6========
MG Mud User88f12472016-06-24 23:31:02 +02007
Zesstra953f9972017-02-18 15:37:36 +01008 void AddExit(string|string* cmd, closure|string dest);
MG Mud User88f12472016-06-24 23:31:02 +02009
MG Mud User88f12472016-06-24 23:31:02 +020010
Zesstra953f9972017-02-18 15:37:36 +010011DEFINIERT IN
12============
MG Mud User88f12472016-06-24 23:31:02 +020013
Zesstra953f9972017-02-18 15:37:36 +010014 /std/room/exits
MG Mud User88f12472016-06-24 23:31:02 +020015
MG Mud User88f12472016-06-24 23:31:02 +020016
Zesstra953f9972017-02-18 15:37:36 +010017ARGUMENTE
18=========
MG Mud User88f12472016-06-24 23:31:02 +020019
Zesstra953f9972017-02-18 15:37:36 +010020 string/string* cmd
21 die Richtung(en), in die der Ausgang fuehrt
22 string/closure dest
23 das Ziel des Ausgangs mit Text/Closure
MG Mud User88f12472016-06-24 23:31:02 +020024
MG Mud User88f12472016-06-24 23:31:02 +020025
Zesstra953f9972017-02-18 15:37:36 +010026BESCHREIBUNG
27============
MG Mud User88f12472016-06-24 23:31:02 +020028
Zesstra953f9972017-02-18 15:37:36 +010029 Es wird ein Ausgang in die Richtung(en) cmd eingefuegt. Die Art des
30 Ausgangs haengt ab von dest:
MG Mud User88f12472016-06-24 23:31:02 +020031
Zesstra953f9972017-02-18 15:37:36 +010032 - ein String:
33 - mit einem Dateinamen:
34 Der Ausgang fuehrt in den Raum, den der Dateiname bezeichnet.
35 - der Form "<msg>#dateiname"
36 Der Ausgang fuehrt in den Raum, den der Dateiname bezeichnet,
37 bei der Benutzung wird jedoch statt "<name> geht nach <richtung>"
38 "<name> geht nach <msg>" ausgegeben.
39 - eine Closure:
40 Die Closure wird bei Nutzung des Ausgangs aufgerufen. Das entspricht
41 eine SpecialExit - in der gerufenen Funktion muss man den Spieler
42 selbst in den Zielraum bewegen.
43 Gegebenenfalls kann das durch AddCmd() ersetzt werden.
MG Mud User88f12472016-06-24 23:31:02 +020044
MG Mud User88f12472016-06-24 23:31:02 +020045
Zesstra953f9972017-02-18 15:37:36 +010046BEMERKUNGEN
47===========
48
49 Man kann fuer den Dateinamen des Zielraumes auch einen relativen Pfad
50 angeben. Die Auswertung erfolgt nach folgendem Schema:
51 - "./<dateiname>"
52 Es wird ein Zielraum relativ zum gleichen Verzeichnis wie dieser
53 Raum angesprochen.
54 - "../<dateiname>"
55 Es wird ein Zielraum relativ zur Verzeichnisebene ueber der
56 dieses Raumes angesprochen (analog mit mehrerern "../..")
57
58 Mittels P_HIDE_EXITS kann man Ausgaenge verstecken.
59
60 Bei der Benutzung eines Ausgangs wird der Hook H_HOOK_EXIT_USE
61 ausgeloest.
62
63
64BEISPIELE
65=========
66
67 ### normale Ausgaenge ###
68 // Beim Kommando "sueden" kommt: "<name> geht nach Sueden."
69 AddExit("sueden", "/gilden/abenteurer");
70
71 // Beim Kommando "sueden" kommt: "<name> geht in die Gilde."
72 AddExit("sueden", "in die Gilde#/gilden/abenteurer");
73
74 ### Ausgaenge mit relativen Pfaden ###
75 // Der Name des Raumes sei "/d/inseln/wargon/hafen1"
76 // Dieser Ausgang geht nach "/d/inseln/wargon/kneipe":
77 AddExit("norden", "./kneipe" );
78
79 // Und dieser nach "/d/inseln/anthea/anlege":
80 AddExit("sueden", "../anthea/anlege" );
81
82 ### dynamische Ausgaenge ###
83 // ein Ausgang soll nur von Froeschen benutzbar sein:
84
85 static int lochfkt(string dir); // Prototyp
86 ...
87 AddExit("loch", #'lochfkt);
88 // auch identisch zu:
89 // AddSpecialExit("loch", #'lochfkt); [eine Closure] oder
90 // AddSpecialExit("loch", "lochfkt"); [ein Funktionsname]
91
92 static int lochfkt(string dir) {
93 if (!(this_player()->QueryProp(P_FROG))) {
94 // Kein Frosch => passt nicht!
95 notify_fail("Du bist zu gross!\n");
96 return 0;
MG Mud User88f12472016-06-24 23:31:02 +020097 }
Zesstra953f9972017-02-18 15:37:36 +010098 // Meldungen werden im move() gleich mitgegeben
99 return this_player()->move("/room/loch", M_GO, 0,
100 "huepft ins Loch", "huepft herein");
101 }
MG Mud User88f12472016-06-24 23:31:02 +0200102
Zesstra953f9972017-02-18 15:37:36 +0100103
104SIEHE AUCH
105==========
106
107 AddSpecialExit(), GetExits(),
108 RemoveExit(), RemoveSpecialExit(),
109 GuardExit(),
110 H_HOOK_EXIT_USE, P_EXITS, P_HIDE_EXITS, /std/room/exits.c
111 ausgaenge
MG Mud User88f12472016-06-24 23:31:02 +0200112
Bugfixd1dc3fd2016-12-22 17:02:10 +0100113Letzte Aenderung: 22.12.2016, Bugfix