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.
- Bereite das Dokument-Item („Rohling“) vor, in den der Text eingefügt werden soll. Dieses Item muss ein leeres inneres Dokument enthalten.
- 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“.
- Die Maschine benutzt den Makro-Effekt. Damit sie funktioniert, musst du sie in den Sicherheitseinstellungen freischalten (Alt+Rechtsklick).
- Die Kopiermaschine ist ein Behälter. Öffne ihn mit Doppelklick und lege deinen Dokument-Rohling in den ersten Platz der Maschine.
- Beachte: Die Itemdaten deines Rohlings werden verändert! Eventuell vorhanderer Text wird überschrieben.
- Lies die Warnung in Schritt 5.
- Öffne das gewünschte Buch bzw. den Brief im Spiel.
- 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.