[Guide][Wiki-Beitrag] How-To Total RP 3 Extended ❔

Extended am Sonntag #16


Geheime Dokumente

Heute geht es darum, geheime Informationen oder wertvolle Gegenstände vor den Blicken oder Händen Unbefugter zu schützen. Das kann ein neugieriger Bote sein, der eine Nachricht überbringen, aber nicht lesen soll. Das kann ein Teilnehmer einer Schnitzeljagd sein, der die Trophäe erst bekommen soll, wenn bestimmte Vorbedingungen erfüllt sind. Oder es kann irgendetwas anderes sein, was der Extended-Benutzer (noch) nicht sehen können soll.
In den folgenden Beispielen wird der Schutzmechanismus immer ein Passwort sein, man könnte die Information aber auch hinter einem Rätsel oder allgemein einer Aufgabe verbergen.

:warning: Beachte, dass die Sicherheit hier lediglich im Spielkontext gewährleistet ist. Du solltest mit den folgenden Items auf keinen Fall echte Daten schützen!

Level 1: Statische Daten, statisches Passwort

Importcode: Geheimes Dokument !Trv4sjoqm4NL7b402c4CYm(dSG2ohwqtb88hHwBxHouAz2Db17g5z)s2f6nC6aZg2Szt(Y3(fqxmgJCPVoTOvpeiRRxRoT98E8(Tp5GrTOiGWiEnVoJnX)cH(JqyyiTtJWD9zV3rEIgX7d6z9hmaJUWXbHRJXRra8TUh3ZwtotpIWF20n7JBtR(9(KfILII1c5(KyXB6Z(Z5B(GUaDLR9)jg9dYoIVie0A(niCB6AXn1v6OA560YHPYfceU5b8zeMfIrT7qvoWLJSVqPlQENdoylhvGh7((TKF25CR3XhZACDDPUytGinxiPQYagI6rjQE121IknA)yyIW4dTguxnrj4FaX8QPdfn9Aroc7sLZ3iRxVHUlHxL9qyCQs9ATuBEa2y3KZmput9bczlfzRg34Vd7)acOVLfQgaDAKNcf64NLPvzljBdQYQRYpU5aoTW0KjcLhGy9PyJlg74QRoiq2rTAvrQC12Jq5L0IY7ekvktTpTDHS4Lx2NStiFvuSqi1FdHke8ogU3NzlsUzy75QL1VEcH9FI09jSY8lzeANsKTvwOFFOyNO0WQgHlmAYXNSgnm0N4k3ZDADUN3(eVwD7CzxNlqWNLVIskbQVhVuMwwIWuEOHC)fhLpLsZzDoZXovmGu56PhMXGHKNCIs8)uTA31JPdWFKbEHSsgEab69gcjZBTnknGm9NGrC2NXgnNqnr3k7a2eGVFp))Px3NukuIk71B6zRUEmqiZ9s6XmKoSOA38sHwlKZDVWaLNTs)BTZMQ9jndbS4Io9(EgPanwtBMeXRt7zGNVzySpxapNlPihycb4)nyMjCI9OvFtEMnW2mAJM3YFAe)7d

Der einfachste Fall ist ein Dokument, dass sich nur dann öffnet, wenn man ein Passwort eingibt.

  1. Erstelle einen Dokument-Gegenstand. Wenn du die Vorlage „Dokument-Gegenstand“ benutzt, wird automatisch ein vorbereitetes, inneres Dokument angelegt, dass sich bei Benutzung (onUse) öffnet.
  2. Überführe den Gegenstand in den Experten-Modus, denn es wird ein zweiter Arbeitsablauf benötigt.
  3. Füge dem Gegenstand neben onUse einen zweiten Arbeitsablauf hinzu: checkPassword.
  4. Entferne den Effekt „Dokument öffnen“ aus dem onUse-Arbeitsablauf, denn das Dokument soll erst nach der Passwortkontrolle angezeigt werden.
  5. Füge den Effekt „Experte > Eingabeaufforderung“ in den Arbeitsablauf onUse ein. Stelle darin die Objektvariable password ein sowie den Rückruf-Arbeitsablauf checkPassword.
  6. Der erste Effekt in checkPassword wird eine Bedingung sein: "Objektvariable password ist gleich dem direkten Text-Wert eniarku"
    In der Bedingung steht also das gesuchte Passwort. Als Fehlermeldung bei Nichterfüllung wähle eine Phrase wie „Zugriff verweigert“. Dieser Text wird angezeigt, wenn das falsche Passwort eingegeben wurde.
  7. Der zweite Effekt ist der „Dokument öffnen“-Effekt, der vorher aus dem Arbeitsablauf onUse entfernt wurde. Das Öffnen des Dokuments wird also hinter die Passwortkontrolle verlegt.

Das ist schonmal ein guter Anfang, aber das Passwort ist fest an das Item gebunden. Wenn sich das Passwort einmal herumgesprochen hat, benötigt man eine neue Version mit einem neuen Passwort.

Level 2: Statische Daten, dynamisches Passwort

Importcode: Ganz Geheimes Dokument !nsv3YPTsm4NLEBNPn2MqtdZKladjqkyiznH(ZCwSXwaUXExgVlesZe)003K(IvP1GZa9KZPJ9S)ODL0N(KwXT5(CpB83Qgo6Wz4SJLLvTtR7fwBBg3RgEdwppAmwgrt(FHZApKZ63d3P5SbTjPdqjEdP9DBwkVBhU3hSS4Sw(8wC2KECVtRJBh1S0PKP(mN90Qgrp3zRohYkcwalHKmiViWh2QFZtNS65IRlU2CNNste3)2OLHIfWOqL6bzE8B3Tqxe8RFkIHCXZKoO7ra0Y9tCVpIZKdzEnrylVFDgimNoA6LC2vHzGVuMQtw1fcr95SlVLpJZyUKoh6mscZNgnGhQcJKyoBty(0v5YSvOPdZxOkpK5bRbvrWEtueajOfNbcdBR0YCiUY(izZKilXzCV60sDzGG)PjknF)hRRnb(2GsNiE8sPq3D9caf7qIVb9OMeoDN0A7JusONmplmTpcr8OwdjqwswgsAe6zB7ZrOnMrjn3Hezqu3vHIFueCvz(bJOkQKOe8o300aFwlAZypA8oueMVDneABYYowNJ3SdTVNlYBIntZsurtfsnmxMgdX2XMce8ctmJUgJpPdzj9(0Iumwb)Vzd5SVdrhMnKgw)Bx8pgSEm7t8(rmotWzoKaN)6m((ksJRseRwR)xYVrlHO7Fr(RNSp6MhgZZQWtKueVFZoewcqJ6i(oGaoevKBiPxCXUx7)xQEeNvbtdpXMhMKoauQqQ46RRxKNmFErWgi)bizbKRFtviolpueT8vywSrJP2AQAP8Hdi3JApveq9KETxjkiADEI(X(Wgi1q(MwwSHJ3xcv19Qp29kgXSlwZZGuub178xMhMMILXCVZmf2)XjS2yIW5eRAN44ueyz1W2UHZzL9c7GT203TRZkl(o8MVV(7PNdhRKvTgNwNGc(yJqxpQIFWeZBN2JntyzpdRAy94S6BPf3IlivOEX98nVwXXMUV0IRiifuyBgJUvrBmOXuKY0GwBQelrLMZ)n

Um das obige Dokument zu verbessern, soll ein Mechanismus eingebaut werden, mit dem man das Passwort ändern kann. Das wird über einen Dokument-Link geschehen, d.h. wenn das Dokument geöffnet ist, hat man die Möglichkeit, das Passwort zu verändern.
Das Passwort wird dann nicht mehr in der Datenbank gespeichert, sondern individuell in jedem Item. Man kann also auch verschiedene Passwörter vergeben.
Ausgehend vom oben dargestellten Dokument-Item, gehe folgendermaßen vor:

  1. Im Arbeitsablauf onUse, füge den Effekt „Experte > Variablenoperation (Initialisierung)“ an erster Stelle ein. In diesem Effekt setzen wir die Objekt-Variable storedPassword. Das Standardpasswort soll zunächst leer bleiben.
  2. Im Effekt „Eingabeaufforderung“ ändere den Variablennamen zu inputPassword. Das gesuchte Passwort wird also in der Variable storedPassword gespeichert, während das eingegebene Passwort in inputPassword steht.
  3. Die Bedingung im Arbeitsablauf checkPassword muss dann entsprechend angepasst werden. Statt das eingegebene Passwort mit einem festen Text zu vergleichen, steht nun auf der einen Seite inputPassword und auf der anderen storedPassword.
  4. Jetzt fehlt nur noch die „Passwort ändern“-Funktion. Dazu legen wir einen dritten Arbeitsablauf changePassword an. Dieser liegt jedoch im inneren Dokument und nicht im Item selbst.
    Einziger Effekt in diesem Arbeitsabaluf ist „Experte > Eingabeaufforderung“ mit der Objektvariable storedPassword.
  5. Damit changePassword auch aufgerufen werden kann, fügen wir dem Dokument einen Dokument-Link hinzu.

Wir haben jetzt ein Dokument-Item, bei dem wir jedem Exemplar ein individuelles Passwort zuweisen können, bevor es verteilt wird. Aber das reicht mir noch nicht, denn der Inhalt ist festgelegt und kann nur in der Datenbank geändert werden.

Level 3: Die allesverschlingende* Schließkassette

* allesverschlingend-aber-danach-auch-wieder-ausspuckend-sofern-man-sich-das-passwort-gemerkt-hat

Importcode: Schließkassette !TF1xtnUnq8plDM(wBZz78hMlZKhcjP9YvWHdLaxBNQyh71jUySzKKdCCZ5Vk9f(MWxSURSXGdoPqkp2jzSLwjT)2D1U)Km3KpLBBI)nAIpT4m8TLHHLPHXYpOoiGB3eNbBSn(uXzt)nSn2NnGKMeptcud2u6jPlgKRqSvOpNT2vmpzXFbE4ADflL5dYs0q9h9(ts9mPYvLkNc3O42T4Sjbbqmcg9JH)JcL4ZyoZIe0CpbjkX7cWxdqGBeA21aqlsG1EcGoyu6ecWBLsEruiIA8pM5KEzMdeRw5gPGyiZ5xGLqSuD)DX(ypim(2uP3QOq4()UENVjjOnzrlkTTa3WOZtexeeLCnoBXxMftUjN5Le7)WSkCJCVWBfqJ7wXdkcneKu3E9k20xVrOcTIoLg2cHBS3kQtR9mGjvjcW)exP86er(otDoEBsWb1JXvIKlVQkg2qkiZCkuBUhTjsn1McHNDBQ5gOQi)C6t9YTgZ3r4omE9CCaLBymiMlJsuZjZUi0J)RlEhhgvk)hYf)svO1UvylTcB)kuyZDRWoAfEWRqHT2PcZ3TpOOTUVo6U30l92SUxjsRTSFV4v6vtr)TuvE)0GhRKZCQqeuh67fPtV6iopdeeYjs5)gfsvKKjPX(4o1Cjefubm2p)zco73BA0Pdb5In1B91)spr4g1LuZg5(td01KnOefKrmZPxMZth8b5FSoH0K)63QZ5AxkSKgSAMZJLW)F56lsHVKYvRCcXJbP0DjWzhcRU)o8iorMZLPsKhEDc20hEEDreqtsIN81OCZ8XZu2s9qn89vi6dJVkvvdppwMMNsSf(ED3Yj9QYB26PQvTLNfk31s348QslSsO(3txkcdcWqmiUgcxcc13vsNTz88TGD7n)knVDmFB9kJBLYB3euBJBQcX1h3jL2tQtEQbrxG6vFJPNDs2wVbR(YsDQXFFru8T3cfFHaj4LkcvF5iynePx8rJjaMm7HpfaN0mMU(zWdIy9XMF)xltL629)uEeX9Z(qFU(Rrgmrd)y0MzStP6vgBm(6Mw5wa(A4mUTbND850lCjhslLnCervfNQUfrWpeYPJWx)kwZbkfuyw(Up5QKzo3MM5OnlbsAXobV(OP57rqhpiNm9YqP3CABArYnlxLivHIeCt5Orue4Xu2UD15RFt7aOPB3hn3cp8IcdqtbHJ9P(6n8t6tDMztppRV2LgCk1zizewMy6XNgPNcJFiNDUE6SdPNdMQLmQiaC8qkaC0eoZh0tHXGiCdv(ttxjCJIq9JzbiKdgIrsR3z08DwwzoggDTm7AG46FgkVr7gytfov9hoYog13OpJ6Q6Im7AA0Tno(GNJJISa8SNiPoHz0G5NoQpBI9C0ZgFY0I0ZN95O18jQ5PNuyk3UuC()a

Das letzte Item ist ein Behälter, in den man beliebige Gegenstände einschließen kann.
Um das Passwort einzustellen, benutzt man den leeren, geöffneten Behälter. Wenn man Items in den Behälter legt und ihn dann benutzt, werden die Items eingeschlossen. Sie sind dann nicht mehr im Behälter zu sehen. Um die Items wieder auszuschließen, muss man den Behälter nochmals benutzen und das vorher festgelegte Passwort eingeben.

Damit das ganze funktioniert, braucht es etwas Luarkanmagie.

  1. Im onUse-Arbeitsablauf initialisiere ich zunächst einige Variablen, die wichtigste davon ist locked, die festhält, ob der Behälter gerade auf- oder zugeschlossen ist.
  2. Im fünften Effekt von onUse prüfe ich, ob der Beählter geöffnet ist. Wenn ja, prüfe im nächsten Effekt, ob der Behälter leer ist. Wenn der Behälter leer ist (und geöffnet), erfrage ein neues Passwort.
  3. Der Arbeitsablauf lock kümmert sich um das Einschließen. Zunächst werden die Zustandsvariablen aktualisiert, dann kommt das Herzstück, ein Luaskript:
    args.object.vars.content = args.object.content
    args.object.content = {}
    
    Der gesamte Inhalt (args.object.content) wandert in die Objektvariable content. Das was der Code macht, ist quasi ein Etikettentausch, so wie ein cleverer Arbeiter, der Zementsäcke vom Keller ins Lager schleppen soll, und daraufhin einfach "Lager" auf die Kellertür schreibt.
  4. Das Aufschließen funktioniert sehr ähnlich, nur, dass die Passwortabfrage vorgeschaltet wird. Außerdem prüfe ich, ob der Behälter leer ist, damit die eingeschlossenen Items keine anderen Items ersetzen. tryUnlock prüft, ob aufgeschlossen werden kann, onUnlock überprüft das Passwort, ändert die Zustandsvariablen und führt dann ein sehr ähnliches Luaskript wie oben aus.

Die Schließkassette ist sehr vielseitig, da man beliebige Items, sogar ganze Taschen, einschließen kann.
Hierbei gibt es einen kleinen Schönheitsfehler: Der Behälter wird nicht aktualisiert, während er benutzt wird, d.h. man kann Items sehen, die nur scheinbar darin liegen, bzw. leere Slots, die in Wirklichkeit belegt sind. Man kann sich behelfen, indem man die Tasche mit Doppelklick erneut öffnet.
Wer diesen Anzeigefehler beheben kann, darf sich einen Keks aussuchen.


Viel Spaß beim Experimentieren und
:wave: bis zum nächsten Sonntag…

4 Likes

Juhuuu!
Vielen Dank für die Mühe und die vielen Guides und Tipps! :smiley:

1 Like

Extended am Sonntag #17


Die Konzeptomate

Kennst du das auch? Du möchtest einen neuen Charakter erstellen aber dir fällt einfach kein Konzept ein?
Hadere nicht länger, iss eine Konzeptomate!

Kostprobe:

Der Charakter verbrachte die Jugendjahre in einem Wanderzirkus in Unterstadt.
Eine im Alkohol ertrunkene Handelsreise machte schließlich überdeutlich, worauf es ankommt:
Geld. Und im Zweifelsfall richtet man sich nach Velen.

Importcode: Konzeptomate !LZv3UTnUs4xMfO3C22yN2KUfyVWn)3M)ALtsp7fYM2I2I10KzjPIBsr9RYEZ(mSxL78l2zgkhBlhYeVahymafiqrswI8JdhoZ8nIKP1sBMEAn4Vn2eowpnb()21RxV2gBZhT136ME6MWtKC0P4XmDx8Fn)VPj7EwAYXhbx5stE)zyrKCyJYlpCp4LEZgW9BM((0KKDkV95nkRkSa(sAY3V(hJ)WUCZ427KZmSbo80B4Mogw3ChFC7mbC4df95QSVYYnWf)Y31grFH6hJBlu4LsDxMtOv)4LJ)W3FfwG(sDpHY)0)zbtk6j4MFGxXVHRCWzdNw(2U5sbFYFjfDZh3EY9D4MmEHdV8)mU9iTHv0BCBUDCBMAGE4q37Quj)Y3DgMWbvD7luzaIgoU9FmIl6XL2EmPCCBJaRihwJaAT(QrXWJ)Y3fzA5dOgeoOqCNpME6BH)JIPKtBaIy9GIHaM9Y0nBTFAYbSH891k3PAZqM8yMPppnz)pN2jn5QJsp91Oq)WA4tUl36eQBXh(Wc8PoSoE7pva3hVzRY7EEOBEYUicob6Gp9mp2CLD5h1CANzIL72dLM45jnXJVbpWN1blYstUHzAP78vEx417Qvzp8JtFIYhOBoV7GwQ0ew5VKmYReA81kE2V)7t1aVbAFpGgOHBN(86YNcFOeFpm(yGGY44QRHJ3(W7a)jfw4iuzBH341RdiV5kd5Df8oq)GUWecXVbVr9ARdixFJvgZxPHsUu1)aEVj)TQVsyxg(iW3yDa8A)2kd8l5gaPwgOUhqydYz4KARffKARUgYN5zbHBnVYrmDJR5gga0flEJV4h5lE8h1dXYV83kDcmthyzjJVMwld2RT6J2t6Ml61ZA4cBybKF8(MRduxFLb9o6UdCmHmQrkS9dc81aORTYG(9CWjPOFHQFieVPx743wlq(TRmMtUwBC3GJcSoM0fb7En(eOyxhGF7vh8DZlKwa0rg6JM8s2EDa6TwzmFa3h5JfK55G1fzejo2dcEIxdq)n)lGENcJd0t6B7XHahdHBSZlzTOKV664hcoIVJlCb1r8A2Rff7vxV(qqXacuoQjBVEDT1I2rTvx9yQJghWmi8WrVUrT1Y4XAR(asa2sK0tqi7hgwBT4CS2Q7D8CZK77ZLCrqm7DnwB94BC1DoEoqJnIz6spJ1wlaE1dF)eU1YFwpJ1kd6BTec)Qhb)XGOwXnt(NE9uXa(SUoGV6XttvawreIY6dzWOKcOwbnjmbcHAo0H0AvqZmkM1weeZuI2AfuFLq54M)SGlLlJBhz4RwbXxGaggNM5cjOjfL1k4(mtFJy4qwWyP(jL6Afb0NaLWx4YzswWHqeI86sJ7LG)oviithMRvqCJcmfVcvqx0uI7AvlvCRdZNCiqtksRvqDIRWmCKaQ4qQ00H1Avv6cJ2f2qfDiRUeIvd4YCMi44q6WuTcOpGL1N7UlSTdcXwTcO3diQQSDZhkIKfwkXyTcY)mZb4M7ckTPeH1QgqesWA9qDeliuI1AfCFsHSV2eMfiLOTwb0FmND342NOZImMKs0xRcCEmZieI0AvJFAzwm71Z700QlSiSNsvnGK3uOAnsBg0tQhfOMN9fAdunErtGHopFroJeDGsnwqFpFPEuMoy0nETUabS)8L4NE4d)hQyJXJ(5l2Z8Z(GqLPNgZ2Lkq4R8nOWTGdd41GR3ERT2(TPjz(YbEWmUKDlO95V(jcU45rutCkiecqXC9NP76NtbTS5lvMlnVpg3gNShHusJ5G2QluzTezTSCzVkfDY(Fbb8PBbb(bdi6eQylDFgy8QWXh2cgOAbCx91MwkZednjvMD8ZoKYqhK6)SGRU7FJY4))X7ZrAFb8MBWjbZGiFpbkLtN5G(kwF(WIhbyhzsMZCOEP2GtgOGcxsLhN5q(ymB8H9z9ZzgCMlA(mh6kh3UaNdyNzYIMmA6KgN5yFxH9oX1YW(0OtwCMd4gkMPBUG8zWzoIbxtzIyXmrQ83mhZjoEUmYWD6K6M54DF2qHmSsbDYBZc(x9rggaS0jFnZb7b8Sczyo40jtnlQkOCmByDbkLHMfhSHtfcBh(OcR1z5rOgsPe1Si4N83MbHZ2bLsrZCeFKYbS4IyCJsjOPcK5sjc6Guiiv2zw0WHf8u3DqqitOSZSiIJyOBX5rGpzfnjfttCTe4BaVFeqtMnml4KMHomnNJxwKpghLOyodTxQLV4Rp26SJmmmNJuEKO3if7YzWn5w5nmvKV(9pN0lNjBAMZK3ATgwqHdD4uodWnuzfuNp5CWkLCJiOSLsSjNH3lC5HZPnPisox59wCei1N46ZG7bS7K6reNg5cO1y028qOLo8iNH2pMZY6hzoGrhEKZG7hGitcAwGsCixWjHjYeeIu0gNJ3caV3goLyKI24meFsbMgp6tACoGzYEfMiPDKumgNb5J1Mxa(3IntrjeLX5qwif4A7(sTnC0RlYCC(hLUjPOpoBvY7BsSclWB3Vo2J46MoejFeYL4IcimQPeLYQ4UqnAY94QQ8r42rgQLvrSRW0PaOy6O)QNUkWLmvFq1wgqw)tmzZLKr8CJHlGQiOiIouoxE0FpCd9aSEfh80Hb6JWUH3pMLlkXeTkUVwlfoHD22NI38ByBcuIFA1gHs4)(9O0xHB7lszSoccXzTAtiJpCY9oruni6WETkU7ykCmzqithkSvHm34mS(pH9r6qMDjGJQhmJlIRpkXRTkWhYuIRlKWLHd3GuuCxc6t(htg3GwiP)NiTk0hi9OMNZ6frStjAVvXoUDe1qoqNRLGDDyalUizc7xIumHR2k6vihkuSibztj6WlzOP46C9tOZViL4PtO6MKIpC5EmxzGzs742FuGtTpUqHBfCjAzgZf(RRrhIXpztyXTEdmONqnfkXwEHgtH6HDjqMzOdJxBFVIMHWFv2hd)ZfMyQqKI78cih3Ufr1ha9mPdoRp36xGdyFqJm)wEy05G3pP0Qdl(6x46m5EtFUFo27vHFcjhDyBVSjLVo5EvFRdnOCJgAf12c3daXuhcGpWasAX)E5wZ7zfaMhez9ktjg4p2CYHfDaXUHHRUDUmMSNumWFCJWt(UbUzVoBKI1z4k)noqxaM8JhleD4LVSEfo7YM8x8OAw0HzEmKNj4bxVw0HG(YiVqXZ5EJRtJ8jOodD4PVm(BYToBbaHbUfc78obtY)g4SuGlFVhS6MbrXnU9iwUYkukr5OfLEy4OlOej)WEhXythXnd4MNkEckX4pC7qIBMV34ZL4t7GNszaiqtbysFfsxWCNWmi8w8ePseWYJLUIHKCIz9LuS)xg6GhVrt(NCLpeR9eQ74YbEAC(b(LzGeozVOE8Pukcc04Son6F5jns)q3TdZwq3cJWD7X8B4sFz6395to7I0PRwE3d7C5hFgMs80KeCZNNlHxW(RtNImjxMIeot2jWpLSlAu5vBS5RQxFC76B(UnQ)oWmMFJqFVVaf5LWV)Y38s41DxMwUH5NSt1xQ(7Qx7DB4TpTZzE4DeU5SFYvPNcV2Ux4)xYoyOWjjhb8S)gEYNNs4UCRFF39G6t5YN83sWbW75o2V(rn09FTdKGjNNGddE7wPjxKG7U(hdp9PSCdUSdX6St5Eh)03qpeyA6ZUIVz)Pg((KZB43X49hVSHht743e53fl86Bac3pThE9r7GMcUP1qGLDREADwRxVPxUc)2fNIh3PPVO2dleNhtqlOb8A3va2oUe6MV2NNbuJf3tyhaoMhGRlEuimRFlJJ7eYOIJx561piODPP)V

Wie es funktioniert

Man kann es sich sicherlich schon denken: Das Item benutzt vorgefertigte Textbausteine und fügt sie zufällig zusammen.

Ein Blick ins innere Dokument offenbart, welche Teile des Textes sich ändern können und welche nicht:

{p}
Der Charakter verbrachte die Jugendjahre ${origin} in ${location}.
{/p}
{p}
Eine ${qualifier} ${event} machte schließlich überdeutlich, worauf es ankommt:
{/p}
{p}
${trait}. Und im Zweifelsfall richtet man sich nach ${idol}.
{/p}

Die mit ${} markierten Stellen sind Variablen, die vor der Anzeige im Item-Arbeitsablauf onUse ihre Werte zugewiesen bekommen.

Das Auswürfeln der sechs Variablen habe ich auf einen Arbeitsablauf pro Variable aufgeteilt. Das ist nicht notwendig, aber übersichtlicher. Jeder der sechs Arbeitsabläufe (z.B. setEvent) funktioniert ähnlich: Würfle eine Zufallszahl zwischen 1 und 20 aus und weise dann, abhängig vom Ergebnis, einen der vordefinierten Werte zu.

All diese sechs Arbeitsabläufe werden im onUse-Arbeitsablauf der Reihe nach ausgeführt, zum Schluss noch etwas Deko und ganz am Ende das Anzeigen des Ergebnis-Dokuments.


Viel Spaß beim Experimentieren und
:wave: bis zum nächsten Sonntag…

4 Likes

Extended am Sonntag #18


Hinter den Kulissen der Datenbank

In diesem Beitrag von Enestress werden bereits alle wichtigen Funktionen der Objektdatenbank vorgestellt.
Im Folgenden wird es um das Konzept dahinter gehen, denn wenn man das Prinzip versteht, fällt es leichter, Kreationen zu verstehen.

Item ist nicht gleich Item

Wenn von „Item/Kampagne erstellen“ die Rede ist, ist üblicherweise das Festlegen von Eigenschaften, Arbeitsabläufen, etc. gemeint.
Mit einem Item in der Datenbank hat man aber noch kein Item in Inventar, denn die Datenbank ist keine Sammlung von Items, sondern von Itemvorlagen, man spricht hier üblicherweise von Klassen.
Dass die Datenbank kein „Lager“ ist, wird auch klar, wenn man die Datenbank-Funktion „Zu Inventar hinzufügen“ verwendet. Das betreffende Item verschwindet nicht aus der Datenbank, sondern ein Exemplar (Instanz) entsteht. Wenn dieses erstellte Exemplar zerstört wird, bleibt es in der Datenbank erhalten. Umgedreht bleibt ein Item im Inventar erhalten, wenn der zugehörige Datenbankeintrag verschwindet. Das Item ist dann aber nicht mehr benutzbar. Extended meldet uns „Missing Class“.

Datenbank = Bauplanbibliothek

Während das Inventar speichert, welche Items in meinem Besitz sind, speichert die Datenbank, was diese Items können, also ihre Eigenschaften.
Ein typischer Itemdatensatz ist sehr klein:

  • Item-Klasse
  • Taschenplatz
  • Anzahl (falls stapelbar)
  • ggf. Item-Variablen

Wenn das Item benutzt wird, konsultiert Extended die Datenbank:

  1. Gibt es die Item-Klasse in der Datenbank?
  2. Wenn ja, ist ein Verhalten „Bei Benutzug“ angegeben?
  3. Wenn ja, gibt es den angegebenen Arbeitsablauf?
  4. Wenn ja, führe den Arbeitsablauf aus.

Ohne Datenbankeintrag gibt es also kein Verhalten und auch keine Eigenschaften.

Austausch von Items

Wenn man einem anderen Spieler ein Item gibt, müssen folglich beide Teile (Klasse und Instanz) übertragen werden.
Wenn der Empfänger den Datenbankeintag bereits besitzt, wird die Klasseninformation ausgespart, aber halt:
Hier kommt die Version ins Spiel. Wer sich jemals gefragt hat, warum Extended zu jeder Item-Klasse eine Versionsnummer abspeichert, bekommt hier die Antwort. Die Versionsnummer wird verwendet, um nachzuprüfen, ob Absender und Empfänger eines Items oder einer Kampagne auf dem selben Stand sind. Sollte das nicht der Fall sein, fragt Extended nach, ob man die Version des Senders übernehmen möchte.
Die Datenbank kann immer nur eine einzige Version eines Objekts abspeichern, jedes Item der selben Klasse verhält sich also gleich. Wenn man eine neue Version eines Items erhält (entweder, weil man abspeichert, oder weil man einen neuen Import-Code einfügt), werden automatisch alle Inventar-Instanzen des Items aktualisiert.

Durchbrochene Hierarchien

In der Datenbank wird über innere Objekte eine Hierarchie aufgebaut. Diese Objekthierarchie hat genau zwei Aufgaben:

  • Übersicht beim Erstellen verschaffen
  • dafür sorgen, dass beim Handeln alle notwendigen Klassendaten mitgeliefert werden

Und das war’s. Im Inventar hat sie keinerlei (*) Bedeutung. Das einzige Ordnungsprinzip, das das Inventar kennt, ist die Anordnung der Taschen.
Jedes innere Item wird im Inventar zu einem eigenständigen Gegenstand, selbst, wenn das äußere Item suggeriert, dass das innere Item von diesem produziert/erschaffen/etc. wird oder auf sonstige Weise mit ihm zu tun hat.

(*) Bis auf eine Ausnahme: Wenn man bei einer Tasche festlegt, dass sie nur innere Items enthalten darf, wird es nicht möglich sein, ein anderes Item darin abzulegen.

Jedes Item steht für sich

Dass jedes Item (d.h. jede Instanz) losgelöst von der Objekthierarchie in der Datenbank existiert, hat zwei Konsequenzen.
Einerseits ist es möglich, jedem einzelnen Item einen individuellen Satz von Variablen zu verpassen, also einen individuellen Zustand.
Andererseits ist es nicht mehr möglich, mit einem Item im Inventar Einfluss auf ein anderes zu nehmen.

Typische Fragestellungen:

Wie kann ich die Variablen eines inneren Items verändern?

  • Es ist nicht klar, welches innere Item gemeint ist, denn es könnten mehrere Exemplare im Inventar liegen.
  • Hier liegt ein kategorisches Missverständnis vor: Innere Items sind Eigenschaften der Klasse, aber Variablen gehören zur Instanz.

Wie kann ich das äußere Item löschen?

  • Wie bei der ersten Frage ist nicht klar, welches Exemplar gelöscht werden soll.
  • In diesem konkreten Fall kann man sich behelfen, indem man das Item direkt über die Id anspricht, statt sich auf die Eigenschaft „äußeres Item“ zu verlassen.

Viel Spaß beim Experimentieren und
:wave: bis zum nächsten Sonntag…

2 Likes

Extended am Sonntag #19


Texturen und Bilder

Dokumente können Bilder enthalten, ebenso wie Zwischensequenzen. Bei Zwischensequenzen kann man außerdem noch ein Hintergrundbild einstellen.
Während Extended bei Dokumenten eine Bildersuche anbietet, muss man bei Zwischensequenzen den Bildpfad angeben.
Heute wird es darum gehen, wie man an diese Bildpfade kommt.

Grundsätzliches

In Extended können nur Bilder, Artworks oder Texturen aus dem Spielclient verwendet werden, eigene Kreationen (wie z.B. eine Charakterzeichnung) können nicht angezeigt werden.
Die Experten unter uns werden einwenden, dass man Bilder, die im Addons-Verzeichnis liegen, sehr wohl im Spiel anzeigen kann. Das würde dann aber nur auf dem eigenen Rechner funktionieren, was dem Zweck von Extended, nämlich dem Austausch von Items, zuwiderläuft.

Die Bildersuche im Dokument-Editor enthält bereits eine ganze Reihe an Bildpfaden, die man verwenden kann, sie ist aber nicht vollständig.

Die einfache Methode

Im einfachsten Fall ist das gewünschte Bild bereits in der Bildersuche hinterlegt. Wenn man solch einen Bildpfad benötigt, kann man wie folgt vorgehen:

  • Erstelle ein Dummy-Dokument.
  • Suche das Bild mit der eingebauten Bildersuche und füge es ins Dokument ein.
  • Der Bildpfad steht nun als Teil des {img}-Tags im Dokument, z.B. {img:Interface\QuestionFrame\answer-warboard-classic-StonetalonMountains:512:256}. Hier ist der gesuchte Pfad Interface\QuestionFrame\answer-warboard-classic-StonetalonMountains.

Möchte man dieses Bild für eine Zwischensequenz verwenden, benutzt man genau diesen Pfad.

Die fortgeschrittene Methode

Sollte man kein passendes Bild in der Bildersuche finden, kann man zunächst „informiert raten“. Wenn der Standard-Hintergrund für Zwischensequenzen bspw. Interface\DRESSUPFRAME\DressUpBackground-NightElf1 ist, dann gibt es bestimmt auch Interface\DRESSUPFRAME\DressUpBackground-Orc1
Wer einen besseren Überblick haben möchte, kann sich auch auf vorgefertigten Ressourcensammlungen im Internet umsehen. Auf diversen Projektseiten haben sich Addon-Autoren die Mühe gemacht, alle im Spiel enthaltenen Bilder aufzulisten.
:warning: Beachte, dass alle Bilder aus dem Spielclient geistiges Eigentum von Blizzard sind!

Die Expertenmethode

Texturensammlungen im Internet können veraltet oder unvollständig sein. Für alle, die es wirklich wissen wollen, hat WOW eine eingebaute Exportfunktion. Damit kann man alle Bilder aus dem Spiel in ein separates Verzeichnis extrahieren, wie aus einer ZIP-Datei, um sie anschließend zu betrachten.

  1. Besorge dir ein Bildbetrachtungsprogramm, das in der Lage ist, BLP-Dateien anzuzeigen.
  2. Stelle sicher, dass genügend Platz auf deiner Festplatte ist. Du wirst ca. 6 GB benötigen.
  3. Starte das Spiel mit der Konsolenoption:
    Öffne die Spieloptionen im Battle.net (Zahnrad neben dem blauen Startknopf).
    Setze einen Haken in „Zusätzliche Befehlszeilenargumente“. Ein Eingabefeld erscheint.
    In dieses schreibst du -console.
  4. Logge dich auf einem beliebigen Charakter ein.
  5. Gib den Makrobefehl /run SetConsoleKey("z") in den Chat ein. Dieser Schritt ist notwendig, weil die Standardtaste, um die Konsole aufzurufen, sich mit dem deutschen Tastaturlayout beißt.
  6. Logge dich aus. „Ausloggen“, nicht „Spiel verlassen“.
    Du landest wieder im Charakterbildschirm.
  7. Drücke die Taste z, also die eben festgelegte Konsolentaste.
    Ein Konsolenfenster öffnet sich.
  8. Gib ExportInterfaceFiles art ein und drücke dann die Eingabetaste.
    Dieser Befehl braucht seine Zeit. Das Bild kann für mehrere Minuten einfrieren, denn hier werden mehrere GB an Bilddaten entpackt.
    Übrigens: Mit ExportInterfaceFiles code bekommt man den Lua-Code des Standardinterfaces.
  9. Entferne das zusätzliche Argument aus Schritt 3 wieder. Der Makrobefehl aus 5. setzt sich nach einem Spielneustart von selbst zurück.

Nun sollten alle Texturen in _retail_\BlizzardInterfaceArt\ im WOW-Installationsverzeichnis liegen. Wenn du ein passendes Bild gefunden hast, entspricht der Pfad, den du in Extended angeben musst, dem Teil, der mit Interface anfängt, aber ohne die Dateiendung .BLP.


Viel Spaß beim Experimentieren und
:wave: bis zum nächsten Sonntag…


(OT) Edit/Nachtrag: Defekte Dokument-Links in Version 1.5.0

In Version 1.5.0 hat sich ein Fehler eingeschlichen, der bewirkt, dass externe Links in Dokumenten nicht mehr angezeigt werden.
Wer diese Feature ausgiebig benutzt, kann auf einen Bugfix warten, oder, im Geiste dieses Threads, die defekte Datei vorab selbst austauschen.
Die Korrektur ist bereits auf dem GitHub von Extended verfügbar. GitHub ist eine öffentlich zugängliche Code-Bibliothek für viele Software-Projekte, darunter auch WoW-Addons wie Extended.

  1. Lade die Datei https://raw.githubusercontent.com/Total-RP/Total-RP-3-Extended/8656bced78199dde22792df5823e5569b7ae99e1/totalRP3_Extended/document/document.lua herunter.
    Auch zu erreichen unter https://github.com/Total-RP/Total-RP-3-Extended/blob/master/totalRP3_Extended/document/document.lua. Von dort klickt man auf „History“ und dann auf das Commit vom 18. März („Document URL fix“). Dort klickt man rechts auf der Titelleiste der geänderten Datei auf weiteres „(…)“ und dann „View file“. Zum Schluss führt ein Klick auf „Raw“ zur gesuchten Datei.
  2. Speichere die Datei in deinem WoW-Installationsverzeichnis unter _retail_\Interface\AddOns\totalRP3_Extended\document\document.lua.

Wer so vorgeht, bekommt das Beste aus beiden Welten, die aktuellste Version, aber ohne den nervigen Bug.
Sobald die nächste Extended-Version erscheint, werden alle Dateien regulär mit der neuesten veröffentlichten Version überschrieben, es ist nicht notwendig, diesen kleinen Vorab-Fix „aufzuräumen“.

2 Likes

Jeah! Vielen dank für die Infos!

1 Like

Extended am Sonntag #20


Kampagne: Hasenjagd

Im letzten Teil dieser Miniserie stelle ich eine kleine Kampagne vor, in der man sich auf die Suche nach allerhand Hasen begeben soll. Natürlich hat das total überhaupt keinen Bezug zu einem gewissen Feiertag, von dem ich nie etwas gehört habe.

Importcode: Hasenjagd !nRv3UTTXs4NLauGc0ARs9VKr7Xq)fBLAlL4v2UNGasrjTIAJPivixzh7IYNKdW5M(mKRYD6f7mZSl)rYYXXXQbhedjXLlNz2z)MVzMLXmV5aZE5H)mkcFwWKzuYOAH8LRuQCR3(kNUM9kcZG1Th8P0Kn4FBYA1WKXAPUEcxAlCdvx8Mo4u)GrbR53A5zpNBjcTMzhWXHB0kvcV58ujCsx13N2gN1P9nz96JxFCd14nBq6VLjlCb311AUTJyS1cF3BN7hSywG9OrcyAT7yYYLlx0WjlJgov4bgw0W5IXZIg6bFkZzYE9zMnbPdw)PCHx0WEGfgnuect8y7qo8006CeQ141lBaQ9WcwGiTDjlCd7uBF4ZrYozUSb)bm(SGOHZShb6ych1P)iBxh7aj3BgOtyeh(0LG16bMEh0QUeVkypy(2HHrd5H6N8grWvU06XrmcxoVSlSCKAhjZ3RJNKhG)uzZ4glJR2DHFjMaMMpiBlXeRqU7utMDGtO6(m2l)dCZVxL81XnC0fG)Jb)5coitMNjRaoqX7lvHKp3YEYK1e4gOOOHBbvenmmp6RMaRshhc8LxP9ELaX6Dn3t6hC7M2IenL7zfFyjpucGJGR6p69T994pzZHmaFYG22YVOEWmqtekdoBfeM1NLUlKbbPX9WV0R2hge1gamTxI4LWeWBc8aX234FZlOn(ySMwIOYAQaCTTdMcGA8rvc4A)Gqje4W9omA42b(rVQlnFBhaRfWfrdBl8C4he9QOxTpbeHGOvFkycI)GNSzG94zU2WghE73U6ZoC6xnyT62fFiunW8AaclmeKZWJ3Rr0q2ED2941ABfVQVeuYCFj)lQKjcBxFhRqjeu(KXmzGWtCDSgT0ZBl41SWgLIbFqIXX6CbS1D2RlA150(daASw9JNN2knzGBF8vwCmIW6A7aWon102KOrK7V9BAQ6RrP1aqeX35Nv3iryl9esRjGPz7nMdmPcpzIazlCTVf2wqN7(5lwVCoYb3B)I1Rwix5ez(RjkRxbZmRXgzz13AibdJ1HVoNL6iopKtpk7Wdpmt4a4l6qaPl5Usaxgc)C6QpdmQem(AEWe75ZLifzhbIIBDma1AWyDIg(MZ7Wg0P3lEbeW8AgS0YxRcPuio5eqW)U98f2oinb4U1Hta5mxtoZfeKbUXBAq0rSM4fx2a)8cyid4bpJgQdDrBuhfmkQsvbKxwW60YOkOD6zoNsqaziHpBrc(SUaKaZb8EBNjzdmqVXZlSOuTcfl9fcmKAqgRprLWoZKvg(cmOYFSKAtb(Q950k70lXV00DD3c5LMPd(vAmqY0A1gIKQ)lgL(LcfIgwO4bLQCqPAW4W(aJ7cq6W9hazXDDjF89gtRgg7bKZfQyGyitxTTMsYm5l6lvPnC8h4ZK8fFlX)XP7)Ir9PreDITkjHzITfI6EjrYVv2FWj0gHmhDmm5tieBNxtOOZXvD7c1QwOY9qXyjgGR5iypcJbNApM)UJobImE3P(t4UHV78Uw9eoZKJ8d84DCN(UQSZSoYoau5Gao3QLTN)IBnaVXjNNWnqmaAB(v2GfFPVoBYCfVFtUR)mVLEohQm7t68YnSA0o)H)ugS4aLmpy6sx3)cLCXyjtPKgHX5q5quHtzxvpSdzBUajgcRL7XaSY)EYdQ36gmnNi8hJg(EU8UFe3cKYN5QPCSwpD1NGIq5OtclqfuSUUuSWoihPhzablNRZDt5CtZZI5MHz4tUckH7HpvhqLytPdupWCBxqhISRUCp9vx1yr(RT3YwKQqvGAEjUGigBGBagyehuFmR9)sP2E971zD129uu6n7tXINFwwiC3w97XExwo2tuKWd6tFDjWcubiWoUJ6BGPvNOuZIb0ej)MP5U63KymskrdxxX9rqfGp)wOoQaXQprLTtm3qsRgur4Ke(GHQwaIzazrsYgM2dJ9iHRqERLe2AVckYsLL7LA9ekqG4iouZw8fR(7zZ3tRUjyvzrdLl9wRBMJvnsS6ZJ4iN5l0Ldk)67XkUNSDvxpnGYn12maRxgq(p7LtD4HlG83WkDjcQdPcNeaM)3bopIL7)xAQrLx4BROWn1JCRnSqTnfWN7F9J2QswyvMkohd6mWw13KHHbUgF4UMEGwyE861YgM84TWG7(R(pkGiS1cB7nUJh4lNrLRbBYJVcXcHej3vUQ8feqbYJKjmaGlegsHtgptWx9FH7Chsq2KFdulOMs5L(sFIQgjAcqAiCKRixdusiwM30z2ldLcoMU(gFStOeUxhEaCXu4jCcSNctb5J5btIXIBVplSpTJS9UJSSvFclfvWHL7jaeh0IatjIwciMRKXl2qFkbJ3Yamui8WDpkF7Tc9Lq5s(hxhE3jygsn7bTS9d)5tfj(xKDu8ja)PtnySpbOwVHhKCNMYyyHltBp5PAtu0X6bfu7lPnlr1lsw5Zoi8R4Wl(MddzAfn4b6CkGda6q8eIUIkMaduYeGC3YKWiiTLmBlwDNWTD1prtHlvIX1(EQiqapGRsnvoGVVBPhF2Cm1NQRQ65FSUQsJhZ2svrQXOMpElv5Z0s1Cr4ylyHaXacUYHyzuiU5kvlA7KwSGEST8xaI3B9J1cUhUtFdz)uF0ElgBHJwspdiJHdxMUdV9WqbjMpcvyKs9G(0qAHRuIepDvOIlyRNU2dBkloyAuI5U1Wh0(PZminY5gvOWKKyGShyqEJQgfQMCRFAJtm4jlUcvkxtbZXOHFsvi83S4QuQAD9rpuHKw1NJ0QvVyDvmFVAK0Q)CKwH6flutDN8gK4Y)82jkBuRAch6uBH7P8WqBhiKQnMw83jupMLs4qPRWSl7PByaJYxdrLldHdcOgbi6XZWlOotE0Jq9FcW1MhhLsT(JE)xnlpjgFRnKBgvMKe8RNs)(YCJG3k4aLUVx7XZmNVw(AvFWCZiWMv973UrMGPD5MX6IDNSxKkYnCzy8gRY3pxww6SDPpBd5UtCAzK5gEnevZQ)9ZRLHzCxKsjLxetP8ZBKs5BEpyDRCNSfKkYn2bYthnzTVFBbzs1TlXTRl2DIplvKB4ZQJdqPuFwNC7gvV)GhAlUhniBQYhRsReNO14Lbqgx5xVZCloWKZsYJw0Ym)7FKtSxU9ZattImq1pp(2NwIDfCmDCY6J8knzPEA9eC1lieCWhV6VHUnYCazjBX6j33vCnmJBGUONTHuv0(65nW31wS5muby6z0i4kPiCTPOxzQv9j9X6O3(lC4cOuYYB)9oGVVH8gXVVbdJdku4G8LtFFetUaUFUY5m0VIJQjVAI8huUYbLGPkX3nb(FRcjDgNudEBTHpz2tie7Z598B4UJHI4KcphaJdnL5rNSe7mOHQ8rd3pAyEddv)Bm9rQrhNBAJA7PhrD6dyNGo0rwSLZJjhDARSJSdcElq(0qDgL7d9YmYfWPPhYyCBuHCaSdt5eWL5QA5hjLv(dPP5)7d

Wie es funktioniert

… muss wohl ein Geheimnis bleiben, denn das kleine Rätsel soll doch nicht gespoilert werden.
Wer dennoch wissen möchte, wie die Kampagne aufgebaut ist, kann nach dem Importieren gern einen Blick in die Datenbank werfen.

Wer weiß, vielleicht findet sich ja jemand, der das Abenteuer weiterführt?


Viel Spaß beim Experimentieren und
:wave: bis irgendwann mal wieder…

2 Likes

Die Textkopiermaschine

Früher, wo alles besser war, wo Extended noch GHI hieß und Gott noch ein DJ war, konnte man den Inhalt von Büchern einfach in ein eigenes Item übertragen.
<Suggestivfrage>Ob das auch mit Extended geht?</Suggestivfrage>

Hör auf zu labern und gib mir die Lösung!

Auf Wago findest du die aktuelle Version des Items: https://wago.io/y8juN17eZ.
Mit einem Klick auf „Import-String kopieren“ erhältst du einen Import-Code, den du wie gewohnt in deine Objektdatenbank einfügen kannst.

  1. Bereite das Dokument-Item („Rohling“) vor, in den der Text eingefügt werden soll. Dieses Item muss ein leeres inneres Dokument enthalten.
  2. Lege die Kopiermaschine in dein Inventar. Du kannst dazu die Datenbank-Funktion „Zu Hauptinventar hinzufügen“ benutzen. Die Kopiermaschine findest du unter „Datenbank anderer Spieler“.
  3. Die Maschine benutzt den Makro-Effekt. Damit sie funktioniert, musst du sie in den Sicherheitseinstellungen freischalten (Alt+Rechtsklick).
  4. Die Kopiermaschine ist ein Behälter. Öffne ihn mit Doppelklick und lege deinen Dokument-Rohling in den ersten Platz der Maschine.
  5. :warning: Beachte: Die Itemdaten deines Rohlings werden verändert! Eventuell vorhanderer Text wird überschrieben. :warning:
  6. Lies die Warnung in Schritt 5.
  7. Öffne das gewünschte Buch bzw. den Brief im Spiel.
  8. Benutze die Maschine per Rechtsklick.

Wenn alles geklappt hat öffnet sich die Datenbank und der Text ist in der Dokumentvorlage sichtbar. Du kannst ihn jetzt weiterbearbeiten.

Wie funktioniert das Teil?

Idealerweise sollte diese Funktion Teil von Extended oder von einem TRP3-Zusatzmodul sein. Ich habe es in ein Item gegossen, um euch ein weiteres Addon zu ersparen. Wer Lust hat, aus dem Code ein Modul zu bauen, darf das gern tun.

Kern des Items ist ein Makro-Effekt. Dieser führt ein Lua-Skript aus, das ungewöhnlicherweise in den Item-Notizen zu finden ist. Hier war also etwas schwarze Magie erforderlich.

Das Skript aus der Item-Notiz ist das eigentliche Herzstück. Der obere Teil sucht nach dem Item (das Item sucht sich quasi selbst), während der eigentliche Kopiervorgang am Ende steht:

local currPage = ItemTextGetPage()
for i = 1,currPage-1 do
	ItemTextPrevPage() -- blättere zur ersten Seite zurück
end
local PA = {}
table.insert(PA, {TX = "{h1:c}" .. (ItemTextGetItem() or "") .. "{/h1}\n" .. ItemTextGetText()}) -- erste Seite mit Überschrift
while ItemTextHasNextPage() do
	ItemTextNextPage() -- alle anderen Seiten einfügen
	table.insert(PA, {TX = ItemTextGetText()})
end
documentClass.PA = PA -- Au weia!

In der letzten Zeile geschieht dann das Ungeheure. Eigentlich sollte man die Itemdatenbank nicht so direkt bearbeiten. In diesem Fall geht alles gut, aber es wäre schöner, wenn die Funktion in das Addon selbst oder in ein Modul wandert, wo sie eigentlich hingehört. :wink:

7 Likes

Mit dem neuen Inhaltsupdate 9.2.5 erhielten auch TRP3 (auf Version 2.3.11.) und TRP3 Extended (auf Version 1.5.1.) ihre Updates, die das oben zitierte Problem beheben. Ich empfehle daher zeitnah auf die entsprechenden Versionen zu updaten.

Womöglich gar auch die ideale Gelegenheit dem „Guide für Backups und der Datenrettung“ nochmals einen Besuch abzustatten, sollte man sich zu den Leidgeplagten zählen, die öfters nach einem Update ihre Flags missen.

▲ Zurück nach oben