notstrom | 72ff899 | 2018-11-04 20:34:21 +0100 | [diff] [blame] | 1 | inherit "/std/room"; |
| 2 | |
| 3 | #include __PATH__(1)"defs.h" |
| 4 | |
| 5 | int guckstu(); |
| 6 | |
| 7 | |
| 8 | protected void create() { |
| 9 | ::create(); |
| 10 | |
| 11 | SetProp(P_INT_SHORT, "Eine schummrige Huette"); |
| 12 | SetProp(P_INT_LONG, BSLF( |
| 13 | "Viel ist hier in der Huette immer noch nicht los. Aber Du siehst " |
| 14 | "in der Wand einen Knopf und einen Spiegel.")); |
| 15 | |
| 16 | SetProp(P_LIGHT, 1); |
| 17 | SetProp(P_INDOORS, 1); |
| 18 | SetProp(P_LIGHT_TYPE, LT_GLOWING); |
| 19 | |
| 20 | |
| 21 | AddDetail("knopf", BSLF( |
notstrom | c7988b5 | 2018-11-04 20:36:40 +0100 | [diff] [blame] | 22 | "Es ist ein, aeh, Druckknopf.")); |
notstrom | 72ff899 | 2018-11-04 20:34:21 +0100 | [diff] [blame] | 23 | AddDetail("spiegel", BSLF( |
| 24 | "Du kannst hineinblicken.")); |
| 25 | |
| 26 | |
| 27 | /* Bitte nicht erschrecken, jetzt wirds eklig. Aber Du kannst fuer den |
| 28 | Anfang ein wenig mit den Beispielen herumspielen, ich habe versucht, |
| 29 | die haeufigsten Faelle, wie man Commands benutzt, abzudecken. |
| 30 | Die Erklaerungen habe ich teilweise stark vereinfacht, damit es nicht |
| 31 | zu kompliziert wird. |
| 32 | Ausfuehrlich steht das alles in "man addcmd" und "man addcmd_bsp", |
| 33 | aber diese Hilfeseiten sind sehr lang und vermutlich fuer den Anfang |
| 34 | eher verwirrend. Ausserdem gibt es in /doc/beispiele etwas zu AddCmd. */ |
| 35 | |
| 36 | |
| 37 | // 1. Beispiel: Ein Kommando, das nur eine Meldung ausgibt. |
| 38 | |
| 39 | /* Diese erste Zeile nimmst Du am Besten erst einmal so als gegeben hin, |
| 40 | in die sieben Abgruende von AddCmd() steigen wir spaeter noch herab. */ |
| 41 | AddCmd("drueck|druecke&knopf|druckknopf&\n\bimpossible", 0, |
| 42 | /* Der dritte Parameter ist ein String, in dem alles weitere aneinander- |
| 43 | gefuegt steht, getrennt durch "|" und "^". |
| 44 | Zuerst steht die Nachfrage, falls statt "knopf" bzw. "druckknopf" ein |
| 45 | falsches Wort eingegeben wurde oder es ganz fehlt: */ |
| 46 | "Was willst Du @verben?|" |
| 47 | // Dann die Ausgabe an den Spieler: |
| 48 | "Du drueckst den Knopf. Ein lautes Klingeln ertoent, das sofort " |
notstrom | 7390ca8 | 2018-11-04 21:14:24 +0100 | [diff] [blame] | 49 | "verstummt, als Du den Knopf loslaesst.^" |
notstrom | 62f5d97 | 2018-11-08 18:22:04 +0100 | [diff] [blame] | 50 | /* Dann die Ausgabe an alle anderen im Raum. Beachte, dass der gesamte |
| 51 | String durch replace_personal() gejagt wird, die zugehoerige Manpage |
| 52 | klaert Dich auf, welche Ausdruecke erkannt und ersetzt werden. */ |
notstrom | 72ff899 | 2018-11-04 20:34:21 +0100 | [diff] [blame] | 53 | "@WER1 klingelt Sturm.^"); |
| 54 | |
| 55 | |
| 56 | // 2. Beispiel: Ein Kommando, wo etwas dynamisch passiert. |
| 57 | |
| 58 | /* Hier steht als zweiter Parameter eine Closure, die gerufen wird. Man |
| 59 | kann da alles moegliche machen, der Rueckgabewert entscheidet, ob |
| 60 | der Aufruf erfolgreich (!=0) war, oder ob sich das Kommando gar nicht |
| 61 | angesprochen fuehlt und die Syntax an anderen Objekten im Raum |
| 62 | getestet wird (==0). */ |
| 63 | AddCmd("blick|blicke&spiegel", #'guckstu, |
| 64 | /* Hier auch wieder die Nachfrage, falls "spiegel" nicht oder falsch |
| 65 | eingegeben wurde. Die restlichen Ausgaben muss guckstu() erledigen: */ |
| 66 | "Wo hinein moechtest Du blicken?"); |
| 67 | } |
| 68 | |
| 69 | /* Normalerweise sollte man seine Funktionen etwas sinnvoller benennen, aber |
| 70 | naja, ist schon spaet ... */ |
| 71 | int guckstu() { |
| 72 | tell_object(TP, BSLF( |
notstrom | 26861be | 2018-11-04 20:45:33 +0100 | [diff] [blame] | 73 | "\nHILFE! Ein schreckliches Monster schaut Dich an:\n\n"+ |
notstrom | e5e8a01 | 2018-11-04 20:37:37 +0100 | [diff] [blame] | 74 | TP->long())); |
notstrom | 72ff899 | 2018-11-04 20:34:21 +0100 | [diff] [blame] | 75 | tell_room(TO, BSLF( |
notstrom | 8522882 | 2018-11-04 20:52:42 +0100 | [diff] [blame] | 76 | TP->Name()+" schaut entsetzt in den Spiegel."), |
| 77 | /* Die Meldung geht an alle ausser this_player(), also denjenigen, der |
notstrom | 7390ca8 | 2018-11-04 21:14:24 +0100 | [diff] [blame] | 78 | den Funktionsaufruf von guckstu() ausgeloest hat: */ |
notstrom | 8522882 | 2018-11-04 20:52:42 +0100 | [diff] [blame] | 79 | ({TP})); |
notstrom | 72ff899 | 2018-11-04 20:34:21 +0100 | [diff] [blame] | 80 | return 1; |
notstrom | 5e8086a | 2018-11-04 20:49:08 +0100 | [diff] [blame] | 81 | } |
notstrom | 72ff899 | 2018-11-04 20:34:21 +0100 | [diff] [blame] | 82 | |