| 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: <key> war nicht gueltig und es konnte keiner |
| ermittelt werden. |
| |
| * XL_INVALIDEXTRALOOK: <look> war kein gueltiger String. |
| |
| * XL_KEYDOESNOTEXIST: <duration> war kein Integer. |
| |
| * XL_KEYEXISTS: unter <key> 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 |