Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 1 | AddExtraLook() |
| 2 | ============== |
| 3 | |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 4 | FUNKTION |
| 5 | -------- |
| 6 | |
| 7 | varargs int AddExtraLook(string look, [int duration, string key, string lookende, object ob]); |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 8 | |
| 9 | DEFINIERT IN |
| 10 | ------------ |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 11 | /std/living/description.c |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 12 | |
| 13 | ARGUMENTE |
| 14 | --------- |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 15 | string look: |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 16 | |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 17 | - String, der in der Langbeschreibung des Lebewesens zusaetzlich |
| 18 | ausgegeben wird. |
| 19 | - zu rufender Funktionsname, wenn 'ob' angegeben ist |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 20 | |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 21 | int duration: |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 22 | |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 23 | - > 0: Dauer der Gueltigkeit des Extralooks in Sekunden. |
Arathorn | 3696a03 | 2021-01-23 15:42:10 +0100 | [diff] [blame] | 24 | - 0: Unbegrenzt gueltiger Eintrag. Rebootfest. (Kann nur von Blueprints registriert werden.) |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 25 | - < 0: Bis Ende/Reboot bestehender Eintrag. |
| 26 | |
| 27 | string key: |
| 28 | Schluesselwort, unter dem der Eintrag registriert wird und mit dem man |
| 29 | diesen auch mittels RemoveExtraLook() entfernen kann. Sollte eindeutig |
| 30 | sein! |
| 31 | Ist 'key' nicht angeben, wird der Objektname (object_name()) des |
| 32 | setzenden Objekts benutzt. |
| 33 | |
| 34 | string lookende: |
| 35 | |
| 36 | - String, der an das Lebewesen (nur bei Spielern) ausgegeben wird, |
Arathorn | 3696a03 | 2021-01-23 15:42:10 +0100 | [diff] [blame] | 37 | wenn der eingetragene Extralook abgelaufen ist. |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 38 | - zu rufender Funktionsname, wenn 'ob' angegeben ist |
| 39 | |
| 40 | object ob: |
| 41 | Ein Objekt, an dem die in 'look' und 'lookende' abgelegten Methoden |
| 42 | bei Abfrage oder Ablauf aufgerufen werden. |
| 43 | Die Methoden bekommen das Living uebergeben und muessen selbst |
| 44 | umgebrochene Strings zurueckgeben. |
| 45 | |
| 46 | BESCHREIBUNG |
| 47 | ------------ |
| 48 | Der Extralook erscheint in der Langbeschreibung des Lebewesens. |
| 49 | |
| 50 | Texte dafuer koennen mit dieser Funktion hinzugefuegt und verwaltet werden. |
| 51 | Wenn ihr nicht ohnehin unbedingt ein Objekt IM Spieler ablegt (wie zB |
| 52 | eine Ruestung mit einem Extralook) (1), dann ist diese Methode bevorzugt zu |
| 53 | verwenden. |
| 54 | |
| 55 | Ueber die Angabe eines 'ob' koennen Looks auch dynamisch erstellt werden, |
| 56 | dabei werden dann 'look' bzw. 'lookende' als Methoden am Objekt gerufen. |
| 57 | (1) Ein so fuer AddExtraLook verwendetes Objekt 'ob' muss nicht wie bisher |
| 58 | ueblich im Inv des Spieler liegen! |
| 59 | |
| 60 | Direkt angegebene Texte (also nicht von einem Objekt 'ob' bezogen) werden |
| 61 | durch replace_personal() gefiltert und unter Beibehaltung existierender |
| 62 | Umbrueche auf 78 Zeichen umgebrochen. |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 63 | |
| 64 | BEMERKUNGEN |
| 65 | ----------- |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 66 | - Die Meldung von <lookende> bzw. der Funktionsaufruf erfolgt, wenn der |
| 67 | Extralook der Lebewesen das erste Mal nach Ablauf der Gueltigkeit |
| 68 | aufgerufen wird. |
Arathorn | 3696a03 | 2021-01-23 15:42:10 +0100 | [diff] [blame] | 69 | - Im Fall von permanenten Eintraegen muss das uebergbene Objekt eine |
| 70 | Blueprint sein, da Clones irgendwann (spaetestens mit Reboot) zerstoert |
| 71 | werden und der Eintrag dann bei Abfrage automatisch geloescht wird. |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 72 | - Folgerung: Clone-Objekte koennen fuer selbst beschraenkt temporaere |
| 73 | Extralooks benutzt werden. |
Arathorn | 3696a03 | 2021-01-23 15:42:10 +0100 | [diff] [blame] | 74 | - Die Endemeldung wird nicht genau mit Ablauf der angegebenen Zeit |
| 75 | ausgegeben, sondern beim ersten Abruf der Langbeschreibung *nach* |
| 76 | Ablauf der Zeit. |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 77 | |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 78 | RUECKGABEWERTE |
| 79 | -------------- |
| 80 | Siehe auch /sys/living/description.h fuer Konstanten. |
| 81 | |
Arathorn | 3696a03 | 2021-01-23 15:42:10 +0100 | [diff] [blame] | 82 | - XL_OK: falls der Eintrag erfolgreich registriert wurde. |
| 83 | - ansonsten: |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 84 | |
Arathorn | 3696a03 | 2021-01-23 15:42:10 +0100 | [diff] [blame] | 85 | - XL_NOKEY: <key> war nicht gueltig und es konnte keiner ermittelt werden. |
| 86 | - XL_INVALIDEXTRALOOK: <look> war kein gueltiger String. |
| 87 | - XL_KEYDOESNOTEXIST: <duration> war kein Integer. |
| 88 | - XL_KEYEXISTS: unter <key> gibt es schon einen Eintrag. |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 89 | |
| 90 | BEISPIELE |
| 91 | --------- |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 92 | |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 93 | .. code-block:: pike |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 94 | |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 95 | // (1) einfacher Eintrag, "fuer die Ewigkeit" |
Arathorn | 3696a03 | 2021-01-23 15:42:10 +0100 | [diff] [blame] | 96 | |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 97 | living->AddExtraLook("@WER1 hat den Drachengott der SSP besiegt."); |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 98 | |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 99 | .. code-block:: pike |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 100 | |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 101 | // (2) Eintrag der nach 1h automatisch weg ist. |
Arathorn | 3696a03 | 2021-01-23 15:42:10 +0100 | [diff] [blame] | 102 | |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 103 | living->AddExtraLook("@WER1 ist ganz mit Marmelade bedeckt.", 3600); |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 104 | |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 105 | .. code-block:: pike |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 106 | |
Arathorn | 3696a03 | 2021-01-23 15:42:10 +0100 | [diff] [blame] | 107 | // (3) Eintrag mit bestimmtem Schluessel, damit man ihn wieder entfernen |
| 108 | // kann. |
| 109 | |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 110 | living->AddExtraLook("@WER1 ist ganz mit Marmelade bedeckt.", 3600, |
| 111 | "humni_marmeladen_look"); |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 112 | |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 113 | .. code-block:: pike |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 114 | |
Arathorn | 3696a03 | 2021-01-23 15:42:10 +0100 | [diff] [blame] | 115 | // (4) Mit "Ende"-Meldung, aber kein eigener Schluessel. |
| 116 | |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 117 | living->AddExtraLook("@WER1 ist patschnass.", 1200, 0, |
| 118 | "Du bist endlich wieder trocken. Puuh."); |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 119 | |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 120 | .. code-block:: pike |
| 121 | |
Arathorn | 3696a03 | 2021-01-23 15:42:10 +0100 | [diff] [blame] | 122 | // (5) Mit Objekt, welches den Extralook dynamisch erzeugt. |
| 123 | |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 124 | living->AddExtraLook("get_my_special_extralook", 3600, 0, 0, |
| 125 | this_object()); |
Arathorn | 3696a03 | 2021-01-23 15:42:10 +0100 | [diff] [blame] | 126 | |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 127 | // In diesem Fall muss this_object() natuerlich die Funktion |
Arathorn | 3696a03 | 2021-01-23 15:42:10 +0100 | [diff] [blame] | 128 | // "get_my_special_extralook()" definieren, die einen String zurueckgibt. |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 129 | |
| 130 | .. code-block:: pike |
| 131 | |
| 132 | // (6) Mit Objekt, welches den Extralook dynamisch erzeugt |
| 133 | // Hier wird explizit die Blueprint uebergeben, der Extralook ist also |
| 134 | // rebootfest. |
Arathorn | 3696a03 | 2021-01-23 15:42:10 +0100 | [diff] [blame] | 135 | |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 136 | living->AddExtraLook("get_my_special_extralook", 3600, 0, |
| 137 | "extralookende", blueprint(this_object())); |
| 138 | |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 139 | |
| 140 | SIEHE AUCH |
| 141 | ---------- |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 142 | |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 143 | Verwandt: |
Zesstra | d901db4 | 2019-11-28 21:22:52 +0100 | [diff] [blame] | 144 | :doc:`RemoveExtraLook`, :doc:`../props/P_INTERNAL_EXTRA_LOOK`, :doc:`../lfun/HasExtraLook` |
Christian Georg Becker | ea699e2 | 2017-06-16 23:48:17 +0200 | [diff] [blame] | 145 | Sonstiges: |
| 146 | :doc:`../sefun/replace_personal`, :doc:`../sefun/break_string` |
| 147 | Fuer Spielerobjekte: |
| 148 | :doc:`../props/P_EXTRA_LOOK` |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 149 | |
Arathorn | 3696a03 | 2021-01-23 15:42:10 +0100 | [diff] [blame] | 150 | |
| 151 | Letzte Aenderung: 2021-01-21, Arathorn |