blob: a0706825083c3505c80d0d18eac15522ff7b2c82 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001AddExit()
2FUNKTION:
3 void AddExit(string|string* cmd, closure|string dest);
4
5DEFINIERT IN:
6 /std/room/exits
7
8ARGUMENTE:
9 string/string* cmd
10 die Richtung(en), in die der Ausgang fuehrt
11 string/closure dest
12 das Ziel des Ausgangs mit Text/Closure
13
14BESCHREIBUNG:
15
16 Es wird ein Ausgang in die Richtung(en) cmd eingefuegt. Die Art des
17 Ausgangs haengt ab von dest:
18
19 - ein String:
20 - mit einem Dateinamen:
21 Der Ausgang fuehrt in den Raum, den der Dateiname bezeichnet.
22 - der Form "<msg>#dateiname"
23 Der Ausgang fuehrt in den Raum, den der Dateiname bezeichnet,
24 bei der Benutzung wird jedoch statt "<name> geht nach <richtung>"
25 "<name> geht nach <msg>" ausgegeben.
26 - eine Closure:
27 Die Closure wird bei Nutzung des Ausgangs aufgerufen. Das entspricht
28 eine SpecialExit - in der gerufenen Funktion muss man den Spieler
29 selbst in den Zielraum bewegen.
30 Gegebenenfalls kann das durch AddCmd() ersetzt werden.
31
32BEMERKUNGEN:
33 Man kann fuer den Dateinamen des Zielraumes auch einen relativen Pfad
34 angeben. Die Auswertung erfolgt nach folgendem Schema:
35 - "./<dateiname>"
36 Es wird ein Zielraum relativ zum gleichen Verzeichnis wie dieser
37 Raum angesprochen.
38 - "../<dateiname>"
39 Es wird ein Zielraum relativ zur Verzeichnisebene ueber der
40 dieses Raumes angesprochen (analog mit mehrerern "../..")
41
42 Mittels P_HIDE_EXITS kann man Ausgaenge verstecken.
43
44 Bei der Benutzung eines Ausgangs wird der Hook H_HOOK_EXIT_USE
45 ausgeloest.
46
47BEISPIELE:
48 ### normale Ausgaenge ###
49 // Beim Kommando "sueden" kommt: "<name> geht nach Sueden."
50 AddExit("sueden", "/gilden/abenteurer");
51
52 // Beim Kommando "sueden" kommt: "<name> geht in die Gilde."
53 AddExit("sueden", "in die Gilde#/gilden/abenteurer");
54
55 ### Ausgaenge mit relativen Pfaden ###
56 // Der Name des Raumes sei "/d/inseln/wargon/hafen1"
57 // Dieser Ausgang geht nach "/d/inseln/wargon/kneipe":
58 AddExit("norden", "./kneipe" );
59
60 // Und dieser nach "/d/inseln/anthea/anlege":
61 AddExit("sueden", "../anthea/anlege" );
62
63 ### dynamische Ausgaenge ###
64 // ein Ausgang soll nur von Froeschen benutzbar sein:
65
66 static int lochfkt(string dir); // Prototyp
67 ...
68 AddExit("loch", #'lochfkt);
69 // auch identisch zu:
70 // AddSpecialExit("loch", #'lochfkt); [eine Closure] oder
71 // AddSpecialExit("loch", "lochfkt"); [ein Funktionsname]
72
73 static int lochfkt(string dir) {
74 if (!(this_player()->QueryProp(P_FROG))) {
75 // Kein Frosch => passt nicht!
76 notify_fail("Du bist zu gross!\n");
77 return 0;
78 }
79 // Meldungen werden im move() gleich mitgegeben
80 return this_player()->move("/room/loch", M_GO, 0,
81 "huepft ins Loch", "huepft herein");
82 }
83
84SIEHE AUCH:
85 AddSpecialExit(), GetExits()
86 RemoveExit(), RemoveSpecialExit(),
87 H_HOOK_EXIT_USE, P_EXITS, P_HIDE_EXITS, /std/room/exits.c
88 ausgaenge
89
9031.01.2015, Zesstra
91