Entpackt zuerst die oben genannten GD Dateien in einen Ordner „GDEntpackt“: _compiledAnimation.pak, _compiledImage.pak, _compiledMaterial.pak, _compiledMesh.pak, Templates.pak, Strings.pak
Und die G3 Datei in einen Ordner „G3Entpackt“: Templates.pak
WICHTIG: Entpackt die GD Dateien in eine anderes Verzeichnis als die Datei aus G3.
2)
Erstellt auf eurer Festplatte einen Ordner mit einem Namen eurer Wahl. Ich nenne meinen für dieses Tutorial „Arbeitsverzeichnis“.
In dem Ordner erstellt ihr dann 5 weitere Ordner und zwar: „_compiledAnimation“, „_compiledImage“, „_compiledMaterial“, „_compiledMesh“ und „Templates“ (natürlich ohne die Anführungszeichen).
3)
Ladet euch hier g3_tple_description_***lw.7z herunter.
In diesem Archiv befindet sich eine tinyhexer_readme.txt. Am Ende dieser stehen Installationshinweise. Installiert also den TinyHexer und das Script.
Habt ihr das geschafft könnt ihr mit dem nächsten Schritt weitermachen.
1. Template die zu dem Item gehört finden
Öffnet die Stringtable.ini (befindet sich in GDEntpackt\Strings\). Sucht in ihr nach dem Namen des gewünschten Gegenstandes.
Ich suche nach „Praetor“, da das der Name des Gegenstandes ist den ich portieren will.
Ich finde dann das hier:
Code:
FO_GFG_Praetor_Armor_01=Praetor;;Praetor;;Armure de Prétorien;;Praetor;;Pretor;
Das sagt mir das die Template „GFG_Praetor_Armor_01“ im Namen hat. D.h. ein Teil des Namens der Template ist alles vor dem „=“, nur ohne das „FO_“.
Deswegen durchsuche ich jetzt denn GD Templates Ordner (GDEntpackt\Templates\), den ihr vorher hoffentlich entpackt habt, nach „GFG_Praetor_Armor_01“.
Bei mir wird nach dem Suchvorgang genau eine Datei angezeigt: GFG_New_Armours_GFG_Praetor_Armor_01.tple.
2. Die „erste“ Datei (das Mesh) und den MaterialSwitch finden
Öffnet die Datei mit dem TinyHexer und lasst Lichtwichts Script drüberlaufen. Wie das geht seht ihr auf dem Bild. [Bild: Bild_17.png]
1) Klicke auf das rot markierte bei 1. So öffnest du die Strukturansicht.
2) Klicke das rot umrahmte bei 2.
3) Wähle Lichtwichts Script aus, also Klick bei Markierung nahe der 3.
Wenn das Script fertig geladen hat, sucht nach „.fxa“ (Das Suchfenster öffnet ihr mit Strg+F). Jetzt springt das Script an eine Stelle, das dürfte dann so aussehen: [Bild: GDtoG3TuTBild_1.PNG]
Kopiert jetzt alles was vor dem gelb markierten „.FXA“ steht. In diesem Beispiel wäre das zu kopierende „GFG_Hero_Body_KingGuard_01“.
Jetzt suchen wir im _compiledAnimation Ordner (GDEntpackt\_compiledAnimation\) nach dem gerade eben kopierten Dateinamen.
Ihr müsstet eine Datei namens GFG_Hero_Body_KingGuard_01.xact finden.
Kopiert die GFG_Hero_Body_KingGuard_01.xact in den _compiledAnimation Ordner (Arbeitsverzeichnis\_compiledAnimation\) der sich im Arbeitsverzeichnis befindet..
Diese Datei ist das Mesh der Rüstung und da die Rüstung ein bewegliches (z.B. beim laufen) ist, reicht hier kein gewöhnlicher Mesh, dazu aber später mehr.
Material Switch
Wo wir die Template gerade geöffnet haben, nutzen wir gleich die Gelegenheit und schauen auf was der Material Switch steht, denn wir brauchen ihn für Schritt 3.
Sucht in der Strukturansicht nach „MaterialSwitch“.
Ihr solltet nun das sehen: [Bild: GDtoG3TuTBild_18.PNG]
Wie ihr auf dem Bild sehen könnt (ist rot umrahmt), steht der MaterialSwitch „1“, merkt ihn euch.
Was das bedeutet erkläre ich später.
3. Die zweite Datei (die Material) finden
Als nächstes öffnet die gerade eben kopierte Datei mit dem TinyHexer. Lichtwichts Script wird jetzt nicht benötigt.
Scrollt im TinyHexer jetzt ganz nach unten. Dort dürfte es ungefähr so aussehen. [Bild: GDtoG3TuTBild_2.PNG]
Interessant für uns ist dieses hier: GFG_Hero_Body_KingGuard_01.xshmat
Denn in dieser Datei, sie nennt sich Material, sind die Texturen der Rüstung eingetragen.
Deswegen durchsuchen wir jetzt den _compiledMaterial Ordner (GDEntpackt\_compiledMaterial\) nach dieser Datei und kopieren sie in den _compiledMaterial Ordner (Arbeitsverzeichnis\_compiledMaterial\) der sich Arbeitsverzeichnis befindet.
WICHTIG: Am Ende der „.xact“ können mehrere „.xshmat“ eingetragen sein. Wenn das der Fall ist, führt Schritt 4 für jede „.xshmat“ aus.
4. Die Texturen in der Material finden
Als erstes öffnet ihr die kopierte „.xshmat“-Datei und lasst anschließenden Lichtswichts Script drüberlaufen.
Wie ihr euch vielleicht erinnert, stehen in dieser Datei die Namen der Texturen. Sucht also nach „.tga“. [Bild: GDtoG3TuTBild_3.PNG]
Wie schon in Punkt 2, nur anstatt .fxa eben .tga, kopieren wir jetzt alles was vor .tga steht, also: „G3_Human_KingsGuard_Body_Diffuse_S1“.
Ich komme nun auf den Material-Switch zurück, der in diesem Falle „1“ beträgt.
D.h. Die richtige Textur heißt „G3_Human_KingsGuard_Body_Diffuse_S2“, obwohl in der Material "S1" steht.
Wenn der Material Switch „0“ wäre, würde die Textur „G3_Human_KingsGuard_Body_Diffuse_S1“ heißen.
Wenn er „2“ wäre „G3_Human_KingsGuard_Body_Diffuse_S2“.
Durchsucht den _compiledImage Ordner (GDEntpackt\_compiledImage\) nach dem kopierten, entfernt aber die „1“ hinter „G3_Human_KingsGuard_Body_Diffuse_S“.
Ihr sucht also nach „G3_Human_KingsGuard_Body_Diffuse_S“.
Wenn die Suche fertig ist, müssten euch 2 Suchergebnisse angezeigt werden: „G3_Human_KingsGuard_Body_Diffuse_S1.ximg“ und „G3_Human_KingsGuard_Body_Diffuse_S2.ximg“.
Ihr nehmt die „G3_Human_KingsGuard_Body_Diffuse_S2.ximg“, weil der Material Switch ja „1“ ist.
Da dies ein Körperteil-Textur ist und diese in G3 immer Ordner „_compiledImage\animation“ liegen, erstellt ihr im _compiledImage Ordner (Arbeitsverzeichnis\_compiledImage\),
ich meine den der im Arbeitsverzeichnis liegt, einen Ordner namens „animation“. Kopiert in diesen die Textur hinein.
Benennt die kopierte Textur in „G3_Human_KingsGuard_Body_Diffuse_S1.ximg“, d.h. Macht aus dem „S2“ ein „S1“.
Sucht nach weiteren Texturen in der .xshmat. Achtet auch bei diesen auf den Material Switch und das Umbenennen,
Wenn mal keine Textur vorhanden ist, die der Nummerierung durch dem Material-Switch entspricht, kopiert einfach die „S1“, also genau die, die in der .xshmat steht.
Kopiert sie alle in den animation Ordner. In einer .xshmat sind MAXIMAL 3 Texturen eingetragen.
Achtet jedesmal darauf ob ihr schon eine Textur mit gleichem Namen kopiert habt, den die Suchfunktion fängt, wenn sie nichts mehr findet, wieder vom Anfang aus an zu suchen.
So würdet ihr dann in einer Endlosschleife hängen und nie fertig werden .
5. Erstellen der Template
Dieser Arbeitsschritt ist wahrscheinlich der schwierigste. Aber keine Angst, das schafft ihr schon
Damit man die Rüstung im Spiel spawnen kann, muss man noch eine Template für die Rüstung erstellen.
Am einfachsten geht das indem man eine bereits vorhandene Rüstungs-Template klont.
Die Templates für G3 Rüstungen befinden sich in „G3Entpackt\Templates\NPC\__Master_Humans“. Sie fangen alle mit „HumanBodyParts_Body_“ an.
Erstellt jetzt im Templates Ordner (Arbeitsverzeichnis\Templates\), der im Arbeitsverzeichnis liegt, einen Ordner namens „NPC“ und in diesem einen mit dem Namen „__Master_Humans“.
Kopiert danach eine Template und die Datei „HumanBodyParts_Body.lrtpldatasc“ in den Ordner. In meinem Beispiel nehme ich die „HumanBodyParts_Body_Body_AssMage.tple“.
Als nächstes benennen wir die Template um.
Aus „HumanBodyParts_Body_Body_AssMage.tple“ machen wir „HumanBodyParts_Body_Body_PraetorGD.tple“.
Das war der leichte Teil, jetzt müssen wir die Template noch intern umbenennen und ihre Hashes bearbeiten.
Dazu öffnet die Template mit dem TinyHexer und lasst Lichtwichts Script drüberlaufen.
An dieser Stelle fängt die Stringtable der Template an.
Was ist die Stringtable?
Wenn ihr euch in der Strukturansicht umschaut seht ihr doch sicher die „grünen Wörter“.
Diese Wörter stehen alle in der Stringtable und an vielen Stellen der Datei wird auf sie verlinkt.
D.h. wenn man die „grünen Wörter“ ändern will, muss man die Änderung in der Stringtable vornehmen.
Klickt in der Strukturansicht auf „HumanBodyParts_Body_Body_AssMage.tple“ (rot markiert im obigen Bild), jetzt dürfte im Hex-Editor etwas markiert worden sein.
Das müsste so in etwa aussehen. [Bild: GDtoG3TuTBild_5.PNG]
Ändern wir nun „ HumanBodyParts_Body_Body_AssMage.tple“ in „HumanBodyParts_Body_Body_PraetorGD.tple“, also den neuen Namen der Template, um. [Bild: GDtoG3TuTBild_6.PNG]
Weil der neue Name länger ist als der alte müssen wir noch die Längenangabe anpassen.
Dazu klickt in der Strukturansicht auf die 37 vor HumanBodyParts_Body_Body_AssMage.tple. [Bild: GDtoG3TuTBild_7.PNG]
Jetzt wird im Hex-Editor 25 00 markiert. D.h. der alte Name hatte 37 Zeichen, denn wenn man den Hex-Wert 25 in einen dezimalen Wert umwandelt so beträgt dieser 37.
Der neue Dateiname hat 39 Zeichen, d.h. wir wandeln 39 in einen Hex-Wert um.
Der Hex-Wert lautet 27. Also machen wir aus dem 25 00 ein 27 00.
Das sollte dann so aussehen: [Bild: GDtoG3TuTBild_8.PNG]
Jetzt drückt die beiden grünen Pfeile in der Menüleiste der Strukturansicht, damit aktualisiert ihr das Skript.
Wenn ihr alles richtig gemacht habt sollte es, wenn ihr wieder zur Stringtable runtergescrollt habt, so aussehen. [Bild: GDtoG3TuTBild_9.PNG]
Jetzt machen wir das Ganze noch mit Body_AssMage, das in der Strukturansicht eine Zeile unter dem vorher umbenannten steht. Aus Body_AssMage machen wir also Body_PreatorGD.
Auch hier müssen wir die Längenangabe wieder anpassen. Alter Hex-Wert 0C 00, d.h. 12 Zeichen.
Der neue Name hat 2 Zeichen mehr als der alte, also 14 Zeichen. Als Hex-Wert 0E 00, also machen wir aus 0C 00 ein 0E 00.
Aktualisiert wieder das Skript, sieht es so aus ist alles gut. [Bild: GDtoG3TuTBild_10.PNG]
Zuweisen des richtigen Meshes
Eigentlich ist dieser Schritt den beiden vorherigen sehr ähnlich. Genauer gesagt müssen wir eigentlich wieder etwas „umbenennen“.
Erinnert ihr euch noch an die Datei die wir ein Punkt 2 kopiert haben? Richtig, es war das Mesh der Rüstung.
Dieses Mesh müssen wir in unserer neuen Template noch eintragen.
Wie in Punkt 2 suchen wir in der Strukturansicht wieder nach „.fxa“. Für uns sind nur die Fundstellen in der Stringtable interessant.
Ihr dürftet „G3_Hero_Body_DarkMage.FXA“ und „G3_Hero_Body_DarkMage.fxa“ finden, dass sind die Links auf die Meshes der Rüstung von der die Template stammt.
Diese beiden müssen wir so verändern, dass sie auf das Mesh unserer Rüstung zeigen.
Unsere Mesh heißt „GFG_Hero_Body_KingGuard_01.xact“, folglich müssen „G3_Hero_Body_DarkMage.FXA“ in „GFG_Hero_Body_KingGuard_01.FXA“,
und „G3_Hero_Body_DarkMage.fxa“ in „GFG_Hero_Body_KingGuard_01.fxa“ ändern.
Das geht wie in den vorigen Schritten und vergesst nicht die Längenangabe anzupassen.
Hat alles geklappt und das Script nach dem aktualisieren keinen Error gebracht seid ihr bereit für den nächsten Schritt.
Wenn ihr wollt könnt ich nochmal nach .fxa suchen und überprüfen ob alles geklappt hat.
Bearbeiten der Hashes
Wir müssen Hashes der Template einzigartig machen.
Die Hashes sind so etwas wie Namen, man beötigt sie z.B. um einem NPC eine Rüstung zuzuweisen, aber das wäre wieder ein anderes Tutorial.
Es gibt 2 Hashes pro Template, den Item Hash (wird in der Strukturansicht als „Item – Header“ bezeichnet)
und den Reference Hash (wird in der Strukturansicht als „Reference – Header bezeichnet).
Scrollt also in der Strukturansicht runter bis ihr auf den „Item Hash“ stoßt. [Bild: GDtoG3TuTBild_11.PNG]
Habt ihr ihn gefunden klickt auf das im obgien Bild rot umrahmte.
Der Hex-Editor springt jetzt an die Stelle, an der sich der Hash befindet. [Bild: GDtoG3TuTBild_12.PNG]
Allerdings ist der Hash länger als das markierte, denn bisher ist nur ein Teil des Hashes markiert. Auf dem nächsten Bild seht was alles zum Hash gehört. [Bild: GDtoG3TuTBild_13.PNG]
Schaltet jetzt auf den Überschreiben-Modus des Hex-Editors um. Macht dazu einen Rechtsklick auf das „Einfügen“ in der Leiste die am Boden des Hex-Editors ist.
In dem sich jetzt öffnenden Kontextmenü entfernt ihr den Haken vor „Einfügen-Modus“.
Überschreibt den Hash mit zufälligen Zahlen zwischen 0 und 9 und Buchstaben von A bis F, d.h. Ihr könnt einfach wild in die Tasten hauen .
Nun muss noch der Reference-Hash geändert werden. Wenn ihr in der Strukturansicht etwas weiter nach unten scrollt, dürftet ihr ihn finden (haltet nach „Reference - Header„ Ausschau).
Macht hier das gleiche wie beim „Item-Hash“, ABER gebt etwas anderes ein als beim „Item-Hash“.
Aktualisiert das Skript, wenn keine Fehler auftreten speichert die Template ab. Das geht auf „Datei“ und dann „Speichern“.
Eintragen in die *.lrtpldatasc
Öffnet die „HumanBodyParts_Body.lrtpldatasc“ die sich im gleichen Ordner wie die Template befindet (G3Entpackt\Templates\NPC\__Master_Humans).
Ihr könnt sie mit dem normalen Windows Editor (Notepad) öffnen.
Kopiert eine Zeile und fügt sie am Ende der Datei in eine neue Zeile ein.
Als Beispiel nehme ich diese Zeile:
Nun muss noch dieser Teil „332a4295-8d64-49b7-9e42-3877c6b2ef38“ angepasst werden.
Dazu geht, falls ihr den Hex-Editor noch nicht beendet habt (falls das der Fall ist, öffnet ihr die Template wieder mit dem TinyHexer und lasst Lichtwichts Skript drüberlaufen),
in die Strukturansicht.
Sucht dort wieder nach dem Item-Hash. Und kopiert das auf dem Bild blau umrahmte. [Bild: GDtoG3TuTBild_16.PNG]
Ersetzt in „HumanBodyParts_Body.lrtpldatasc“ das „332a4295-8d64-49b7-9e42-3877c6b2ef38“ mit dem eben kopierten.
Damit ihr die Rüstung auch in Gothic 3 benutzen könnt, müsst ihr die portierten Dateien noch ins Gothic 3 Verzeichnis kopieren.
Kopiert den Inahlt des Arbeitsverzeichnisses nach „Gothic III\Data\“.
8. Anmerkungen
Dieses Tutorial ist bisher auf Rüstungen spezialisiert.
Falls Interesse da ist, werde ich das Tutorial noch so verändern, dass man auch andere Items (Waffen, Helme...) von GD nach G3 holen kann.
Falls ihr etwas nicht verstanden habt oder sonstige Fragen, Anmerkungen oder Verbesserungsvorschläge habt, schreibt sie in diesen Thread oder schickt mir ne PN.
Glückwunsch, ihr habt es bis ans Ende des Tutorials geschafft. Ich drücke euch die Daumen das alles funktioniert.
Ich habe in den Anhang noch das „Ergebniss“, also die Rüstung, des Tutorials eingefügt.
Hier noch ein Bild der Rüstung in Gothic 3. Nur als Beweis das ich nicht gelogen habe