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