Start Info Community Spielen
 
 

Morgengrauner Dokumentation

Dateipfad: /home/mud/mudlib/doc//lfun/AddDetail

AddDetail()
***********


FUNKTION
========

   void AddDetail(string|string* keys,
                  string|string*|mapping|closure desc);


DEFINIERT IN
============

   /std/thing/description.c


ARGUMENTE
=========

   keys
     String oder Array von Strings mit den Namen der Details.
   desc
     String, Mapping, String-Array oder Closure mit/zur Beschreibung.


BESCHREIBUNG
============

   Die Beschreibung der Details  wird gesetzt. Wie die Details
   bei der Untersuchung aussehen, haengt im wesentlichen vom Typ der
   Beschreibung  ab:
      ist ein String.
       Beim Untersuchen wird dieser String zurueckgegeben.
      ist ein String-Array.
       Beim Untersuchen wird zufaellig einer der Strings zurueckgegeben.
      ist ein Mapping.
       Das Mapping muss folgenden Aufbau haben:
         ([0:        "Defaulttext",
           "rasse1": "r1text", ...]).

       Die Rassenstrings muessen hierbei klein geschrieben werden, anders
       als in P_RACE und P_REAL_RACE.

       Falls fuer die Rasse des Spielers, der das Detail untersucht, ein
       Eintrag im Mapping existiert, wird der entsprechende Text
       zurueckgegeben, ansonsten der Defaulttext. Auf diese Weise sind
       rassenabhaengige Details moeglich.
      ist eine Closure.
       In diesem Fall wird die Closure ausgefuehrt und das Ergebnis
       zurueckgegeben. Die Closure bekommt dabei den Namen des Details
       als Parameter uebergeben.

   Fuer Details koennen Forscherpunkte eingetragen werden.


BEISPIELE
=========

   Ein schlichtes Detail:

     AddDetail(({"sofa","couch"}), "Eine kleine Couch.\n");

   Laengere Details sollten hierbei nicht per Hand umgebrochen werden,
   sondern man kann hierzu die Funktion break_string() nutzen:

     AddDetail("detail", break_string(
       "Du wolltest es ja nicht anders, jetzt musst Du Dir dieses "
       "fuerchterlich lange Detail durchlesen!!!", 78));

   Noetige Zeilenumbrueche bei Zeilenlaengen groesser 77 werden so
   automatisch generiert.
   Ein rassenabhaengiges Detail:

     AddDetail(({"bett","bettchen"}),
       ([0      :"Ein kleines Bett.\n", // Der Defaulttext
         "zwerg":                       // Die Rasse klein schreiben
               "Das Bett laedt geradezu zu einem Nickerchen ein.\n"]));

   Und nun ein Detail mit Closure (diese Version ersetzt das Verhalten
    von AddSpecialDetail).

     int hebel_betaetigt;
     ...
     string hebel(string str); // Funktion bekannt machen (Prototyping)
     ...
     AddDetail(({"hebel","schalter"}), #'hebel);
     ...
     string hebel(string key) {
       if(hebel_betaetigt)
         return "Der "+capitalize(key)+" steht auf EIN.\n";
       else
         return "Der "+capitalize(key)+" steht auf AUS.\n";
     }

   Man erhaelt verschiedene Ergebnisse beim Untersuchen, je nachdem
   ob das Flag hebel_betaetigt gesetzt ist oder nicht.


SIEHE AUCH
==========


Setzen: AddReadDetail(), AddSmells(), AddSounds(), AddTouchDetail() Loeschen: RemoveDetail(), RemoveReadDetail(), RemoveSmells(), RemoveSounds(), RemoveTouchDetail() Daten: P_DETAILS, P_READ_DETAILS, P_SMELLS, P_SOUNDS, P_TOUCH_DETAILS, P_SPECIAL_DETAILS Veraltet: AddSpecialDetail(), RemoveSpecialDetail(), P_READ_MSG Sonstiges: GetDetail(), break_string()

11.04.2020, Arathorn


zurück zur Übersicht

YOUTUBE | FACEBOOK | TWITTER | DISCORD | FEEDBACK | IMPRESSUM | DATENSCHUTZ 1992–2023 © MorgenGrauen.