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