blob: 2f16c17516cbbd9b86f47065d82bc3c4b2e5b9ae [file] [log] [blame]
Zesstra953f9972017-02-18 15:37:36 +01001
MG Mud User88f12472016-06-24 23:31:02 +02002AddSpecialExit()
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 AddSpecialExit(string|string* cmd, string|closure func);
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 func
24 der Name der aufzurufenden Funktion/Closure
25
26
27BESCHREIBUNG
28============
29
30 Es wird ein Ausgang in die Richtung(en) cmd eingefuegt. Wird der
31 Ausgang benutzt, so wird die Closure bzw. Funktion func ausgefuehrt.
32
33 AddSpecialExit(cmd, "func") entspricht:
34 - AddExit(keys, #'func)
35
36
37BEMERKUNGEN
38===========
39
40 In func muss man den Spieler selbst in den Zielraum bewegen. Im
41 Erfolgsfall sollte man einen Wert >0 zurueckgeben, im Fehlerfall einen
42 Wert <=0.
43
44 func bekommt als Parameter einen String mit der gewaehlten
45 Bewegungsrichtung uebergeben.
46
47
48BEISPIELE
49=========
50
51 // ein Ausgang soll nur von Froeschen benutzbar sein:
52
53 AddSpecialExit("loch", "lochfkt");
54 // der gleiche Aufruf, nur anders:
55 // static int lochfkt(string dir); // Prototyp
56 // ...
57 // AddSpecialExit("loch", #'lochfkt);
58 // auch identisch zu:
59 // AddExit("loch", #'lochfkt);
60
61 static int lochfkt(string dir) {
62 if (!(this_player()->QueryProp(P_FROG))) {
63 // Kein Frosch => passt nicht!
64 notify_fail("Du bist zu gross!\n");
65 return 0;
MG Mud User88f12472016-06-24 23:31:02 +020066 }
Zesstra953f9972017-02-18 15:37:36 +010067 // Meldungen werden im move() gleich mitgegeben
68 return this_player()->move("/room/loch", M_GO, 0,
69 "huepft ins Loch", "huepft herein");
70 }
MG Mud User88f12472016-06-24 23:31:02 +020071
Zesstra953f9972017-02-18 15:37:36 +010072
73SIEHE AUCH
74==========
75
76 AddExit(), GetExits(),
77 RemoveExit(), RemoveSpecialExit(),
78 GuardExit(),
79 H_HOOK_EXIT_USE, P_EXITS, P_HIDE_EXITS, /std/room/exits.c
80 ausgaenge
MG Mud User88f12472016-06-24 23:31:02 +020081
Bugfixd1dc3fd2016-12-22 17:02:10 +010082Letzte Aenderung: 22.12.2016, Bugfix