Morgengrauner Dokumentation
Dateipfad: /home/mud/mudlib/doc/lfun/AddExtraLookAddExtraLook()
**************
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