| AddSpecialExit() |
| FUNKTION: |
| void AddSpecialExit(string|string* cmd, string|closure func); |
| |
| DEFINIERT IN: |
| /std/room/exits |
| |
| ARGUMENTE: |
| string/string* cmd |
| die Richtung(en), in die der Ausgang fuehrt |
| string/closure func |
| der Name der aufzurufenden Funktion/Closure |
| |
| BESCHREIBUNG: |
| Es wird ein Ausgang in die Richtung(en) cmd eingefuegt. Wird der |
| Ausgang benutzt, so wird die Closure bzw. Funktion func ausgefuehrt. |
| |
| AddSpecialExit(cmd, "func") entspricht: |
| - AddExit(keys, #'func) |
| |
| BEMERKUNGEN: |
| In func muss man den Spieler selbst in den Zielraum bewegen. Im |
| Erfolgsfall sollte man einen Wert >0 zurueckgeben, im Fehlerfall einen |
| Wert <=0. |
| |
| func bekommt als Parameter einen String mit der gewaehlten |
| Bewegungsrichtung uebergeben. |
| |
| BEISPIELE: |
| // ein Ausgang soll nur von Froeschen benutzbar sein: |
| |
| AddSpecialExit("loch", "lochfkt"); |
| // der gleiche Aufruf, nur anders: |
| // static int lochfkt(string dir); // Prototyp |
| // ... |
| // AddSpecialExit("loch", #'lochfkt); |
| // auch identisch zu: |
| // AddExit("loch", #'lochfkt); |
| |
| static int lochfkt(string dir) { |
| if (!(this_player()->QueryProp(P_FROG))) { |
| // Kein Frosch => passt nicht! |
| notify_fail("Du bist zu gross!\n"); |
| return 0; |
| } |
| // Meldungen werden im move() gleich mitgegeben |
| return this_player()->move("/room/loch", M_GO, 0, |
| "huepft ins Loch", "huepft herein"); |
| } |
| |
| SIEHE AUCH: |
| AddExit(), GetExits() |
| RemoveExit(), RemoveSpecialExit() |
| H_HOOK_EXIT_USE, P_EXITS, P_HIDE_EXITS, /std/room/exits.c |
| ausgaenge |
| |
| 31.01.2015, Zesstra |