blob: c283ba5553b8186cd2e78c9272447d61f0ac789c [file] [log] [blame]
Zesstra953f9972017-02-18 15:37:36 +01001
MG Mud User88f12472016-06-24 23:31:02 +02002AddExtraLook()
Zesstra953f9972017-02-18 15:37:36 +01003**************
4
Zesstra953f9972017-02-18 15:37:36 +01005
Zesstra0c1a85a2018-02-07 23:46:50 +01006FUNKTION
7========
8
9 varargs int AddExtraLook(string look, [int duration, string key,
Zesstra953f9972017-02-18 15:37:36 +010010 string lookende, object ob]);
11
12
13DEFINIERT IN
14============
15
MG Mud User88f12472016-06-24 23:31:02 +020016 /std/living/description.c
17
Zesstra953f9972017-02-18 15:37:36 +010018
Zesstra0c1a85a2018-02-07 23:46:50 +010019ARGUMENTE
20=========
21
22 string look:
23
24 * String, der in der Langbeschreibung des Lebewesens
25 zusaetzlich ausgegeben wird.
26
27 * zu rufender Funktionsname, wenn 'ob' angegeben ist
28
29 int duration:
30
31 * > 0: Dauer der Gueltigkeit des Extralooks in Sekunden.
32
Arathorn3696a032021-01-23 15:42:10 +010033 * 0: Unbegrenzt gueltiger Eintrag. Rebootfest. (Kann nur von
34 Blueprints registriert werden.)
Zesstra0c1a85a2018-02-07 23:46:50 +010035
36 * < 0: Bis Ende/Reboot bestehender Eintrag.
37
38 string key:
39 Schluesselwort, unter dem der Eintrag registriert wird und mit
40 dem man diesen auch mittels RemoveExtraLook() entfernen kann.
41 Sollte eindeutig sein! Ist 'key' nicht angeben, wird der
42 Objektname (object_name()) des setzenden Objekts benutzt.
43
44 string lookende:
45
46 * String, der an das Lebewesen (nur bei Spielern) ausgegeben
47 wird, wenn der eingetragene Extralook abgelaufen ist.
48
49 * zu rufender Funktionsname, wenn 'ob' angegeben ist
50
51 object ob:
52 Ein Objekt, an dem die in 'look' und 'lookende' abgelegten
Zesstrafcd44702022-10-05 23:47:39 +020053 Methoden bei Abfrage oder Ablauf aufgerufen werden.
Zesstra0c1a85a2018-02-07 23:46:50 +010054
55
Zesstra953f9972017-02-18 15:37:36 +010056BESCHREIBUNG
57============
58
MG Mud User88f12472016-06-24 23:31:02 +020059 Der Extralook erscheint in der Langbeschreibung des Lebewesens.
Zesstra953f9972017-02-18 15:37:36 +010060
Zesstra0c1a85a2018-02-07 23:46:50 +010061 Texte dafuer koennen mit dieser Funktion hinzugefuegt und verwaltet
62 werden. Wenn ihr nicht ohnehin unbedingt ein Objekt IM Spieler
Zesstrafcd44702022-10-05 23:47:39 +020063 ablegt (wie zB eine Ruestung mit einem Extralook), dann ist diese
64 Methode bevorzugt zu verwenden.
Zesstra953f9972017-02-18 15:37:36 +010065
Zesstra0c1a85a2018-02-07 23:46:50 +010066 Ueber die Angabe eines 'ob' koennen Looks auch dynamisch erstellt
67 werden, dabei werden dann 'look' bzw. 'lookende' als Methoden am
Zesstrafcd44702022-10-05 23:47:39 +020068 Objekt gerufen. Die Methoden bekommen das Living uebergeben und
69 muessen selbst umgebrochene Strings zurueckgeben. Ein so fuer
70 AddExtraLook verwendetes Objekt 'ob' muss nicht wie bisher ueblich
71 im Inv des Spieler liegen!
Zesstra953f9972017-02-18 15:37:36 +010072
Zesstra0c1a85a2018-02-07 23:46:50 +010073 Direkt angegebene Texte (also nicht von einem Objekt 'ob' bezogen)
74 werden durch replace_personal() gefiltert und unter Beibehaltung
75 existierender Umbrueche auf 78 Zeichen umgebrochen.
MG Mud User88f12472016-06-24 23:31:02 +020076
Zesstra953f9972017-02-18 15:37:36 +010077
78BEMERKUNGEN
79===========
80
Zesstrafcd44702022-10-05 23:47:39 +020081 * Die Endemeldung wird nicht genau mit Ablauf der angegebenen
82 Zeit ausgegeben, sondern beim ersten Abruf der Langbeschreibung
83 *nach* Ablauf der Zeit.
Zesstra0c1a85a2018-02-07 23:46:50 +010084
Arathorn3696a032021-01-23 15:42:10 +010085 * Im Fall von permanenten Eintraegen muss das uebergbene Objekt
86 eine Blueprint sein, da Clones irgendwann (spaetestens mit
87 Reboot) zerstoert werden und der Eintrag dann bei Abfrage
Zesstrafcd44702022-10-05 23:47:39 +020088 automatisch geloescht wird. Folgerung: Clones koennen fuer
89 kurzlebige Extralooks benutzt werden, deren Ablaufzeit an ein
90 Objekt gebunden ist.
Arathorn3696a032021-01-23 15:42:10 +010091
Zesstra0c1a85a2018-02-07 23:46:50 +010092
93RUECKGABEWERTE
94==============
95
96 Siehe auch /sys/living/description.h fuer Konstanten.
97
Arathorn3696a032021-01-23 15:42:10 +010098 * XL_OK: falls der Eintrag erfolgreich registriert wurde.
Zesstra0c1a85a2018-02-07 23:46:50 +010099
Arathorn3696a032021-01-23 15:42:10 +0100100 * ansonsten:
Zesstra0c1a85a2018-02-07 23:46:50 +0100101
Arathorn3696a032021-01-23 15:42:10 +0100102 * XL_NOKEY: <key> war nicht gueltig und es konnte keiner
103 ermittelt werden.
Zesstra0c1a85a2018-02-07 23:46:50 +0100104
Arathorn3696a032021-01-23 15:42:10 +0100105 * XL_INVALIDEXTRALOOK: <look> war kein gueltiger String.
Zesstra0c1a85a2018-02-07 23:46:50 +0100106
Arathorn3696a032021-01-23 15:42:10 +0100107 * XL_KEYDOESNOTEXIST: <duration> war kein Integer.
Zesstra0c1a85a2018-02-07 23:46:50 +0100108
Arathorn3696a032021-01-23 15:42:10 +0100109 * XL_KEYEXISTS: unter <key> gibt es schon einen Eintrag.
Zesstra953f9972017-02-18 15:37:36 +0100110
111
112BEISPIELE
113=========
114
Zesstra0c1a85a2018-02-07 23:46:50 +0100115 // (1) einfacher Eintrag, "fuer die Ewigkeit"
Arathorn3696a032021-01-23 15:42:10 +0100116
Zesstra953f9972017-02-18 15:37:36 +0100117 living->AddExtraLook("@WER1 hat den Drachengott der SSP besiegt.");
118
Zesstra0c1a85a2018-02-07 23:46:50 +0100119 // (2) Eintrag der nach 1h automatisch weg ist.
Arathorn3696a032021-01-23 15:42:10 +0100120
Zesstra953f9972017-02-18 15:37:36 +0100121 living->AddExtraLook("@WER1 ist ganz mit Marmelade bedeckt.", 3600);
122
Arathorn3696a032021-01-23 15:42:10 +0100123 // (3) Eintrag mit bestimmtem Schluessel, damit man ihn wieder entfernen
124 // kann.
125
Zesstra953f9972017-02-18 15:37:36 +0100126 living->AddExtraLook("@WER1 ist ganz mit Marmelade bedeckt.", 3600,
127 "humni_marmeladen_look");
128
Arathorn3696a032021-01-23 15:42:10 +0100129 // (4) Mit "Ende"-Meldung, aber kein eigener Schluessel.
130
Zesstra953f9972017-02-18 15:37:36 +0100131 living->AddExtraLook("@WER1 ist patschnass.", 1200, 0,
132 "Du bist endlich wieder trocken. Puuh.");
133
Arathorn3696a032021-01-23 15:42:10 +0100134 // (5) Mit Objekt, welches den Extralook dynamisch erzeugt.
135
Zesstra0c1a85a2018-02-07 23:46:50 +0100136 living->AddExtraLook("get_my_special_extralook", 3600, 0, 0,
137 this_object());
Arathorn3696a032021-01-23 15:42:10 +0100138
Zesstrafcd44702022-10-05 23:47:39 +0200139 public string get_my_special_extralook(object lv)
140 {
141 return
142 lv.Name() + " hat schon " + data[getuuid(lv)] + " mal gewonnen!\n");
143 }
Zesstra953f9972017-02-18 15:37:36 +0100144
Zesstra0c1a85a2018-02-07 23:46:50 +0100145 // (6) Mit Objekt, welches den Extralook dynamisch erzeugt
146 // Hier wird explizit die Blueprint uebergeben, der Extralook ist also
147 // rebootfest.
Arathorn3696a032021-01-23 15:42:10 +0100148
Zesstra953f9972017-02-18 15:37:36 +0100149 living->AddExtraLook("get_my_special_extralook", 3600, 0,
Zesstra0c1a85a2018-02-07 23:46:50 +0100150 "extralookende", blueprint(this_object()));
151
Zesstra953f9972017-02-18 15:37:36 +0100152
153SIEHE AUCH
154==========
155
Zesstra0c1a85a2018-02-07 23:46:50 +0100156 Verwandt:
Zesstra09cd00b2019-11-28 21:23:35 +0100157 RemoveExtraLook(), P_INTERNAL_EXTRA_LOOK, HasExtraLook()
MG Mud User88f12472016-06-24 23:31:02 +0200158
Zesstra0c1a85a2018-02-07 23:46:50 +0100159 Sonstiges:
Zesstra6cadc1b2018-11-15 22:27:32 +0100160 replace_personal(), break_string()
Zesstra0c1a85a2018-02-07 23:46:50 +0100161
162 Fuer Spielerobjekte:
Zesstra6cadc1b2018-11-15 22:27:32 +0100163 P_EXTRA_LOOK
Zesstra0c1a85a2018-02-07 23:46:50 +0100164
Zesstrafcd44702022-10-05 23:47:39 +0200165Letzte Aenderung: 21.09.2022, Bugfix