New file.
Change-Id: I4595f4cd29e82998d93a73a85c359432002fe504
diff --git a/README b/README
index 9771251..6f9818b 100644
--- a/README
+++ b/README
@@ -7,3 +7,6 @@
room/huette2.c
3. Zwei Raeume, die durch Ausgaenge miteinander verbunden sind
room/huette3a.c, room/huette3b.c
+4. Eine oberflaechliche Kurzeinfuehrung in Commands. Viel zu kurz, aber
+ irgendwo muss man ja anfangen.
+ room/huette4.c
diff --git a/room/huette4.c b/room/huette4.c
new file mode 100644
index 0000000..d9ce77b
--- /dev/null
+++ b/room/huette4.c
@@ -0,0 +1,77 @@
+inherit "/std/room";
+
+#include __PATH__(1)"defs.h"
+
+int guckstu();
+
+
+protected void create() {
+ ::create();
+
+ SetProp(P_INT_SHORT, "Eine schummrige Huette");
+ SetProp(P_INT_LONG, BSLF(
+ "Viel ist hier in der Huette immer noch nicht los. Aber Du siehst "
+ "in der Wand einen Knopf und einen Spiegel."));
+
+ SetProp(P_LIGHT, 1);
+ SetProp(P_INDOORS, 1);
+ SetProp(P_LIGHT_TYPE, LT_GLOWING);
+
+
+ AddDetail("knopf", BSLF(
+ "Es ist ein, aeh, Druckknopf".));
+ AddDetail("spiegel", BSLF(
+ "Du kannst hineinblicken."));
+
+
+ /* Bitte nicht erschrecken, jetzt wirds eklig. Aber Du kannst fuer den
+ Anfang ein wenig mit den Beispielen herumspielen, ich habe versucht,
+ die haeufigsten Faelle, wie man Commands benutzt, abzudecken.
+ Die Erklaerungen habe ich teilweise stark vereinfacht, damit es nicht
+ zu kompliziert wird.
+ Ausfuehrlich steht das alles in "man addcmd" und "man addcmd_bsp",
+ aber diese Hilfeseiten sind sehr lang und vermutlich fuer den Anfang
+ eher verwirrend. Ausserdem gibt es in /doc/beispiele etwas zu AddCmd. */
+
+
+ // 1. Beispiel: Ein Kommando, das nur eine Meldung ausgibt.
+
+ /* Diese erste Zeile nimmst Du am Besten erst einmal so als gegeben hin,
+ in die sieben Abgruende von AddCmd() steigen wir spaeter noch herab. */
+ AddCmd("drueck|druecke&knopf|druckknopf&\n\bimpossible", 0,
+ /* Der dritte Parameter ist ein String, in dem alles weitere aneinander-
+ gefuegt steht, getrennt durch "|" und "^".
+ Zuerst steht die Nachfrage, falls statt "knopf" bzw. "druckknopf" ein
+ falsches Wort eingegeben wurde oder es ganz fehlt: */
+ "Was willst Du @verben?|"
+ // Dann die Ausgabe an den Spieler:
+ "Du drueckst den Knopf. Ein lautes Klingeln ertoent, das sofort "
+ "verstummt, als Du den Knopf loslaesst.^",
+ // Dann die Ausgabe an alle anderen im Raum:
+ "@WER1 klingelt Sturm.^");
+
+
+ // 2. Beispiel: Ein Kommando, wo etwas dynamisch passiert.
+
+ /* Hier steht als zweiter Parameter eine Closure, die gerufen wird. Man
+ kann da alles moegliche machen, der Rueckgabewert entscheidet, ob
+ der Aufruf erfolgreich (!=0) war, oder ob sich das Kommando gar nicht
+ angesprochen fuehlt und die Syntax an anderen Objekten im Raum
+ getestet wird (==0). */
+ AddCmd("blick|blicke&spiegel", #'guckstu,
+ /* Hier auch wieder die Nachfrage, falls "spiegel" nicht oder falsch
+ eingegeben wurde. Die restlichen Ausgaben muss guckstu() erledigen: */
+ "Wo hinein moechtest Du blicken?");
+}
+
+/* Normalerweise sollte man seine Funktionen etwas sinnvoller benennen, aber
+ naja, ist schon spaet ... */
+int guckstu() {
+ tell_object(TP, BSLF(
+ "HILFE! Ein haessliches Monster schaut Dich an:\n"+
+ TP->long());
+ tell_room(TO, BSLF(
+ TP->Name()+" schaut entsetzt in den Spiegel."), ({TP}));
+ return 1;
+ }
+