blob: de7e5b85090ae3761fa475b4f0a0fdf7ca97dee5 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001AddSpecialExit()
2FUNKTION:
3 void AddSpecialExit(string|string* cmd, string|closure func);
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 func
12 der Name der aufzurufenden Funktion/Closure
13
14BESCHREIBUNG:
15 Es wird ein Ausgang in die Richtung(en) cmd eingefuegt. Wird der
16 Ausgang benutzt, so wird die Closure bzw. Funktion func ausgefuehrt.
17
18 AddSpecialExit(cmd, "func") entspricht:
19 - AddExit(keys, #'func)
20
21BEMERKUNGEN:
22 In func muss man den Spieler selbst in den Zielraum bewegen. Im
23 Erfolgsfall sollte man einen Wert >0 zurueckgeben, im Fehlerfall einen
24 Wert <=0.
25
26 func bekommt als Parameter einen String mit der gewaehlten
27 Bewegungsrichtung uebergeben.
28
29BEISPIELE:
30 // ein Ausgang soll nur von Froeschen benutzbar sein:
31
32 AddSpecialExit("loch", "lochfkt");
33 // der gleiche Aufruf, nur anders:
34 // static int lochfkt(string dir); // Prototyp
35 // ...
36 // AddSpecialExit("loch", #'lochfkt);
37 // auch identisch zu:
38 // AddExit("loch", #'lochfkt);
39
40 static int lochfkt(string dir) {
41 if (!(this_player()->QueryProp(P_FROG))) {
42 // Kein Frosch => passt nicht!
43 notify_fail("Du bist zu gross!\n");
44 return 0;
45 }
46 // Meldungen werden im move() gleich mitgegeben
47 return this_player()->move("/room/loch", M_GO, 0,
48 "huepft ins Loch", "huepft herein");
49 }
50
51SIEHE AUCH:
52 AddExit(), GetExits()
53 RemoveExit(), RemoveSpecialExit()
54 H_HOOK_EXIT_USE, P_EXITS, P_HIDE_EXITS, /std/room/exits.c
55 ausgaenge
56
5731.01.2015, Zesstra