blob: 6c619fdd2a1a000118f16903f83bd9e0a8597d16 [file] [log] [blame]
Zesstra18626972017-01-31 10:38:27 +01001AddExit()
2=========
3
4FUNKTION
5--------
6::
7
8 void AddExit(string|string* cmd, closure|string dest);
9
10DEFINIERT IN
11------------
12::
13
14 /std/room/exits
15
16ARGUMENTE
17---------
18::
19
20 string/string* cmd
21 die Richtung(en), in die der Ausgang fuehrt
22 string/closure dest
23 das Ziel des Ausgangs mit Text/Closure
24
25BESCHREIBUNG
26------------
27::
28
29 Es wird ein Ausgang in die Richtung(en) cmd eingefuegt. Die Art des
30 Ausgangs haengt ab von dest:
31
32 - 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.
44
45BEMERKUNGEN
46-----------
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
63BEISPIELE
64---------
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;
97 }
98 // Meldungen werden im move() gleich mitgegeben
99 return this_player()->move("/room/loch", M_GO, 0,
100 "huepft ins Loch", "huepft herein");
101 }
102
103SIEHE AUCH
104----------
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
112
113Letzte Aenderung: 22.12.2016, Bugfix
114