[Modding] TP2s, TRAs und EET

Shai Hulud

Senior Member
Registriert
18.01.2015
Beiträge
194
Ich plane, meine Übersetzung zu BG:SoD zu erweitern und einen deutschen Sprach-Patch zu veröffentlichen, der auch BG1:EE und BG2:EE abdeckt.

Da ich mit Modding bisher noch nicht so viel Erfahrung habe, stellen sich mir bei der Erstellung der TP2-Datei für die Installation nachfolgende Fragen:

Nach Tipps von @Jastey sieht meine TRA-Datei für BG:SoD bisher wie folgt aus:
Code:
@%eetmod%34000 = ~(placeholder) Story Ring~
@%eetmod%34001 = ~(placeholder) Story Ring description~
@%eetmod%34002 = ~Krone der Lügen~
…

Meine TP2-Datei enthielt bisher:
Code:
ACTION_IF GAME_IS ~bgee~ AND FILE_EXISTS_IN_GAME ~bd0103.are~ THEN BEGIN
    OUTER_SPRINT ~eetmod~ ~~
    COPY ~bgsodde/de/dialogs.tra~ ~bgsodde/tmp.tra~ EVALUATE_BUFFER
    STRING_SET_RANGE #34000 #71403 USING ~bgsodde/tmp.tra~
END

ACTION_IF GAME_IS ~eet~ THEN BEGIN
    OUTER_SPRINT ~eetmod~ ~2~
    COPY ~bgsodde/de/dialogs.tra~ ~bgsodde/tmp.tra~ EVALUATE_BUFFER
    STRING_SET_RANGE #234000 #271403 USING ~bgsodde/tmp.tra~
END

Die EET-Kompatibilität wird bei den Strings also durch das Voranhängen einer 2 an die String-ID sichergestellt. Das funktioniert bei BG:SoD mit einer String-Range 34000–71403 auch wie vorgesehen.
Wenn ich es richtig verstehe, muss ich mir für BG1- und BG2-Strings etwas Neues überlegen, da ich nun eine String-Range von 0–103583 abdecken muss. Zum Beispiel würde eine String-ID @3 ja nur einfach zu einer @23, nicht zu einer @200003, und eine @100000 zu einer @2100000, nicht zu einer @300000.

1) Bietet mir WeiDU irgendwie die Möglichkeit, Zahlen aus dem Text der TRA-Datei zu parsen, 200000 zu addieren und das in der TP2-Datei zu nutzen? Wenn nicht, müsste ich zwei statische verschiedene TRAs verwenden – eine für EET, eine ohne. Prinzipiell auch machbar.

2) Laut WeiDU-Doku werde ich den Befehl STRING_SET_RANGE nicht mehr verwenden können, weil ich nun mehr keine kompletten String-Ranges in den TRAs habe, sondern nur punktuelle String-Verbesserungen. Bedeutet das zum Beispiel, ich muss für 2000 Strings in einer TRA auch 2000 Zeilen mit STRING_SET in der TP2 verwenden? Oder gibt es da einen eleganteren Weg?
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.945
Was ich glaube ich von @Taimon habe ist die Möglichkeit, die Zahl (als Zahl) zu definieren. In der tp2 habe ich das hier:
Code:
OUTER_SET eet_200000 = GAME_IS ~eet~ ? 200000 : 0
Verwenden tue ich es so:
Code:
/* Fenster */
<<<<<<<< .../inlined/cre_patching.tph
>>>>>>>>
/* Fenster */
OUTER_SET strref_34426 = eet_200000 + 34426
APPEND_OUTER - ~.../inlined/cre_patching.tph~
"COPY_EXISTING ~bdwave36.cre~ ~override/C#STFENS.cre~
SAY NAME1 #%strref_34426% //Fenster"
INCLUDE ~.../inlined/cre_patching.tph~
Ich habe keine Ahnung, ob man das auch ohne den Umweg über die zusätzliche Auswertung als tph für tra-Zeilen verwenden könnte.
EDIT: Ansonsten habe ich den umständlichen Weg genommen und habe tatsächlich die benötigten Nummern aus BG1 einzeln definiert.
 

Taimon

Infinity Engineer
Registriert
25.11.2001
Beiträge
1.501
Bietet mir WeiDU irgendwie die Möglichkeit, Zahlen aus dem Text der TRA-Datei zu parsen, 200000 zu addieren und das in der TP2-Datei zu nutzen?
Prinzipiell sollte das gehen, aber WeiDU hat meines Wissen nach keine spezielle Funktion in der API, um das einfach zu parsen.
Müsste man also manuell als Textdatei parsen, wobei das mit WeiDU schon etwas umständlich werden könnte. (evtl. READ_2DA_ENTRY nutzen)
Alternativ kann man natürlich auch eine andere Skriptsprache nutzen und eine tph-Datei generieren (vor dem Mod-Release), die dann einfach eingebunden werden kann.
Falls beim Parsen mit WeiDU Hilfe benötigt wird, könnte ich mir das nochmal genauer anschauen.

Bedeutet das zum Beispiel, ich muss für 2000 Strings in einer TRA auch 2000 Zeilen mit STRING_SET in der TP2 verwenden?
Ich denke schon, aber das würde ich nicht manuell machen, sondern generieren lassen. (Entweder durch WeiDU selbst oder mit Hilfe einer anderen Skriptsprache.)
Wenn die Zuordnung zur strref über die tra_id gemacht werden kann, sollte das funktionieren.
 

Shai Hulud

Senior Member
Registriert
18.01.2015
Beiträge
194
@Jastey @Taimon Danke euch beiden für die Antworten.
Ich werde es dann so machen, für und ohne EET verschiedene TRA-Dateien von meinem Übersetzungs-Framework generieren zu lassen. Das erscheint mir die einfachere Variante.
Die vielen STRING_SETs lasse ich dann dadurch ebenfalls automatisch erzeugen.
 

Shai Hulud

Senior Member
Registriert
18.01.2015
Beiträge
194
Notiz an mich selbst und die Nachwelt, sofern die genauso explorativ versucht vorzugehen wie ich:

In einer TP2-Datei niemals eine Kette mehrerer STRING_SETs verwenden:
Code:
    STRING_SET 9 @9 USING ~shtp/de/bg1.tra~
    STRING_SET 23 @23 USING ~shtp/de/bg1.tra~
    STRING_SET 28 @28 USING ~shtp/de/bg1.tra~
    STRING_SET 59 @59 USING ~shtp/de/bg1.tra~
    …
sondern immer die von der WeiDU-Dokumentation vorgeschlagene Liste:
Code:
    STRING_SET 9 @9 23 @23 28 @28 59 @59 …  USING ~shtp/de/bg1.tra~

Dann dauert die Installation einer Mod auch keine 60 min, sondern nur 0,2 Sekunden.
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
12.945
Oben