blob: 7436f7e337880a249817456ad9f4092a17342a5c [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
5AddExtraLook() varargs int AddExtraLook(string look, [int duration,
6string key,
7
8 string lookende, object ob]);
9
10
11DEFINIERT IN
12============
13
MG Mud User88f12472016-06-24 23:31:02 +020014 /std/living/description.c
15
Zesstra953f9972017-02-18 15:37:36 +010016
17BESCHREIBUNG
18============
19
MG Mud User88f12472016-06-24 23:31:02 +020020 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.
Zesstra953f9972017-02-18 15:37:36 +010024
25
26
MG Mud User88f12472016-06-24 23:31:02 +020027 Alle Parameter bis auf <look> sind optional.
28
MG Mud User88f12472016-06-24 23:31:02 +020029
Zesstra953f9972017-02-18 15:37:36 +010030ARGUMENTE
31=========
MG Mud User88f12472016-06-24 23:31:02 +020032
Zesstra953f9972017-02-18 15:37:36 +010033 - 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. ;-)
MG Mud User88f12472016-06-24 23:31:02 +020062
MG Mud User88f12472016-06-24 23:31:02 +020063
Zesstra953f9972017-02-18 15:37:36 +010064RUECKGABEWERTE
65==============
MG Mud User88f12472016-06-24 23:31:02 +020066
Zesstra953f9972017-02-18 15:37:36 +010067 > 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.
MG Mud User88f12472016-06-24 23:31:02 +020073
Zesstra953f9972017-02-18 15:37:36 +010074
75BEMERKUNGEN
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
89
90BEISPIELE
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
122
123SIEHE AUCH
124==========
125
MG Mud User88f12472016-06-24 23:31:02 +0200126 RemoveExtraLook(),
127 replace_personal(), break_string()
128 P_INTERNAL_EXTRA_LOOK
129
13014.05.2007, Zesstra