blob: 30b255a9972b457344ee2bbe90c5307d9717e888 [file] [log] [blame]
Zesstra18626972017-01-31 10:38:27 +01001AddExtraLook()
2==============
3
4AddExtraLook()
5varargs int AddExtraLook(string look, [int duration, string key,
6 string lookende, object ob]);
7--------------------------------------------------------------------------------------------------------------------------------------
8::
9
10DEFINIERT IN
11------------
12::
13
14 /std/living/description.c
15
16BESCHREIBUNG
17------------
18::
19
20 Der Extralook erscheint in der Langbeschreibung des Lebewesens.
21 Eintraege koennen mit dieser Funktion hinzugefuegt werden. Dies ist der
22 bevorzugte Weg, wenn ansonsten extra ein Objekt im Spielerinventar abgelegt
23 werden muesste.
24
25
26
27 Alle Parameter bis auf <look> sind optional.
28
29ARGUMENTE
30---------
31::
32
33 - string look:
34 String, der in der Langbeschreibung des Lebewesens zusaetzlich ausgegeben
35 wird.
36 Kann auch ein Funktionsname sein, wenn <ob> angegeben wird (s.u.).
37 - int duration:
38 > 0: Wie lang bleibt der Extralook gueltig (in Sekunden)? Anschliessend
39 wird er automatisch geloescht.
40 0: Dieser Eintrag bleibt unbegrenzt gueltig.
41 < 0: Dieser Eintrag bleibt bis zum Ende/Reboot bestehen.
42 - string key:
43 Schluesselwort, unter dem der Eintrag registriert wird und mit dem man ihn
44 auch mittels RemoveExtraLook() entfernen kann. Sollte natuerlich
45 moeglichst eindeutig sein. ;-) Wenn <key> nicht angeben wird, wird der
46 Objektname (object_name()) benutzt.
47 - string lookende:
48 String, der an das Lebewesen (nur bei Spielern) ausgegeben wird, wenn der
49 eingetragene Extralook abgelaufen ist.
50 Kann auch ein Funktionsname sein, wenn <ob> angegeben wird.
51 - object ob:
52 Wenn hier ein Objekt angegeben wird, werden <look> und <lookende> als
53 Funktonsnamen aufgefasst. Diese Funktionen werden in <ob> aufgerufen, wenn
54 der Extralook des Lebewesen angezeigt wird bzw. der eingetragene Extralook
55 abgelaufen ist. Diese Funktionen bekommen das jeweilige Lebenwesen als
56 Objekt uebergeben. Sie muessen einen String zurueckliefern, der ausgegeben
57 wird. Dieser String wird direkt so ausgeben, also selber fuer Zeilenumbruch
58 etc. sorgen!
59 WICHTIG: Das Objekt sollte nach Moeglichkeit eine Blueprint sein, da das
60 ganze nix mehr ausgibt, sobald der Clone zerstoert wird, falls hier
61 einer angeben wird. Wenn ihr keine BP uebergebt: Wisst, was ihr tut. ;-)
62
63RUECKGABEWERTE
64--------------
65::
66
67 > 0, falls der Eintrag erfolgreich registriert wurde.
68 < 0 sonst.
69 -1: <key> war nicht gueltig und es konnte keiner ermittelt werden.
70 -2: <look> war kein gueltiger String.
71 -3: <duration> war kein Integer.
72 -4: unter <key> gibt es schon einen Eintrag.
73
74BEMERKUNGEN
75-----------
76::
77
78 Die Strings <look> und <lookende> werden vor Ausgabe durch
79 replace_personal() geschickt, daher ist die Verwendung von @WER1, @WESSEN1
80 usw. moeglich (s. replace_personal). Dies gilt aber _nicht_ fuer den Fall,
81 dass die entsprechenden Funktionen in <ob> gerufen werden, dann muessen die
82 Funktionen selber umbrechen, etc.
83 Nach replace_personal() werden die Strings noch von break_string() auf 78
84 Zeilen umgebrochen, allerdings bleiben dabei vorhandene Umbrueche erhalten.
85 Die Meldung von <lookende> bzw. der Funktionsaufruf erfolgt, wenn der
86 Extralook der Lebewesen das erste Mal nach Ablauf der Gueltigkeit aufgerufen
87 wird.
88
89BEISPIELE
90---------
91::
92
93 # einfacher Eintrag, "fuer die Ewigkeit"
94 living->AddExtraLook("@WER1 hat den Drachengott der SSP besiegt.");
95
96 # Eintrag der nach 1h automatisch weg ist.
97 living->AddExtraLook("@WER1 ist ganz mit Marmelade bedeckt.", 3600);
98
99
100
101 # Eintrag mit bestimmten Schluessel, damit man ihn wieder entfernen kann.
102 living->AddExtraLook("@WER1 ist ganz mit Marmelade bedeckt.", 3600,
103 "humni_marmeladen_look");
104
105
106
107 # Mit "Ende"-Meldung, aber kein eigener Schluessel.
108 living->AddExtraLook("@WER1 ist patschnass.", 1200, 0,
109 "Du bist endlich wieder trocken. Puuh.");
110
111
112
113 # Mit Objekt, was den Extralook dynamisch erzeugt
114 living->AddExtraLook("get_my_special_extralook", 3600, 0, 0, this_object());
115 In diesem Fall muss this_object() natuerlich die Funktion
116 "get_my_special_extralook()" definieren, die einen String zurueckgibt.
117
118 # Mit Objekt, was den Extralook und die Endemeldung dynamisch erzeugt
119 living->AddExtraLook("get_my_special_extralook", 3600, 0,
120 "extralookende", this_object());
121
122SIEHE AUCH
123----------
124::
125
126 RemoveExtraLook(),
127 replace_personal(), break_string()
128 P_INTERNAL_EXTRA_LOOK
129
13014.05.2007, Zesstra
131