Die ModDesc.xml Datei in LS 15

  • Moin,

    die meisten von euch werden wohl schon gemerkt haben, das die modDesc.xml sich mit LS15 geändert hat.

    Leider muss ich bei einigen Mods immer wieder sehen, das modDesc.xml Datei nicht wirklich korrekt angepasst wird.

    Aus diesem Grund hab ich mir gedacht, ich schreibe hier mal einige Tipps zum Aufbau der modDesc.xml Datei für LS15.

    Ich behandele hier erstmal nur die grundlegende modDesc ohne Scripteinbau u.s.w.

    Dazu komme ich sicher später noch!

    ACHTUNG:
    Sollte ich mich irgendwo vertan haben, so schreibt mir das bitte, damit
    ich es hier in diesen ersten Beitrag aktualisieren kann!

    Info:

    Eine XML Datei arbeitet mit sogenannten Tags (Aussprache: Tägs). Davon sind immer 2 vorhanden, ein öffnender Tag <eintrag> und ein schließender Tag </eintrag>. Ein Tag kann auch so aussehen <eintrag index="0" />.

    Bei der 2ten Version bildet <eintrag den öffnenden Tag und /> den schließenden Tag.

    Wichtig bei dieser Version ist, das es KEINEN Zeilenumbruch oder Absatz geben darf. Es muss alles in einer Zeile stehen!

    Ebenso ist die Ein-Zeilen-Methode nicht geeignet, wenn mehrere Werte angegeben werden müssen (siehe Beispiele!).

    Beispiele:

    Klassischer Tag:
    [xml]<eintrag>
    <wert1>255</wert1>
    <wert2>128</wert2>
    ...u.s.w
    </eintrag>[/xml]

    Wie ihr sehen könnt, sind hier sehr viele Werte möglich und man verliert beim lesen nicht so schnell den Überblick.

    Einzeilen Tag:
    [xml]<eintrag wert1="255" />[/xml]

    Wichtig sind hier die Leerzeichen zwischen Eintrag, Wert1 und dem schließen Tag.

    Nicht vorteilhaft ist der Einzeilen Tag bei sehr vielen Werten:
    [xml]<eintrag wert1="255" wert2="22" wert3="57" wert4="35" wert5="88" wert6="73" wert7="53" wert8="94" wert9="0>0|0" wert10="666"/>[/xml]

    Ihr seht schon, das es zwar im richtigen Format geschrieben ist aber es doch sehr unübersichtlich wird.

    Wenn man da einen Fehler sucht, wirds anstrengend

    Hier erst einmal der Aufbau der modDesc.xml:
    [xml]<?xml version="1.0" encoding="utf-8" standalone="no" ?>
    <modDesc descVersion="20">
    <author>DeinName</author>
    <version>1.0</version>
    <title>
    <en>DeinModNameInEnglisch</en>
    <de>DeinModNameInDeutsch</de>
    </title>

    <description>
    <en>KurzeBeschreibungZuDeinemModEnglisch</en>
    <de>KurzeBeschreibungZuDeinemModDeutsch</de>
    </description>

    <iconFilename>store.dds</iconFilename>

    <multiplayer supported="true"/>

    <storeItems>
    <storeItem>
    <name>
    <de>NameFürDeinenModImShopDeutsch</de>
    <en>NameFürDeinenModImShopEnglisch</en>
    </name>

    <rotation>0</rotation>
    <image active="store.dds" brand="brand.dds"/>
    <price>98000</price>
    <dailyUpkeep>65</dailyUpkeep>
    <xmlFilename>DeineMod.xml</xmlFilename>
    <brand>DeineMarke</brand>
    <category>tippers</category>
    <specs>
    <power>100</power>
    </specs>

    <functions>
    <function>Deine Beschreibung des Mods welche unten im Shop angezeigt wird (ACHTUNG: Begrenzte Zeichenanzahl!</function>
    </functions>

    </storeItem>
    </storeItems>
    </modDesc>[/xml]

    So, dann brösel ich das Ganze mal auseinander
    [xml]<?xml version="1.0" encoding="utf-8" standalone="no" ?>[/xml]

    Dieser Eintrag identifiziert das Dokument als XML Datei. Sollte nicht geändert werden!
    [xml]<modDesc descVersion="20">[/xml]

    Hiermit wird die Version der modDesc festgelegt.
    Meinen Beobachtungen nach, hat das auch was mit der Spielversion zu tun. So ist descVersion="20" die v1.0 des LS15.
    21 entspricht v1.1 und 22 der aktuellen Version 1.2.

    Das wird aber eigentlich erst dann wichtig, wenn ich z.B eigene Scripte in meine Mod einbauen möchte und dieses z.B. zwingend die v1.1 des Spiels benötigen damit es einwandfrei funktioniert.

    [xml] <author>DeinName</author>
    <version>1.0</version>[/xml]

    Sollte klar sein. Wer hat den Mod erstellt und welche aktuelle Version hat der Mod.
    Wichtig, bei Version darf KEIN Komma (,) verwendet werden! Dafür kann der Punkt (.) mehrfach erscheinen.
    Auch Buchstaben sind erlaubt. Beispiel: "1.5.1beta".

    [xml]<title>
    <en>DeinModNameInEnglisch</en>
    <de>DeinModNameInDeutsch</de>
    </title>

    ...oder auch

    <title>DeinModName</title>[/xml]

    Dieser Tag gibt den Titel deines Mods an. Es sind beide Varianten
    möglich, es sollte aber die Erste genutzt werden zumal der Mod in einer
    anderen Sprache vielleicht anders geschrieben wird.

    Die <en> und <de> Tags stehen für die Sprache in der dein Modname angezeigt wird. en steht für Englisch, de für Deutsch u.s.w.

    Es gibt noch einige mehr z.B <it> für Italien, <fr> für
    Frankreich etc. ich beschränke mich aber immer nur auf Deutsch und
    Englisch

    [xml]<description>
    <en>KurzeBeschreibungZuDeinemModEnglisch</en>
    <de>KurzeBeschreibungZuDeinemModDeutsch</de>
    </description>[/xml]


    Hier kommt eine KURZE Beschreibung deines Mods rein.
    Diese ist z.B zu sehen, wenn ihr ein MP Spiel aufmacht und die Mod auswählt.
    Auch hier sind wieder mehrere Sprachen möglich.

    [xml]<iconFilename>store.dds</iconFilename>
    <multiplayer supported="true"/>[/xml]

    Angabe zum Shopbild. Dieses Bild sieht man ebenfalls wenn man ein MP Spiel auf macht.

    Der 2te Eintrag gibt an, ob dein Mod im MP spielbar ist oder nicht. Mögliche Optionen: true oder false.

    [xml]<storeItems>
    <storeItem>[/xml]

    Öffnet die Einträge für den Shopbereich.

    [xml]<name>
    <de>NameFürDeinenModImShopDeutsch</de>
    <en>NameFürDeinenModImShopEnglisch</en>
    </name>[/xml]

    Diese Einträge bilden den Namen des Mods wie er im Shop angezeigt wird.
    Auch hier sind wieder mehrere Sprachen möglich.

    [xml]<rotation>0</rotation>[/xml]

    Damit lässt sich euer Mod beim kaufen drehen wenn er denn am Shop nicht in die richtige Richtung zeigt.
    Sinnvoll sind hier die Winkelgrade 0, 90, 180, 270 Grad.

    [xml]<image active="store.dds" brand="brand.dds"/>[/xml]

    Hier wird das Bild sowie das Markenzeichen des Mods angegeben, welches im Shop angezeigt wird.
    Natürlich müssen hier die Pfade stimmen. Liegt das Shopbild im 'Textures' Ordner so muss der Eintrag "Textures/store.dds" heißen.

    [xml]<price>98000</price>
    <dailyUpkeep>65</dailyUpkeep>[/xml]

    Der Kaufpreis eures Mods im Shop, sowie die Unterhaltskosten in € werden mit diesen beiden Einträgen angegeben.

    [xml]<xmlFilename>DeineMod.xml</xmlFilename>[/xml]

    Dieser Eintrag ist der wichtigste in eurer modDesc!

    Hier muss der Pfad zu eurer Mod.xml eingetragen werden.

    Stimmt hier etwas nicht, wird euer Mod nicht geladen und erscheint nicht im Spiel

    [xml]<brand>DeineMarke</brand>[/xml]

    Gibt den Markennamen deines Mods an.
    Hier kann, wie im Beispiel einfach ein Markenname rein.

    [xml]<category>tippers</category>[/xml]

    Mit der Kategorie (früher machineType) wird die Art deines Mods angegeben und in eine entsprechende Kategorie gepackt.
    Folgende Einträge sind möglich:

    Spoiler anzeigen

    - tractors = Schlepper

    - frontLoaders = Frontlader + FL Tools

    - trucks = LKWs

    - harvesters = Drescher

    - cutters = Schneidwerke

    - cutterTrailers = Schneidwerkswagen SWWs

    - potatoHarvesting = Kartoffeltechnik

    - beetHarvesting = Rübentechnik

    - tippers = Kipper / Anhänger

    - dollys = Rate mal Dollys halt

    - plows = Pflüge

    - cultivators = Grubber

    - sowingMachines = Sämaschinen

    - fertilizerSpreaders = Düngerstreuer

    - sprayers = Düngerspritzen

    - manureSpreaders = Miststreuer

    - slurryTanks = Gülletanks

    - mowers = Mähwerke

    - tedders = Zetter (Ich glaube so heißen die )

    - windrowers = Schwader

    - loaderWagons = Ladewagen

    - baling = Ballentechnik

    - feeding = Futtertechnik

    - augerWagons = Überladewagen

    - weights = Gewichte

    - wood = Forsttechnik

    - chainsaws = Kettensägen

    - cars = Autos

    - wheelLoaders = Radlader

    - teleLoaders = Teleskoplader

    - misc = Diverses

    - placeables = Plazierbares

    - animals = Tiere

    [xml]<specs>
    <power>100</power>
    ....
    </specs>[/xml]

    Mit den specs Einträgen kann man verschiedene Angaben zum Mod machen, welche über der Beschreibung im Shop dargestellt werden.

    Mögliche Einträge:

    Spoiler anzeigen

    <power>100</power> = Leistung des Fahrzeugs in PS

    <neededPower>100</neededPower> Leistung, die benötigt wird um das Gerät zu nutzen.

    <combination>Steyr</combination> = Zeigt "Benötigt für Steyr" im Shop an. Verwendung: Schneidwerke, Frontlader u.s.w

    <capacity unit="$l10n_unit_liter">1860</capacity> = Zeigt Füllvolumen in Liter an, hier 1860 Liter als Beispiel

    <fillTypes>manure silage chaff woodChips</fillTypes> = Zeigt an, was geladen werden kann. Wichtig wenn ihr Stroh in einem Anhänger verbaut habt, schreibt straw und nicht wheat_windrow oder ähnliches!

    <workingWidth>2.0</workingWidth> = Arbeitsbreite in METER z.B bei Grubber oder so. Auch hier bitte nur Punkte oder ganze Zahlen verwenden, keine Kommas

    [xml]<functions>
    <function>Deine Beschreibung des Mods welche unten im Shop angezeigt wird (ACHTUNG: Begrenzte Zeichenanzahl!)</function>
    </functions>[/xml]

    Hier kann man seine eigene Beschreibung des Mods rein packen, welche unten im Shop angezeigt wird.
    Die Beschreibung sollte man so kurz wie möglich halten, weil der Text sonst unten aus dem Bild verschwindet.
    Ihr könnt hier auch auf die Standardtexte von Giants zugreifen.
    Kombinationen sind möglich wie z.B.

    [xml]<function>$l10n_function_tractor</function>
    <function>$l10n_function_tractorFrontloader</function>[/xml]

    Hier mal die Aufrufe für die Standardtexte:

    Spoiler anzeigen

    - <function>$l10n_function_tractor</function> = Schlepper

    - <function>$l10n_function_tractorFrontloader</function> = benötigter Frontlader

    - <function>$l10n_function_frontloader</function> = Frontlader

    - <function>$l10n_function_truck</function> = LKWs

    - <function>$l10n_function_combine</function> = Drescher

    - <function>$l10n_function_combineNeedsCutter</function> = benötigtes Schneidwerk

    - <function>$l10n_function_cutter</function> = Schneidwerk

    - <function>$l10n_function_cutterTrailer</function> = Schneidwerkswagen (SWW)

    - <function>$l10n_function_haulmTopperPotato</function> = Krautschläger (Kartoffeln)

    - <function>$l10n_function_harvestingPotato</function> = Kartoffelernter (zum hinterher ziehen!)

    - <function>$l10n_function_harvestingSelfPropelledPotato</function> = Kartoffelernter (Selbstfahrer!)

    - <function>$l10n_function_haulmTopperSugarbeet</function> = Krautschläger (Rüben)

    - <function>$l10n_function_harvestingSugarbeet</function> = Rübenernter (zum hinterher ziehen!)

    - <function>$l10n_function_harvestingSelfPropelledSugarbeet</function> Rübenernter (Selbstfahrer!)

    - <function>$l10n_function_tipper</function> = Kipper / Anhänger

    - <function>$l10n_function_semiTrailer</function> = Zusatz für Tipper! Extratext für Sattelauflieger. Sollte mit funktion_tipper benutzt werden!

    - <function>$l10n_function_dolly</function> = Dollys

    - <function>$l10n_function_cultivator</function> = Grubber

    - <function>$l10n_function_plough</function> = Pflüge

    - <function>$l10n_function_sowingMachine</function> = Sämaschinen

    - <function>$l10n_function_sowingMachineDirect</function> = Zusatz für sowingMachine! Extratext für Direktsaat. Sollte mit funktion_sowingMachine benutzt werden!

    - <function>$l10n_function_mower</function> = Mähwerke

    - <function>$l10n_function_forageWagon</function> = Ladewagen

    - <function>$l10n_function_feederBale</function> = Balleneinstreuer

    - <function>$l10n_function_feeder</function> = Futtermischer

    - <function>$l10n_function_tedder</function> = Zetter

    - <function>$l10n_function_windrower</function> = Schwader

    - <function>$l10n_function_sprayerTank</function> = Düngerspritze Zusatztank

    - <function>$l10n_function_sprayer</function> = Düngerspritze

    - <function>$l10n_function_fertilizer</function> = Düngerstreuer

    - <function>$l10n_function_manureSpreader</function> = Miststreuer

    - <function>$l10n_function_slurrySpreader</function> = Güllefass

    - <function>$l10n_function_tank</function> = Zubringer, Wasser, Diesel, Milch

    - <function>$l10n_function_slurryContainer</function> = Güllefeldrand Container

    - <function>$l10n_function_baler</function> = Ballenpresse

    - <function>$l10n_function_baleTrailer</function> = Ballenanhänger

    - <function>$l10n_function_baleStacker</function> = Rundballen Autostack

    - <function>$l10n_function_baleWrapper</function> = Ballenwickler

    - <function>$l10n_function_weight</function> = Gewichte

    - <function>$l10n_function_car</function> = Autos

    - <function>$l10n_function_augerWagon</function> = Überladewagen

    - <function>$l10n_function_telehandler</function> = Teleskoplader + Werkzeuge

    - <function>$l10n_function_wheelLoader</function> = Radlader + Werkzeuge

    - <function>$l10n_function_stumpCutter</function> = Stubbenfräse

    - <function>$l10n_function_forestryTransport</function> = Holzstamm Transporter

    - <function>$l10n_function_forestryPlanter</function> = Setzling Leger

    - <function>$l10n_function_forestryWoodCrusher</function> = Holzhäcksler

    - <function>$l10n_function_forestryCutter</function> = Harvester

    - <function>$l10n_function_chainsaw</function> = Kettensägen

    - <function>$l10n_function_lowLoader</function> = Tieflader

    - <function>$l10n_function_highPressureWasher</function> = Hochdruckreiniger

    - <function>$l10n_function_refill</function> = Setzling Palette

    [xml] </storeItem>
    </storeItems>
    </modDesc>[/xml]

    Diese Einträge schließen den Shopbereich sowie die eigentliche modDesc.
    Tja, damit wäre ich auch erstmal durch, ich hoffe es hilft den einen oder anderen weiter.

    Mein Dank geht an Chefkoch von Fieldstar Modding Team (FSM) für die Freigabe seines Tuts.
    Ich hoffe er konnte es euch gut erklären. Bissle abgeändert ist es.

    MFG 2modding2technik

  • Eine XML Datei arbeitet mit sogenannten Tags (Aussprache: Tägs). Davon sind
    immer 2 vorhanden, ein öffnender Tag <eintrag> und ein
    schließender Tag </eintrag>. Ein Tag kann auch so aussehen
    <eintrag index="0" />.

    Bei der 2ten Version bildet <eintrag den öffnenden Tag und /> den schließenden Tag.

    Da muss ich nun etwas nachbessern.. Es ist zwar richtig, das diese 2 Methoden gibt, man kann sie aber nicht wahlos Anweden. Hier ist es wichtig wie es vom Script ausgelesen wird. So wäre es falsch, wenn man ein 'Klassisches Tag' in ein 'einzeiliges Tag' umwandelt. So wie du es bei diesen Beispielen gemacht hast:

    Zum Verständnis, der LUA Aufruf für einzeilige Tags: (Ich bleibe bei deinen Beispielen) [mit dem /> am ende]

    [lua]
    self.eintrag = Utils.getNoNil(getXMLFloat(xmlFile, "vehicle.eintrag#wert"), 40);
    [/lua]

    Sieht in der XML so aus:

    [xml]
    <vehicle>
    <eintrag wert="2" />
    </vehicle>
    [/xml]

    Der LUA Aufruf für die 'klassischen' Tags:

    [lua]
    self.eintrag = Utils.getNoNil(getXMLFloat(xmlFile, "vehicle.eintrag.wert"), 40);
    [/lua]

    Und das sieht so in der XML aus:

    [xml]
    <vehicle>
    <eintrag>
    <wert>2</wert>
    </eintrag>
    </vehicle>
    [/xml]

    Ist nur ein kleiner Unterschied, der macht aber viel aus..

    Daher: Bitte keine vorhanden Tags umwandeln. Muss man sich beim Scripten überlegen, wie man es in die XML schreiben möchte, nicht danach.. :D Das gilt natürlich auch für die modDesc..

    MFG Ifko 8)