Anleitungen zum zur Erstellung neuer Mods und Scripterweiterungen
Zur
allgemeinen Erklärung hier für diese Anleitung.
Ich bin kein Programmierer
und habe absolut keinen Plan vom Scripten in X-Rebirth! Da ich bisher keine
gescheite Anleitung (auf deutsch sowieso nicht) im Internet gefunden habe, die
auch von normal sterblichen verstanden werden kann, möchte ich meine kleinen "learning
by doing" Erfolge mit euch anderen nicht Programmierer und absoluten Anfängern
teilen. Wenn das also einer ließt, der bereits Erfahrung im Umgang mit
Programmierung und vielleicht sogar in X-Rebirth Scripten hat und Fehler und
oder Ergänzungen hat, sehr gerne, aber so, das auch ein Leihe sie versteht
bitte. Natürlich führen viele Wege nach Rom und das hier beschriebene ist mit
Sicherheit nicht der aller beste Code der möglich wäre, jedoch versuche ich den
Code so verständlich und einfach wie mir möglich zu gestalten, für ist erst mal
wichtig, das es funktioniert.
Anmerkung: Ich
werde zukünftig für Mod's, Scripterweiterungen usw. nur noch den Begriff
Erweiterung verwenden.
Wo
müssen Erweiterungen abgespeichert werden?
Das Standartverzeichnis
von X-Rebirth lautet:
C:\Program Files
(x86)\Steam\SteamApps\common\X Rebirth\extensions
Der Ordner "extensions"
muß beim ersten mal erst angelegt werden.
Am besten ihr macht euch
von diesem Ordner eine Verknüpfung auf den Desktop.
Erstellt in dem Ordner "extensions"
einen neuen Ordner für eure Erweiterung, der Ordnername sollte keine Leerzeichen
oder äöüÄÖÜ's enthalten.
In diesem Fall lautet der Ordner "Beispiel1"
Allgemeine Anmerkung
zu den < > Klammern:
Als Beispiel
nehme ich mal die "Zeile 03" vom unten stehendem Kasten.
Die Zeile
könnte genauso gut auch so aussehen:
"<text ..." |
|
"... />" |
|
|
|
Hat man
verschachtelte Funktionen, sieht das ganze so aus: |
"<text ...>" |
Eröffnet eine
Textbasierte Codezeile. |
"<info ... />" |
Eröffnet und
schließt diese Codezeile wieder und Beendet die Funktion "info". |
"</text>" |
Schließt diese
Codezeile wieder und Beendet die Funktion "text". |
|
|
Hat man keine
verschachtelte Funktionen, kann man diese Variante trotzdem
benutzen,
macht aber
eigentlich nur Sinn, wenn man nicht sicher ist, das später eventuell
noch eine
Verschachtelte
Funktion dazu kommen wird: |
"<text ...> |
Eröffnet eine
Textbasierte Codezeile (und ">" Schließt diese Codezeile wieder). |
"</text> |
Beendet die
Funktion "text". |
|
|
Theoretisch
könnte man es auch so schreiben, dem Computer ist das egal,
es geht hier
nur um die Lesbarkeit für den Menschen. |
<text
language="49"
name="7"
description="8"
author="9"
/> |
|
Oder: |
<text
language="49" name="7" description="8" author="9"
>
</text> |
Welche
Dateien braucht man?
"content.xml"
In den Ordner Beispiel1
erstellen wir nun als erstes eine leere Textdatei und benennen sie um in: "content.xml".
Mit einem Editor (zum
Beispiel Wordpad ++) öffnen wir nun die Datei und kopieren den im Kasten (ohne
die "Zeile:00) stehenden Text hinein:
Zeile 01: |
<?xml version="1.0"
encoding="utf-8"?>
<content id="1" name="2" description="3" author="4" version="5"
date="6">
<text language="49" name="7" description="8" author="9" />
</content> |
Zeile 02: |
Zeile 03: |
Zeile 04: |
Und speichern die Datei
erst einmal ab, wie sie ist.
Erklärung:
Zeile 02: |
content id="" |
[Tag] Der
Abgekürzte Name eurer Erweiterung |
name"" |
? |
description="" |
? |
author="" |
? |
version="" |
Die Version
von eurer Erweiterung (ihr müsst eure eigentlich gewollt stehende
Versionsnummer mit 100 * nehmen, Version 1.00 wäre 100, Version 0.1
wäre 10). |
date="" |
Das Datum von
wann eure Erweiterung stammt. |
|
|
Zeile 03: |
text language="49" |
Die Zahl "49"
steht für die Internationale Vorwahlnummer für Deutschland, es ist
also für die X-Rebirth Sprache deutsch im Spiel. Die Zahl "44" steht
übrigens für Englisch. Wenn auch Spieler, die ihr X-Rebirth auf
einer anderen Sprache eingestellt haben, eure Erweiterung nutzen
können sollen, müsst ihr die Zeile mit dem "text language" noch mal
kopieren und darunter erneut einfügen. (für Englisch diesmal die 44
und die Texte auf Englisch) |
name="" |
Name der
Erweiterung |
description="" |
Beschreibung,
was eure Erweiterung macht. |
author="" |
Euer Name
(Forenname) |
In X-Rebirth Hauptmenü
unter "Erweiterungen" findet ihr dann einige gemachte Eingaben wieder, der
"Ort:" bezeichnet euren Ordnernamen der Erweiterung und wird automatisch
ausgelesen. Das ganze sieht dann im Spiel so aus:

Beispiel: Als
Beispiel habe ich nun folgende Einträge genommen.
<?xml version="1.0"
encoding="utf-8"?>
<content id="Bsp"
name="2" description="3" author="4" version="10" date="23.12.2013">
<text language="49"
name="Beispiel Menü" description="Diese Erweiterung fügt zu
Testzwecken ein neues Menü ein"
author="FritzHugo3" />
</content> |

0002-L049.xml (Texte)
Wann immer
eine Erweiterung neue Texte/Wörter im Spiel hinzufügen oder
vorhandene verändern sollen, brauchen wir einen "t" Ordner, in dem
dann alle Textdateien rein kommen (0002-L049.xml steht für die
deutsche Textdatei, 0002-L044.xml wäre für Englisch usw.).
Wir erstellen also einen
Ordner mit dem Namen "t" und darinnen erstellen wir eine neue Textdatei,
diese nennen wir in
"0002-L049.xml" um.
Zeile 01: |
<?xml version="1.0"
encoding="UTF-8" ?>
<language id="49">
<page
id="Zahl" title="Text" descr="Text" voice="no">
<t id="1">Text1</t>
<t id="2">Text2</t>
<t id="3">Text3</t>
</page>
</language> |
Zeile 02: |
Zeile 03: |
Zeile 04: |
Zeile 05: |
Zeile 06: |
Zeile 07: |
Zeile 08: |
Und speichern die Datei
erst einmal ab, wie sie ist. Mit einem Editor (zum
Beispiel Wordpad ++) öffnen wir nun die Datei und kopieren den im Kasten (ohne
die "Zeile:00) stehenden Text hinein:
Erklärung:
Zeile 2: |
<language id="49"> |
Für welche
Sprache diese Texte in dieser Liste sind. Man kann theoretisch auch
nach beenden
(mit Zeile 8) der Deutschen Sprachliste eine neue Liste für andere
Sprachen
öffnen (z.B. <language id="44">). Damit braucht man dann nur eine
Datei
im "t" Ordner
mit mehreren Sprachen gleichzeitig. |
|
|
Zeile 3: |
page id="" |
Startet einen
Table/Array, eine Art Tabellenliste und die angegebene Zahl ist
quasi
der
Spaltenname. |
|
|
Zeile 4: |
<t id="1">Text1</t> |
"<t id="1">"
Gibt eine Art Tabellenadresse an. Danach kommt der Inhalt ("Text1")
und
das "</t>"
schließt den Inhalt für diese Adresse ab. |
|
|
Ich habe mal
versucht das etwas besser zu verdeutlichen. Statt A, B, C für die
Spalten, steht page id="1",
statt Zeile 1,
2, 3 steht t id="1" und so weiter.
Tabellenblatt Name: language id="49" |
|
Spalte 1: page id="1" |
Zeile 1: t id="1" |
Text1 |
Zeile 1: t id="2" |
Text2 |
Zeile 1: t id="3" |
Text3 |
|
Wollen wir
einen Bestehenden Text des Original Spiels ändern, weil eine
Beschreibung oder Übersetzung
Fehlerhaft
oder unpassend ist, müssen wir die "Spalten"- und "Zeilen"-
Adressnamen wie in der Original
"0001-L049.xml" Textdatei von Egosoft benutzen. Dabei wird dann
dieser Wert/Text übernommen,
ohne dass die
Original Datei verändert wird. Das bedeutet, wenn man die
Erweiterung wieder entfernt,
kommt wieder
der Originaltext von Egosoft. (Hier
ist die Original Egosoft Textdatei)
Um ein
unbeabsichtigtes "Überschreiben" von anderen Texten aus anderen Mods
zu verhindern, müsst ihr
darauf Achten,
das ihr unterschiedliche "page id="" " und "t id="" " Namen wählt.
Dazu solltet ihr vorher in
die
Kompatibilitätsliste schauen, welche Recourcen die anderen
Modschreiber bereits verwendet haben.
Und vergesst
bitte nicht auch eure eigenen verwendeten Recourcen (eure
verwendeten ID's usw.) in die
Liste
einzutragen, damit andere Modschreiber nicht versehendlich eure
Texte überschreiben.
Für neue Texte
müssen wir also ID's verwenden, die noch unbenutzt sind. |
Beispiel: Als
Beispiel habe ich nun folgende Einträge genommen.
<?xml version="1.0"
encoding="UTF-8" ?>
<language id="49">
<page
id="9999" title="Neue_Menüeinträge" descr="Test um neue Menüeinträge
einzubauen" voice="no">
<t id="1">1 Hauptmenü</t>
<t id="2">2 Untermenü von Hauptmenü</t>
<t id="3">3 zweites Untermenü von Hauptmenü</t>
<t id="4">4 Untermenü von Untermenü von Hauptmenü</t>
</page>
</language> |
Im Spiel sieht man davon
allerdings noch nichts, dazu fehlen noch die Angaben, was, wann und wo Angezeigt
werden soll. |