Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 1 | AddExtraLook() |
| 2 | ============== |
| 3 | |
| 4 | AddExtraLook() |
| 5 | varargs int AddExtraLook(string look, [int duration, string key, |
| 6 | string lookende, object ob]); |
| 7 | -------------------------------------------------------------------------------------------------------------------------------------- |
| 8 | :: |
| 9 | |
| 10 | DEFINIERT IN |
| 11 | ------------ |
| 12 | :: |
| 13 | |
| 14 | /std/living/description.c |
| 15 | |
| 16 | BESCHREIBUNG |
| 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 | |
| 29 | ARGUMENTE |
| 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 | |
| 63 | RUECKGABEWERTE |
| 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 | |
| 74 | BEMERKUNGEN |
| 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 | |
| 89 | BEISPIELE |
| 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 | |
| 122 | SIEHE AUCH |
| 123 | ---------- |
| 124 | :: |
| 125 | |
| 126 | RemoveExtraLook(), |
| 127 | replace_personal(), break_string() |
| 128 | P_INTERNAL_EXTRA_LOOK |
| 129 | |
| 130 | 14.05.2007, Zesstra |
| 131 | |