blob: 906bc4ea56f0efcfe05612fd4dc14d66b9ac46a6 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001AddExtraLook()
Zesstra953f9972017-02-18 15:37:36 +01002**************
3
Zesstra953f9972017-02-18 15:37:36 +01004
Zesstra0c1a85a2018-02-07 23:46:50 +01005FUNKTION
6========
7
8 varargs int AddExtraLook(string look, [int duration, string key,
Zesstra953f9972017-02-18 15:37:36 +01009 string lookende, object ob]);
10
11
12DEFINIERT IN
13============
14
MG Mud User88f12472016-06-24 23:31:02 +020015 /std/living/description.c
16
Zesstra953f9972017-02-18 15:37:36 +010017
Zesstra0c1a85a2018-02-07 23:46:50 +010018ARGUMENTE
19=========
20
21 string look:
22
Zesstrae959e722025-07-09 22:11:16 +020023 * String, der in der Langbeschreibung des Lebewesens zusaetzlich
24 ausgegeben wird.
Zesstra0c1a85a2018-02-07 23:46:50 +010025
26 * zu rufender Funktionsname, wenn 'ob' angegeben ist
27
28 int duration:
29
30 * > 0: Dauer der Gueltigkeit des Extralooks in Sekunden.
31
Arathorn3696a032021-01-23 15:42:10 +010032 * 0: Unbegrenzt gueltiger Eintrag. Rebootfest. (Kann nur von
33 Blueprints registriert werden.)
Zesstra0c1a85a2018-02-07 23:46:50 +010034
35 * < 0: Bis Ende/Reboot bestehender Eintrag.
36
37 string key:
38 Schluesselwort, unter dem der Eintrag registriert wird und mit
39 dem man diesen auch mittels RemoveExtraLook() entfernen kann.
40 Sollte eindeutig sein! Ist 'key' nicht angeben, wird der
41 Objektname (object_name()) des setzenden Objekts benutzt.
42
43 string lookende:
44
45 * String, der an das Lebewesen (nur bei Spielern) ausgegeben
46 wird, wenn der eingetragene Extralook abgelaufen ist.
47
48 * zu rufender Funktionsname, wenn 'ob' angegeben ist
49
50 object ob:
51 Ein Objekt, an dem die in 'look' und 'lookende' abgelegten
Zesstrafcd44702022-10-05 23:47:39 +020052 Methoden bei Abfrage oder Ablauf aufgerufen werden.
Zesstra0c1a85a2018-02-07 23:46:50 +010053
54
Zesstra953f9972017-02-18 15:37:36 +010055BESCHREIBUNG
56============
57
MG Mud User88f12472016-06-24 23:31:02 +020058 Der Extralook erscheint in der Langbeschreibung des Lebewesens.
Zesstra953f9972017-02-18 15:37:36 +010059
Zesstra0c1a85a2018-02-07 23:46:50 +010060 Texte dafuer koennen mit dieser Funktion hinzugefuegt und verwaltet
61 werden. Wenn ihr nicht ohnehin unbedingt ein Objekt IM Spieler
Zesstrafcd44702022-10-05 23:47:39 +020062 ablegt (wie zB eine Ruestung mit einem Extralook), dann ist diese
63 Methode bevorzugt zu verwenden.
Zesstra953f9972017-02-18 15:37:36 +010064
Zesstra0c1a85a2018-02-07 23:46:50 +010065 Ueber die Angabe eines 'ob' koennen Looks auch dynamisch erstellt
66 werden, dabei werden dann 'look' bzw. 'lookende' als Methoden am
Zesstrafcd44702022-10-05 23:47:39 +020067 Objekt gerufen. Die Methoden bekommen das Living uebergeben und
68 muessen selbst umgebrochene Strings zurueckgeben. Ein so fuer
69 AddExtraLook verwendetes Objekt 'ob' muss nicht wie bisher ueblich
70 im Inv des Spieler liegen!
Zesstra953f9972017-02-18 15:37:36 +010071
Zesstra0c1a85a2018-02-07 23:46:50 +010072 Direkt angegebene Texte (also nicht von einem Objekt 'ob' bezogen)
73 werden durch replace_personal() gefiltert und unter Beibehaltung
74 existierender Umbrueche auf 78 Zeichen umgebrochen.
MG Mud User88f12472016-06-24 23:31:02 +020075
Zesstra953f9972017-02-18 15:37:36 +010076
77BEMERKUNGEN
78===========
79
Zesstrae959e722025-07-09 22:11:16 +020080 * Die Endemeldung wird nicht genau mit Ablauf der angegebenen Zeit
81 ausgegeben, sondern beim ersten Abruf der Langbeschreibung *nach*
82 Ablauf der Zeit.
Zesstra0c1a85a2018-02-07 23:46:50 +010083
Arathorn3696a032021-01-23 15:42:10 +010084 * Im Fall von permanenten Eintraegen muss das uebergbene Objekt
85 eine Blueprint sein, da Clones irgendwann (spaetestens mit
86 Reboot) zerstoert werden und der Eintrag dann bei Abfrage
Zesstrafcd44702022-10-05 23:47:39 +020087 automatisch geloescht wird. Folgerung: Clones koennen fuer
88 kurzlebige Extralooks benutzt werden, deren Ablaufzeit an ein
89 Objekt gebunden ist.
Arathorn3696a032021-01-23 15:42:10 +010090
Zesstra0c1a85a2018-02-07 23:46:50 +010091
92RUECKGABEWERTE
93==============
94
95 Siehe auch /sys/living/description.h fuer Konstanten.
96
Arathorn3696a032021-01-23 15:42:10 +010097 * XL_OK: falls der Eintrag erfolgreich registriert wurde.
Zesstra0c1a85a2018-02-07 23:46:50 +010098
Arathorn3696a032021-01-23 15:42:10 +010099 * ansonsten:
Zesstra0c1a85a2018-02-07 23:46:50 +0100100
Arathorn3696a032021-01-23 15:42:10 +0100101 * XL_NOKEY: <key> war nicht gueltig und es konnte keiner
102 ermittelt werden.
Zesstra0c1a85a2018-02-07 23:46:50 +0100103
Arathorn3696a032021-01-23 15:42:10 +0100104 * XL_INVALIDEXTRALOOK: <look> war kein gueltiger String.
Zesstra0c1a85a2018-02-07 23:46:50 +0100105
Arathorn3696a032021-01-23 15:42:10 +0100106 * XL_KEYDOESNOTEXIST: <duration> war kein Integer.
Zesstra0c1a85a2018-02-07 23:46:50 +0100107
Arathorn3696a032021-01-23 15:42:10 +0100108 * XL_KEYEXISTS: unter <key> gibt es schon einen Eintrag.
Zesstra953f9972017-02-18 15:37:36 +0100109
110
111BEISPIELE
112=========
113
Zesstra0c1a85a2018-02-07 23:46:50 +0100114 // (1) einfacher Eintrag, "fuer die Ewigkeit"
Arathorn3696a032021-01-23 15:42:10 +0100115
Zesstra953f9972017-02-18 15:37:36 +0100116 living->AddExtraLook("@WER1 hat den Drachengott der SSP besiegt.");
117
Zesstra0c1a85a2018-02-07 23:46:50 +0100118 // (2) Eintrag der nach 1h automatisch weg ist.
Arathorn3696a032021-01-23 15:42:10 +0100119
Zesstra953f9972017-02-18 15:37:36 +0100120 living->AddExtraLook("@WER1 ist ganz mit Marmelade bedeckt.", 3600);
121
Arathorn3696a032021-01-23 15:42:10 +0100122 // (3) Eintrag mit bestimmtem Schluessel, damit man ihn wieder entfernen
123 // kann.
124
Zesstra953f9972017-02-18 15:37:36 +0100125 living->AddExtraLook("@WER1 ist ganz mit Marmelade bedeckt.", 3600,
126 "humni_marmeladen_look");
127
Arathorn3696a032021-01-23 15:42:10 +0100128 // (4) Mit "Ende"-Meldung, aber kein eigener Schluessel.
129
Zesstra953f9972017-02-18 15:37:36 +0100130 living->AddExtraLook("@WER1 ist patschnass.", 1200, 0,
131 "Du bist endlich wieder trocken. Puuh.");
132
Arathorn3696a032021-01-23 15:42:10 +0100133 // (5) Mit Objekt, welches den Extralook dynamisch erzeugt.
134
Zesstra0c1a85a2018-02-07 23:46:50 +0100135 living->AddExtraLook("get_my_special_extralook", 3600, 0, 0,
136 this_object());
Arathorn3696a032021-01-23 15:42:10 +0100137
Zesstrafcd44702022-10-05 23:47:39 +0200138 public string get_my_special_extralook(object lv)
139 {
140 return
141 lv.Name() + " hat schon " + data[getuuid(lv)] + " mal gewonnen!\n");
142 }
Zesstra953f9972017-02-18 15:37:36 +0100143
Zesstra0c1a85a2018-02-07 23:46:50 +0100144 // (6) Mit Objekt, welches den Extralook dynamisch erzeugt
145 // Hier wird explizit die Blueprint uebergeben, der Extralook ist also
146 // rebootfest.
Arathorn3696a032021-01-23 15:42:10 +0100147
Zesstra953f9972017-02-18 15:37:36 +0100148 living->AddExtraLook("get_my_special_extralook", 3600, 0,
Zesstra0c1a85a2018-02-07 23:46:50 +0100149 "extralookende", blueprint(this_object()));
150
Zesstra953f9972017-02-18 15:37:36 +0100151
152SIEHE AUCH
153==========
154
Zesstra0c1a85a2018-02-07 23:46:50 +0100155 Verwandt:
Zesstra09cd00b2019-11-28 21:23:35 +0100156 RemoveExtraLook(), P_INTERNAL_EXTRA_LOOK, HasExtraLook()
MG Mud User88f12472016-06-24 23:31:02 +0200157
Zesstra0c1a85a2018-02-07 23:46:50 +0100158 Sonstiges:
Zesstra6cadc1b2018-11-15 22:27:32 +0100159 replace_personal(), break_string()
Zesstra0c1a85a2018-02-07 23:46:50 +0100160
161 Fuer Spielerobjekte:
Zesstra6cadc1b2018-11-15 22:27:32 +0100162 P_EXTRA_LOOK
Zesstra0c1a85a2018-02-07 23:46:50 +0100163
Zesstrafcd44702022-10-05 23:47:39 +0200164Letzte Aenderung: 21.09.2022, Bugfix