MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | AddExtraLook() |
| 2 | varargs int AddExtraLook(string look, [int duration, string key, |
| 3 | string lookende, object ob]); |
| 4 | DEFINIERT IN: |
| 5 | /std/living/description.c |
| 6 | |
| 7 | BESCHREIBUNG: |
| 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 | |
| 15 | ARGUMENTE: |
| 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 | |
| 46 | RUECKGABEWERTE: |
| 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 | |
| 54 | BEMERKUNGEN: |
| 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 | |
| 66 | BEISPIELE: |
| 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 | |
| 90 | SIEHE AUCH: |
| 91 | RemoveExtraLook(), |
| 92 | replace_personal(), break_string() |
| 93 | P_INTERNAL_EXTRA_LOOK |
| 94 | |
| 95 | 14.05.2007, Zesstra |
| 96 | |