mod.lua und strings.lua - Erklärung und Inhalt

Willkommen in der Transport Fever Community

Wir begrüßen euch in der Fan-Community zu den Spielen Transport Fever und Train Fever, den Wirtschaftssimulatoren von Urban Games. Die Community steht euch kostenlos zur Verfügung damit ihr euch über das Spiel austauschen und informieren könnt. Wir pflegen hier einen freundlichen und sachlichen Umgang untereinander und unser Team steht euch in allen Fragen gerne beiseite.

 

Die Registrierung und Nutzung ist selbstverständlich kostenlos.

 

Wir wünschen euch viel Spaß und hoffen auf rege Beteiligung.

Das Team der Transport-Fever Community


Sie betrachten gerade eine ältere Version des Eintrags. Klicken Sie hier, um zur aktuellen Version zu gelangen.

  • Anhand von Beispielen werden alle benötigten und optionalen Einträge für die mod.lua und strings.lua Dateien in diesem Artikel erklärt.
    [img]https://ftp.train-fever.net/flaggen/gb.png[/img] The English version can be found here: [url='https://www.transportfever.net/lexikon/index.php/Entry/209-mod-lua-and-strings-lua-Explaining-the-content-and-requirements/']mod.lua and strings.lua - Explaining the content and requirements[/url]

    1 Offizielles Mod Format von Urban Games (mod.lua)

    Die Basis für die mod.lua, welche für jeden Mod benötigt wird und im Hauptverzeichnis des Mods liegen muss: [code='mod.lua']function data() return { info = { name = _("Sample mod"), -- Name des Mods description = _("modDesc"), -- optional, Beschreibung minorVersion = 0, -- minorVersion (integer) severityAdd = "WARNING", -- NONE, WARNING, CRITICAL severityRemove = "CRITICAL", -- visible = true, -- optional, standard: true -- wenn "false", wird der Mod nicht zur Auswahl angezeigt (zB, wenn er automatisch mit einem Missions-Spielstand geladen wird) }, -- options = .. -- runFn = .. -- checkActiveFn = .. } end[/code]

    2 Zusätzliche Parameter für Mod Manager (TPFMM)

    Die folgenden Parameter [i]können[/i] angegeben werden, um erweiterte Informationen zur Verfügung zu stellen, zB um eine Webseite oder den Ersteller der Mod zu verknüpfen. [b]Basisinformationen[/b] [code]tfnetId = 0, -- optional, transportfever.net id steamId = 0, -- optional, steam workshop id url = "https://transportfever.net" -- optional, URL zur Webseite des Mods[/code][b]Autoren[/b] [code]authors = { -- optional, Informationen über die Autoren { -- Angaben über einen oder mehrere Autoren name = "Author 1", -- Autor Name role = "CREATOR", -- CREATOR, CO_CREATOR, TESTER, BASED_ON, OTHER tfnetId = 00000, -- optional, id vom Autor auf transportfever.net steamId = 0000, -- optional, steam id }, -- optional, weiter Autoren, durch Komma getrennt },[/code][b]Tags[/b] [code]tags = { "tag1", "tag2", "tag3" }, --optional, Liste von Tags (strings)[/code][b]Abhängigkeiten[/b] Abhängigkeiten zu anderen Mods können angegeben werden. Das Spiel wertet diese Informationen nicht aus, aber Mod-Manager können damit sicher stellen, dass alle benötigten Mods installiert sind. Um eine Abhängigkeit zu einem anderen Mod zu definieren, kann einfach der Ordnername benötigten Mods in die Liste aufgenommen werden: [code]dependencies = { "other_mod_1", "another_mod_1", "something_else_1" },[/code]

    3 Übersetzungen (strings.lua)

    Alle Strings, die der Übersetzungsfunktion [tt]_("")[/tt] übergeben werden, werden mithilfe der strings.lua Datei übersetzt: [code]function data() return { de = { ["my mod"] = "Mein Mod", -- Alle vorkommen von _("my mod") werden -- mit dem Text "mein Mod" ersetzt, -- falls die ausgewählte Sprache deutsch ist ("de") ["the description"] = "Beschreibung", -- _("the description") ⇒ "Beschreibung" }, } end[/code][box][b][u]Beachte:[/u][/b] Wenn eine Variable an die [tt]_()[/tt] Funktion übergeben wird, wird der [i]Inhalt[/i] der Variable, nicht der Name der Variable selbst an die Funktion übergeben! In Kombination mit globalen Variablennamen in LUA kann dies dazu führen, dass sich Variablen von unterschiedlichen Dateien oder sogar Mods gegenseitig überschreiben. In einem Beta-Patch von Transport Fever konnte dieses Scenario beobachtet werden. Viele Mods nutzten die selbe Variable, um strings mit der [tt]_()[/tt] Funktion zu übersetzen - allerdings hat ein Mods bereits den Text in der Variable für alle anderen Mods überschrieben - so kann keine korrekte Übersetzung für den eigenen Mods gefunden werden. Zwar wird dieses Verhalten in TPF mittleweile aktiv verhindert - allerdings rät Urban Games dazu, in Mods nur lokale Variablen ([tt]local[/tt]) zu Benutzen. [b]Ich empfehle zusätzlich, immer mit Strings statt Variablen zu arbeiten.[/b][/box] Weitere Informationen zur strings.lua wurden [url='https://www.transportfever.net/lexikon/index.php/Entry/212-strings-lua-mehrsprachig-und-mehrere-Konstruktionen-in-einer-Modifikation/']hier[/url] von [url='https://www.transportfever.net/index.php/User/20244-Tom/']@Tom[/url] zusammen getragen.

    4 Beispiel Dateien

    [u][b]Sehr einfaches Beispiel eines Mods mit einem Autor[/b][/u] [code='mod.lua']function data() return { info = { name = _("name"), description = _("desc"), minorVersion = 2, severityAdd = "NONE" severityRemove = "CRITICAL" authors = { { name = "John Doe", role = "CREATOR" }, }, tags = {"train", "multiple_unit"}, }, } end[/code] [u][b]Ein "Repaint"-Mod, welcher den Mod aus dem ersten Beispiel als Abhängigkeit benötigt[/b][/u] [code='mod.lua']function data() return { info = { name = _("name"), description = _("desc"), minorVersion = 1, severityAdd = "NONE" severityRemove = "CRITICAL", authors = { { name = "jane", role = "CREATOR", tfnetId = 00000, steamId = 0000, text = "text", }, { name = "John Doe", role = "BASED_ON", tfnetID = 1, }, }, dependencies = { "base_mod_1" }, tags = {"repaint", "train", "multiple_unit"}, }, } end[/code] [code='strings.lua']function data() return { en = { ["name"] = "My Repaint Mod", ["desc"] = "My first Repaint", }, de = { ["name"] = "Mein Repaint Mod", ["desc"] = "Mein erstes Repaint.", }, } end[/code]

Teilen