Einen Mod washable / waschbar machen

  • Dieses Thema ist geschlossen, damit eine Abfolge der Beiträge erhalten werden kann.
    Für Feedback steht dieser Thread zur Verfügung: [Sonstiges] Feedback zu Einen Mod washable / waschbar machen

    Dieses Tutorial darf ohne meine Genehmigung nicht weiter verbreitet werden, weder im Original noch in irgendeiner abgeänderten Form.


    Einen Mod washable / waschbar machen


    In diesem Beitrag versuche ich die Vorgehensweise zu erklären, wie man einen Mod washable / waschbar macht.
    Grundlage hierfür ist ein englisches Tutorial, welches noch auf LS 2009 und 2011 basiert.

    Ich empfehle an dieser Stelle dringend, von dem Mod ein Backup zu machen, man weiß nie ob etwas schief geht. ;)


    Inhaltsverzeichnis

    1.1 Was wird benötigt?

    1.2 Dateien kopieren

    1.3 Bearbeiten der Dateien
    1.3.1 Bearbeiten der moddesc.xml
    1.3.2 Bearbeiten der .i3d
    1.3.3 Bearbeiten der Fahrzeug.xml


    Patrick

  • 1.1 Was wird benötigt?


    Um einen Mod waschbar zu machen werden folgende Dateien und Programme benötigt.

    - Giants Editor

    - Texteditor, wie beispielsweise Notepad++

    - Grafikprogramm wie Gimp, Photoshop, Paint.net etc., dazu evtl. das dds Plugin. Nähere Infos dazu findet ihr hier: Alle nützlichen Programme zum Modden [Liste]

    - folgende Dateien sind nötig: Washable.lua und dirtShader.xml. Diese Dateien habe ich aus dem Fendt380GTATurbo
    entnommen, dieser ist auf Modhub zu bekommen. Man kann diese Dateien jedoch auch aus anderen Mods entnehmen.

    - Dirt Skins. Alle Teile die schmutzig und waschbar werden sollen, benötigen einen zweiten Skin mit der Dirt Textur.
    Ein gutes Tutorial findet ihr hier im Forum: [Skinnen] Einen Schönen DirtSkin erstellen.
    Wichtig: Für washable benötigt man zusätzliche Skins. Im genannten Tutorial werden die Skins jedoch ersetzt.
    Beispiel anhand des Fendt380: Ihr benötigt einen Dirtskin für die Karosserie, diese hat die Textur fendt380GTATurbo_diffuse.dds.
    Im obigen Tut wird diese Textur dreckig geskinnt und dann ersetzt. Für waschbar müsst ihr die Textur aber dreckig skinnen und
    dann als neue Textur speichern, beim Fendt ist dies dann die fendt380GTATurbo_dirt_diffuse.dds. Wie ihr den Dirt Skin nennt, ist dabei eigentlich egal,
    eine Verwendung des bestehenden Namens und Erweiterung um "_dirt" bietet sich jedoch an.

    Ich erstelle dieses Tutorial mit einem Grubber von Modhub, falls ihn sich jemand herunterladen möchte:
    LS 2013: Kverneland TLD 91 v 1.0 Grubber & Eggen Mod für Landwirtschafts Simulator 2013
    | modhoster.de


    Patrick

  • 1.2 Dateien kopieren


    Wohin die Dateien kopiert werden ist von Mod zu Mod unterschiedlich. Die .lua Dateien liegen oft in einem Unterordner "Scripts",
    die Grafiken in "textures". Im Prinzip ist es egal, wichtig ist, dass man bei den anschließenden Bearbeitungen der Dateien die richtigen Dateipfade angibt.

    In meinem Beispiel liegen die Grafiken in "Model" und für Skripte gibt es keinen separaten Ordner. Ich kopiere also die Washable.lua einfach in das Hauptverzeichnis des Mods, im Verzeichnis Model werden die 3 Dirt Skin Dateien und die dirtShader.xml abgelegt. Die dirtShader.xml deshalb, weil diese entweder im gleichen Ordner wie die i3d oder in einem Unterordner unterhalb der i3d liegen muss. Ansonsten funktioniert das nicht (habe es getestet, als die dirtShader im Hauptverzeichnis des Mods lag, wurde ein Error ausgeworfen).


    Patrick

  • 1.3 Bearbeiten der Datien


    Nun kommt der wohl langwierigste Teil. Je nach Größe und Komplexität des Modells kann die folgende Arbeit einiges an Zeit
    in Anspruch nehmen, wobei die Änderungen an der moddesx.xml. noch die kleinste Arbeit ist.
    Bearbeitet werden die moddesc.xml, die .i3d und ie fahrzeug.xml. Bei meinem Beispiel sind dies:
    - moddesc.xml
    - KvernelandTLD91.xml
    - kvernelandTLD91.i3d


    1.3.1 Bearbeiten der moddesc.xml


    Zunächst also die moddesc.xml. Hier muss die neue Specialization "washable" eingetragen werden.
    Dazu sind folgende Änderungen nötig.
    Im Abschnitt: <specializations> muss vor dem Eintrag </specializations> folgendes eingertagen werden:
    <specialization name="washable" className="Washable" filename="Scripts/Washable.lua"/>

    Bei meinem Beispiel war der Abschnitt nicht vorhanden, so habe ich ihn kurzerhand erstellt. Hier ist jun das erste Mal auf den
    korekten Pfad zu achten. Bei "filename=" muss der Pfad angegeben sein, wo das Skript liegt. Bei meinem Beispiel schaut alles zusammen dann so aus:

    Code
    <specializations>
    <specialization name="washable"         className="Washable"      filename="Washable.lua"/>
    </specializations>

    Im darauf folgenden Abschnitt <vehicleTypes> muss vor dem Eintrag </type></vehicleTypes> folgendes eingertagen werden:
    <specialization name="washable" />

    Dies schaut dann bei meinem Beispiel so aus:

    Code
    <vehicleTypes>
    	<type name="TLD91" className="Vehicle" filename="$dataS/scripts/vehicles/Vehicle.lua">
    	<specialization name="attachable" />
    	<specialization name="cultivator" />
    	<specialization name="foldable" />
            <specialization name="animatedVehicle" />
            <specialization name="cylindered" />
            <specialization name="washable" /> 
            </type>
    </vehicleTypes>


    Wichtig: Der Eintrag bei type name= - im Beispiel ist das TLD91 - muss identisch sein mit dem Eintrag in der Fahrzeug.xml unter vehicle type.
    Diese Bezeichnung muss bei einem Standardfahrzeug / Gerät geändert werden. Bei einem Ladewagen steht da zum Beispiel "forageWagon".



    Das war es schon an Änderungen in der moddesc.xml. Diese kann nun gespeichert werden und es geht an die i3d.

  • 1.3.2 Bearbeiten der .i3d


    Wir öffnen die i3d mit einem geeigneten Texteditor, ich möchte hier nochmals Notepad++ erwähnen, da ich dies selbst nutze.
    Zunächst suchen wir die fileID Einträge am Anfang der Datei, in meinem Beispiel sind dies die Zeilen 9-13 im Abschnitt <Files></Files>.

    Nun benötigen wir mehrere "freie" fileID:
    1x für die Angabe für die dirtShader.xml und je 1x je Dirt Skin Datei. Ich habe insgesamt drei Dirt Skins, also benötige ich vier fileID's.
    Die Nummer ist dabei egal, Hauptsache sie ist frei. Also ergänze ich nun folgende Einträge:
    <File fileId="7" filename="dirtShader.xml" relativePath="true"/>
    <File fileId="8" filename="kvernelandDecals_diffuse_dirt.dds" relativePath="true"/>
    <File fileId="9" filename="kvernelandTLD91_diffuse_dirt.dds" relativePath="true"/>
    <File fileId="10" filename="smallWheel_diffuse_dirt.dds" relativePath="true"/>

    Der fertige Abschnitt schaut nun so aus:


    Nun muss man herausfinden, welche Dateien ersetzt werden müssen. Dazu suchen wir uns in der Liste der fileID's die Dateien,
    zu denen wir Dirt Skins haben. Dies wären in meinem Beispiel:
    fileID 4 = kvernelandDecals_diffuse.dds hierfür habe ich die kvernelandDecals_diffuse_dirt.dds
    fileID 2 = kvernelandTLD91_diffuse.dds hierfür die kvernelandTLD91_diffuse_dirt.dds
    fileID 5 = smallWheel_diffuse.dds hierfür die smallWheel_diffuse_dirt.dds

    Danach gilt es im Abschnitt <Materials> nach allen Materialien zu suchen, welche eine dieser fileID's besitzen.


    Bei meinem Beispiel ist dies relativ übersichtlich. Bei Traktoren oder anderen aufwändig texturierten Materialien kann dies ausarten.

    Es werden nun folgende Änderungen durchgeführt - alle werden anschließend in einem Codebeispiel mit Kommentaren erklärt.
    - im gefunden Abschnitt eines Materials wird in der Zeile, welche mit "Material name" beginnt folgendes hinter dem Eintrag ambientcolr="WXYZ" eingetragen:
    customShaderId="XX", wobei XX der fileID der dirtShader.xml entspricht - in meinem Beispiel wäre dies die 7.
    - nach <Texture fileID=XX"/> wird folgendes eingefügt, wobei hier das XX der fileID des Dirt Skins entspricht:
    <Custommap name="dirtTexture" fileId="XXX"/>
    <CustomParameter name="dirtScale" value="0 0 0 0"/>

    So schaut der Code dann für ein Material aus.
    Vorher:

    Code
    <Material name="decalsDiffuseKverneland" materialId="7" ambientColor="1 1 1">
          <Texture fileId="4"/>
        </Material>

    Nachher:

    Code
    <Material name="decalsDiffuseKverneland" materialId="7" customShaderId="7" ambientColor="1 1 1">
          <Texture fileId="4"/>
          <Custommap name="dirtTexture" fileId="8"/>
          <CustomParameter name="dirtScale" value="0 0 0 0"/>
        </Material>

    Hier nun das Beispiel mit Kommentaren in grün in einem Screenshot.

    Und so schaut dies dann in meinem Beispiel fertig aus, einmal als Codeschnipsel und einmal als Screenshot. Auf dem Screenshot sieht man dann
    auch schön die Liste der fileID's und dazu unten dann die Abhängigkeiten bei den Materialien.


    Hiermit ist die Bearbeitung der .i3d beendet und diese kann gespeichert werden.


    Gruß Patrick

  • 1.3.3 Bearbeiten der fahrzeug.xml


    In diesem Abschnitt bearbeite ich nun die fahrzeug.xml. Wobei fahrzeug.xml nur ein Platzhalter ist, diese Datei heißt bei jedem
    Mod anders, beim Grubber aus dem Beispiel heißt die Datei "KvernelandTLD91.xml"

    Diese öffne ich nun und als erstes muss am Ende der Datei vor dem Eintrag </vehicle> folgendes ergänzt werden:

    <dirt dirtInterval="1" cleaningInterval="20" updateInterval="0.15" >
    Erklärung der einzelnen Werte:
    dirtInterval = die Zeit in Stunden, bis das Modell vollständig verschmutzt ist.
    cleaningInterval = Zeit in Sekunden bis das Modell wieder sauber ist.
    updateInterval = ebenfalls die Zeit in Sekunden, in welcher der Status der Verschmutzung aktualisiert wird.

    Danach folgen dann die Einträge mit den Indexen. Musste man bei LS 2009 und 2011 noch im "alten" Giants Editor die
    Indexe selbst zählen, so macht dies heute der Giants Editor 5.0.1 für uns.
    Die Einträge schauen ungefähr wie folgt aus:
    <dirtComponent index="0>" />
    <dirtComponent index="0>11" />
    </dirt>
    Wie wir zu diesen Einträgen kommen folgt gleich, zuerst noch eine kurze Zusammenfassung der bisherigen Änderungen an der fahrzeug.xml.
    Das Ende der Datei sollte nun so ausschauen:

    Code
    <dirt dirtInterval="1" cleaningInterval="20" updateInterval="0.15" >
      <dirtComponent index="0>" />
      <dirtComponent index="0>11" />
      </dirt>
    </vehicle>


    Es sind natürlich nicht nur zwei Indexe, die Anzahl hängt von der Anzahl der zu verschmutzenden Teile ab.

    Wie kommt man nun zu den Indexen?
    Man öffnet die i3d des Modells im Giants Editor, auf Bild 1 habe ich bereits markiert wo der Index steht.

    Hier ist das komplette Modell ausgewählt (links oben mit rot markiert) und unten rechts bei Attributes / Index Path finden wir den ersten Index, ebenfalls rot markiert.
    So klickt man sich dann von oben nach unten durch alle Teile, welche schmutzig und waschbar werden sollen.
    Je nach Modell wie schon erwähnt unter Umständen sehr viel Arbeit.
    Noch ein Bild von der nächsten Untergruppe:

    Danke an Markkus für folgenden Screenshot:
    Legt man sich den Texteditor und den Giants Editor nebeneinander, lassen sich die Indexe ganz einfach mit Copy & Paste eintragen (was ich auch so gemacht, aber keinen Screenshot davon habe).

    Das Endergebnis für den Kverneland TLD91 schaut dann so aus:


    Ende. Das war es schon. ;)
    Nun den Mod packen und Spaß haben. Hier noch ein paar Ergebnisse von diesem Tutorial, bitte nicht zu streng mit mir sein, ich habe das erste Mal eine Dirt Skin selbst gemacht.


    Gruß Patrick