MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | AddSpecialExit() |
| 2 | FUNKTION: |
| 3 | void AddSpecialExit(string|string* cmd, string|closure func); |
| 4 | |
| 5 | DEFINIERT IN: |
| 6 | /std/room/exits |
| 7 | |
| 8 | ARGUMENTE: |
| 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 | |
| 14 | BESCHREIBUNG: |
| 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 | |
| 21 | BEMERKUNGEN: |
| 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 | |
| 29 | BEISPIELE: |
| 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 | |
| 51 | SIEHE AUCH: |
| 52 | AddExit(), GetExits() |
| 53 | RemoveExit(), RemoveSpecialExit() |
| 54 | H_HOOK_EXIT_USE, P_EXITS, P_HIDE_EXITS, /std/room/exits.c |
| 55 | ausgaenge |
| 56 | |
| 57 | 31.01.2015, Zesstra |