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.