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