Beispieldateien

Einfache Räume

----------

// Ein einfacher Raum mit einer ebenso einfachen Aktion
// ----------------------------------------------------
// 05.06.2007 Sunrise@Wunderland

inherit "std/room"; // Standard-Raum erben

#include <properties.h> // wichtige Properties holen
#include <defines.h>    // praktische Makros holen, z.B. PL fuer this_player()
                        // das spart uns spaeter Schreibarbeit

void create()
{
  // Der Standard-Raum braucht auch sein create()
  // NIEMALS VERGESSEN!
  ::create();
  // Der Raum ist draussen:
  SetProp(P_INDOORS, 0);
  // Der Raum ist tagsueber hell, nachts benoetigt man eine Lichtquelle
  SetProp(P_LIGHT, 1);
  // die Kurzbeschreibung des Raumes
  SetProp(P_INT_SHORT, "Auf einer Wiese");
  // die Langbeschreibung des Raumes, die man auch via "schau" sieht
  SetProp(P_INT_LONG, "Eine huebsche bunte Wiese. Die Blumen wiegen "
    "sich im lauen Sommerwind und die Voegel zwitschern. Ein Sonnenstrahl "
    "kitzelt Dich an der Nase und laedt Dich zum Traeumen ein.");

  // ein paar Details
  AddDetail(({"boden", "gras"}), // Einen Boden sollte es immer geben
    "Dichtes gruenes Gras waechst hier und dazwischen lauter bunte "
    "Sommerblumen.");
  AddDetail(({"sonnenstrahl"}),
    "Er kitzelt Deine Nase.");
  AddDetail(({"nase"}),
    "Hatschi!");
  // und weitere Details nach dem gleichen Schema

  // wir wollen traeumen
  // Der erste Teil des Kommandos ist quasi das Eingabe-Muster, das 
  // der Spieler erfuellen muss. In diesem Fall kann er entweder 
  // 'traeum' oder 'traeume' angeben. Das | steht fuer 'oder'.
  // Danach steht die Funktion, die aufgerufen werden soll. Diese 
  // steht dann ausserhalb des 'create()'
  AddCmd("traeum|traeume", "traeum_funktion");
}

// Kommandos, die ueber AddCmd eingebaut werden, erfordern immer eine
// Funktion vom Typ int.
int traeum_funktion()
{
  // jetzt geben wir einen Text an den Spieler aus
  // da es ein langer Text ist, lassen wir ihn mit break_string 
  // umbrechen
  write(break_string(
    "Du schliesst die Augen und legst Dich ins weiche Gras zurueck. "
    "Der laue Sommerwind streift ueber Dein Haar und die Hitze flimmert "
    "rotbunt vor Deinen geschlossenen Augen. Nach einer Weile stehst "
    "Du wieder auf, bereit zu neuen Abenteuern."));

  // und jetzt einen Text an die Umstehenden
  // PL ist die Abkuerzung fuer this_player(). Das ist in <defines.h>
  // definiert. this_player() ist das Objekt des agierenden Spielers
  // name() gibt uns den Namen dessen an
  // say() hat den Aufbau: say(text, an_wen_soll_der_text_nicht_gehen);
  say(break_string(
    PL->name(WER, NAME_DEF|NAME_CAP)+" legt sich ins weiche Gras und "
    "ruht sich etwas aus."), PL);

  // jetzt sind wir fertig, die Funktion wird mit 
  return 1;
  // abgeschlossen
}