Start Info Community Spielen
 
 

Morgengrauner Dokumentation

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

AddExtraLook()
**************


FUNKTION
========

   varargs int AddExtraLook(string look, [int duration, string key,
   string lookende, object ob]);


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

   /std/living/description.c


ARGUMENTE
=========

   string look:

      * String, der in der Langbeschreibung des Lebewesens zusaetzlich
        ausgegeben wird.

      * zu rufender Funktionsname, wenn 'ob' angegeben ist

   int duration:

      * > 0: Dauer der Gueltigkeit des Extralooks in Sekunden.

      * 0:   Unbegrenzt gueltiger Eintrag. Rebootfest. (Kann nur von
        Blueprints registriert werden.)

      * < 0: Bis Ende/Reboot bestehender Eintrag.

   string key:
      Schluesselwort, unter dem der Eintrag registriert wird und mit
      dem man diesen auch mittels RemoveExtraLook() entfernen kann.
      Sollte eindeutig sein! Ist 'key' nicht angeben, wird der
      Objektname (object_name()) des setzenden Objekts benutzt.

   string lookende:

      * String, der an das Lebewesen (nur bei Spielern) ausgegeben
        wird, wenn der eingetragene Extralook abgelaufen ist.

      * zu rufender Funktionsname, wenn 'ob' angegeben ist

   object ob:
      Ein Objekt, an dem die in 'look' und 'lookende' abgelegten
      Methoden bei Abfrage oder Ablauf aufgerufen werden.


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

   Der Extralook erscheint in der Langbeschreibung des Lebewesens.

   Texte dafuer koennen mit dieser Funktion hinzugefuegt und verwaltet
   werden. Wenn ihr nicht ohnehin unbedingt ein Objekt IM Spieler
   ablegt (wie zB eine Ruestung mit einem Extralook), dann ist diese
   Methode bevorzugt zu verwenden.

   Ueber die Angabe eines 'ob' koennen Looks auch dynamisch erstellt
   werden, dabei werden dann 'look' bzw. 'lookende' als Methoden am
   Objekt gerufen. Die Methoden bekommen das Living uebergeben und
   muessen selbst umgebrochene Strings zurueckgeben. Ein so fuer
   AddExtraLook verwendetes Objekt 'ob' muss nicht wie bisher ueblich
   im Inv des Spieler liegen!

   Direkt angegebene Texte (also nicht von einem Objekt 'ob' bezogen)
   werden durch replace_personal() gefiltert und unter Beibehaltung
   existierender Umbrueche auf 78 Zeichen umgebrochen.


BEMERKUNGEN
===========

   * Die Endemeldung wird nicht genau mit Ablauf der angegebenen Zeit
     ausgegeben, sondern beim ersten Abruf der Langbeschreibung *nach*
     Ablauf der Zeit.

   * Im Fall von permanenten Eintraegen muss das uebergbene Objekt
     eine Blueprint sein, da Clones irgendwann (spaetestens mit
     Reboot) zerstoert werden und der Eintrag dann bei Abfrage
     automatisch geloescht wird. Folgerung: Clones koennen fuer
     kurzlebige Extralooks benutzt werden, deren Ablaufzeit an ein
     Objekt gebunden ist.


RUECKGABEWERTE
==============

   Siehe auch /sys/living/description.h fuer Konstanten.

   * XL_OK: falls der Eintrag erfolgreich registriert wurde.

   * ansonsten:

     * XL_NOKEY:  war nicht gueltig und es konnte keiner
       ermittelt werden.

     * XL_INVALIDEXTRALOOK:  war kein gueltiger String.

     * XL_KEYDOESNOTEXIST:  war kein Integer.

     * XL_KEYEXISTS: unter  gibt es schon einen Eintrag.


BEISPIELE
=========

   // (1) einfacher Eintrag, "fuer die Ewigkeit"

   living->AddExtraLook("@WER1 hat den Drachengott der SSP besiegt.");

   // (2) Eintrag der nach 1h automatisch weg ist.

   living->AddExtraLook("@WER1 ist ganz mit Marmelade bedeckt.", 3600);

   // (3) Eintrag mit bestimmtem Schluessel, damit man ihn wieder entfernen
   // kann.

   living->AddExtraLook("@WER1 ist ganz mit Marmelade bedeckt.", 3600,
                        "humni_marmeladen_look");

   // (4) Mit "Ende"-Meldung, aber kein eigener Schluessel.

   living->AddExtraLook("@WER1 ist patschnass.", 1200, 0,
                        "Du bist endlich wieder trocken. Puuh.");

   // (5) Mit Objekt, welches den Extralook dynamisch erzeugt.

   living->AddExtraLook("get_my_special_extralook", 3600, 0, 0,
                        this_object());

   public string get_my_special_extralook(object lv)
   {
     return
       lv.Name() + " hat schon " + data[getuuid(lv)] + " mal gewonnen!\n");
   }

   // (6) Mit Objekt, welches den Extralook dynamisch erzeugt
   // Hier wird explizit die Blueprint uebergeben, der Extralook ist also
   // rebootfest.

   living->AddExtraLook("get_my_special_extralook", 3600, 0,
                        "extralookende", blueprint(this_object()));


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


Verwandt: RemoveExtraLook(), P_INTERNAL_EXTRA_LOOK, HasExtraLook()

Sonstiges: replace_personal(), break_string()

Fuer Spielerobjekte: P_EXTRA_LOOK

Letzte Aenderung: 21.09.2022, Bugfix


zurück zur Übersicht

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