blob: 526a851e9f0ad93ffb5020b5b9ed02ba14f02eb6 [file] [log] [blame]
AddExtraLook()
varargs int AddExtraLook(string look, [int duration, string key,
string lookende, object ob]);
DEFINIERT IN:
/std/living/description.c
BESCHREIBUNG:
Der Extralook erscheint in der Langbeschreibung des Lebewesens.
Eintraege koennen mit dieser Funktion hinzugefuegt werden. Dies ist der
bevorzugte Weg, wenn ansonsten extra ein Objekt im Spielerinventar abgelegt
werden muesste.
Alle Parameter bis auf <look> sind optional.
ARGUMENTE:
- string look:
String, der in der Langbeschreibung des Lebewesens zusaetzlich ausgegeben
wird.
Kann auch ein Funktionsname sein, wenn <ob> angegeben wird (s.u.).
- int duration:
> 0: Wie lang bleibt der Extralook gueltig (in Sekunden)? Anschliessend
wird er automatisch geloescht.
0: Dieser Eintrag bleibt unbegrenzt gueltig.
< 0: Dieser Eintrag bleibt bis zum Ende/Reboot bestehen.
- string key:
Schluesselwort, unter dem der Eintrag registriert wird und mit dem man ihn
auch mittels RemoveExtraLook() entfernen kann. Sollte natuerlich
moeglichst eindeutig sein. ;-) Wenn <key> nicht angeben wird, wird der
Objektname (object_name()) benutzt.
- string lookende:
String, der an das Lebewesen (nur bei Spielern) ausgegeben wird, wenn der
eingetragene Extralook abgelaufen ist.
Kann auch ein Funktionsname sein, wenn <ob> angegeben wird.
- object ob:
Wenn hier ein Objekt angegeben wird, werden <look> und <lookende> als
Funktonsnamen aufgefasst. Diese Funktionen werden in <ob> aufgerufen, wenn
der Extralook des Lebewesen angezeigt wird bzw. der eingetragene Extralook
abgelaufen ist. Diese Funktionen bekommen das jeweilige Lebenwesen als
Objekt uebergeben. Sie muessen einen String zurueckliefern, der ausgegeben
wird. Dieser String wird direkt so ausgeben, also selber fuer Zeilenumbruch
etc. sorgen!
WICHTIG: Das Objekt sollte nach Moeglichkeit eine Blueprint sein, da das
ganze nix mehr ausgibt, sobald der Clone zerstoert wird, falls hier
einer angeben wird. Wenn ihr keine BP uebergebt: Wisst, was ihr tut. ;-)
RUECKGABEWERTE:
> 0, falls der Eintrag erfolgreich registriert wurde.
< 0 sonst.
-1: <key> war nicht gueltig und es konnte keiner ermittelt werden.
-2: <look> war kein gueltiger String.
-3: <duration> war kein Integer.
-4: unter <key> gibt es schon einen Eintrag.
BEMERKUNGEN:
Die Strings <look> und <lookende> werden vor Ausgabe durch
replace_personal() geschickt, daher ist die Verwendung von @WER1, @WESSEN1
usw. moeglich (s. replace_personal). Dies gilt aber _nicht_ fuer den Fall,
dass die entsprechenden Funktionen in <ob> gerufen werden, dann muessen die
Funktionen selber umbrechen, etc.
Nach replace_personal() werden die Strings noch von break_string() auf 78
Zeilen umgebrochen, allerdings bleiben dabei vorhandene Umbrueche erhalten.
Die Meldung von <lookende> bzw. der Funktionsaufruf erfolgt, wenn der
Extralook der Lebewesen das erste Mal nach Ablauf der Gueltigkeit aufgerufen
wird.
BEISPIELE:
# einfacher Eintrag, "fuer die Ewigkeit"
living->AddExtraLook("@WER1 hat den Drachengott der SSP besiegt.");
# Eintrag der nach 1h automatisch weg ist.
living->AddExtraLook("@WER1 ist ganz mit Marmelade bedeckt.", 3600);
# Eintrag mit bestimmten Schluessel, damit man ihn wieder entfernen kann.
living->AddExtraLook("@WER1 ist ganz mit Marmelade bedeckt.", 3600,
"humni_marmeladen_look");
# Mit "Ende"-Meldung, aber kein eigener Schluessel.
living->AddExtraLook("@WER1 ist patschnass.", 1200, 0,
"Du bist endlich wieder trocken. Puuh.");
# Mit Objekt, was den Extralook dynamisch erzeugt
living->AddExtraLook("get_my_special_extralook", 3600, 0, 0, this_object());
In diesem Fall muss this_object() natuerlich die Funktion
"get_my_special_extralook()" definieren, die einen String zurueckgibt.
# Mit Objekt, was den Extralook und die Endemeldung dynamisch erzeugt
living->AddExtraLook("get_my_special_extralook", 3600, 0,
"extralookende", this_object());
SIEHE AUCH:
RemoveExtraLook(),
replace_personal(), break_string()
P_INTERNAL_EXTRA_LOOK
14.05.2007, Zesstra