[TUT] Integrieren und Anzeigen neuer Sektoren in X3

Hier ist der ideale Ort um über Scripts und Mods für X³: Terran Conflict und X³: Albion Prelude zu diskutieren.

Moderators: Moderatoren für Deutsches X-Forum, Scripting / Modding Moderators

Post Reply
User avatar
Lc4Hunter
Posts: 2041
Joined: Sun, 2. Apr 06, 16:15
x3tc

[TUT] Integrieren und Anzeigen neuer Sektoren in X3

Post by Lc4Hunter » Sat, 31. Oct 09, 02:34

Tutorial - Einbinden neuer Sektoren in X3 Terran Conflict

Dieses Tutorial wird sich mit dem Erstellen neuer Sektoren und dem Anpassen der Galaxiekarte für X3TC beschäftigen.

1. Schritt - Was brauche ich?

Grundsätzlich brauch man nur drei Dinge: Das Spiel X3 Terran Conflict, ein 3D-Programm (vorzugsweise 3ds Max) mit dem DBOX2 Plugin und den X3Editor (alles von http://x-tools.doubleshadow.wz.cz/).
Hinweis dazu:
- Nicht den X3Editor2 nehmen da dieser keinen Galaxy-Editor hat!!!
- Ich habe 3ds Max 2010 verwendet, daher kann eure Benutzeroberfläsche abweichen!

2. Schritt - Verstehen ist die halbe Miete.

Das Universum in X3 besteht aus einer riesigen Universums- bzw. Sektorkarte im XML-Format welche sich im Ordner maps befindet. Diese beinhaltet die einzelnen Sektoren sowie die vordefinierten Objekte.
Der zweite Bestandteil ist die Übersichtskarte die ingame zum besseren Navigieren aufgerufen werden kann, welche alle dem Spieler bekannten Sektoren und Torverbindungen anzeigt.
Diese wiederrum ist eine 3D-Datei im bod-Format welche im Ordner objects\cut zu finden ist.

Die Übersichtskarte ist von egosoft standartmäßig nur mit den verwendeten Sektoren bestückt, das heißt wird die Universumskarte durch erweitert muss auch die Übersichtskarte entsprechend erweitert werden.
Wird dies nicht gemacht wird der Sektor ingame nicht auf der Karte angezeigt. Er kann zwar problemlos beflogen werden, aber er wird eben nicht angezeigt, was gerade bei mehreren neuen Sektoren sehr unübersichtlich wird.


3. Schritt - X + Y = Sektorkoordinate.

Jetzt aber genug der Theorie. Nun wollen wir testweise zwei neue Sektoren ins Spiel bringen. Für dieses Beispiel habe ich eine Stelle unter den Yakisektoren am westlichen Rand des X-Universums rausgesucht.

Image

Hier werden wir den Yaki zwei neue Sektoren schenken. Geht man mit dem Mauszeiger über die auf dem Bild markierten Felder bekommt man auch gleich deren Koordinaten. Die Koordinaten für den oberen Sektor sind X=0 Y=11 und für den unteren X=0 Y=12.
Diese brauchen wir gleich.

Jetzt erstellen wir eine neue Karte im Galaxyeditor. Ja, eine komnplett leere Karte.
Nun suchen wir uns mit dem Mauszeicher wieder unsere beiden Felder.
Nun einmal Rechtsklick auf das obere Feld, dann "Add sector" auswählen und fertig, der erste Sektor ist da. Die gleiche Prozedur nun bei dem unteren Feld.
Jetzt müssten zwei gelbe Sektoren zu sehen sein mit den Bezeichnungen [string 7:1021201] und [string 7:1021301]. Wenn diese so zu sehen sind ist alles so wie es sein soll.
Nun der Trick: Über den beiden Sektoren ist ja bekannterweise ein Yakisektor. Rechtsklick in das leere Feld und "Add sector". Nun sollte auch da ein Sektor sein der schon den richtigen Namen hat.
Als nächstes müssen alle Sektoren miteinander vebunden werden, auch der bereits bestehende Yakisektor zählt dazu. Entweder macht man das über den X3Editor oder aber über den Galaxyesitor.
Erklärungen wie das geht gibt es zu Hauf, daher spar ich mir den Text an der Stelle.

Eine Erklärung dazu kommt später...

Jetzt die Karte unter einem beliebigen Namen abspeichern (ich habe der Map den Namen "yaki_sector.xml" genannt) und im Ordner maps des X3 Verzeichnisses speichern.
Ist der Ordner nicht da, einfach anlegen und rein mit der Datei.


4. [string 7:1021201] ist doch keine Name?!

Damit unsere neuen Sektoren später auch einen Namen haben werden wir ihnen auch gleich einen verpassen.
Dazu öffnen wir im X3 Editor den Text Ressource Editor und öffnen mit diesem eine der Textdatein. Da ich hier deutsch schreibe werde ich mein Beispiel an der deutschen Textdatei forstführen.
zunächst ist es wichtig die richtige Texdatei rauszusuchen.
In unserem Fall ist es die "0001-L049.xml".
Diese öffnen wir nun und markieren auf der linken Seite die Zeile "7 Boardcomp. Sectornames". Auf der rechten Seite sollte nun eine Reihe von IDs und Sektornamen stehen. Nun einfach einen Rechtsklick in das Feld und dann auf "Add Text".
In dem sich nun öffnenden Fenster die ID des Sektors eingeben und in dem zweiten, größeren, Feld den Namen des neuen Sektors.
Aber was ist die Sektor-ID? Die Sektor-ID kann man aus den oben genannten Bezeichnungen ablesen "7:1021201". 7 steht dabei für die Registerkarte 7 und 1021201 steht für die ID.
Also tragen wir diese nun ein und benennen den Sektor. Ich habe ihn für unser Beispiel einfach "Yaki 1" genannt.

Das selbe machen wir nun mit dem zweiten Sektor. Ich habe ihn Yaki 2 genannt.


5. Seven Of Nine oder One Of Eleven?!

Der nächste Schritt ist nun folgerichtig das Anpassen der Übersichtskarte für die Anzeige im Spiel.
Dazu suchen wir uns im Verzeichnes des entpackten X3 den Unterordner objects\cut und importieren die Datei 00749.bod als scene.

Image

Der Import dürfte etwas dauern. Ist alles erfolgreich von Statten gegangen müsste in etwas dieses Bild zu sehen sein:
Falls nicht bitte ich darum einfach mal die Taste "F" zu drücken um die Frontansicht zu erhalten. Spätestens jetzt müsste es so aussehen.

Image

Auf den ersten Blick dürfte das alles etwas verwirrend wirken. Kein Wunder, bei über eintausend grünen Kästchen.
Aber wenn man das ganze aus etwas Entfernung und im Ganzen anschaut erkennt man (hoffentlich) ein Muster welches stark an die Übersichtskarte aus X3 erinnern dürfte.
Schauen wir auf das zurück was wir bereits wissen: Wir haben zwei neue Sektoren am westlichen Ende der Karte erstellt welche unter einer Reihe von Yaki-Sektoren liegen.
Der Bereich in dem unsere neuen Sektoren angezeigt werden sollen befindet sich also in etwa in dem markierten Bereich des nächsten Bildes:

Image

Schauen wir uns diesen Bereich genauer an finden wir einige grüne Kästchen, was sonst?! Einige von diesen sind "gerade ausgerichtet" und anderen sind gedreht.
Und interessieren vorerst nur die gerade. Schauen wir uns deren Namen an sehen wir das alle eine vierstellige Zahl mit einem "B" davor als Namen haben. Das B ist absolut uninteressant aber anhand der Zahlen kann man sehen mit welchem
Sektor dieses grüne Kästchen verknüpft ist.
In relativ gerader Reihe nach unten findet man die beiden Kästchen mit den Nummern "B0110" und "B1011". Um deutlich zu machen worauf ich hinaus will: "B x01 y10".
Diese vierstelligen Zahlen stellen die Koordinaten dar. Dabei ist es wichtig zu wissen das jede Koordinate aus einem Paar Zahlen besteht.

Jetzt müssen wir etwas umdenken.
Unsere Sektoren haben für X die Koordinate 00. Dies ist ein kleiner Fehler im X3Editor da in diesem das Koordinatensystem mit x0 y0 beginnt. Aber in X3 wird von x1 y1 gezählt. Einfach gesagt muss man jede Koordinate aus dem X3-Editor jeweils um den Wert 1 erhöhen um auf den tatsächlichen Wert zu kommen.
Laut X3 haben unsere Sektoren also die Koordinaten "x01 y11" und "x01 y12".
Nun markieren wir uns das Kästchen B0111 und kopieren bzw. klonen es. Den vorgeschlagenen Namen verwerfen wir und nennen es stattdessen B0111.
Nun sind beide Kästchen übereinander, das wollen wir aber nicht. Also rücken wir das Kästchen einfach um den Wert 100 nach unten. Dies ist allgemein ein guter Wert den man am besten immer als Richtwert nehmen sollte. So überschneiden sich keine Felder und es ist auch nicht zu viel Platz zwischen Ihnen.
Das gleiche machen wir nun mit unserem neuen Kästchen, nur diesmal bekommt es den Namen B0112.


6. Kommste raus kannste reingucken, oder so.

Nächster Schritt ist das Exportieren der neuen Übersichtkarte.
Ich habe die Erfahrung gemacht das die DBOX zum einen gern mal abstürzt wenn man so viele Objekte exportieren will oder aber das die komplett exportierte Karte nicht angezeigt wird.
Daher machen wir es uns hier etwas umständlicher und exportieren vorerst nur die beiden neuen Objekte. Diese werden einfach markiert und dann über das DBOX2-Menü auf der rechten Seite als
scene, ich wiederhole: als SCENE, unter einem beliebigen Namen -der nicht 00749 ist- exportiert.

Diese neue Datei wird nun mit dem Texteditor (kein Word, reiner Texteditor ist zu empfehlen!!!) geöffnet.
Es sollten zwei Einträge zu sehen sein die so aussehen (abweichende Koordinaten wahrscheinlich, aber irrelevant):

Image

Es ist empfehlenswert die, durch den Export wegrationalisierten, Nullen zu ergänzen.
Nun öffnen wir die 00749.bod ebenfalls mit dem Texteditor. Es sollte recht wirr aussehen. Jetzt suchen wir uns den letzten Index-Eintrag. Da ich euch den Frust sparen will: P 1005.
Nun kopieren wir die neuen zwei Objekte in die 00749.bod. Einfach ans Ende setzen und passen die Indexnummern an. Sprich, unsere beiden Einträge bekommen die Nummern 1006 und 1007.
Nun die modifzierte Übersichtskarte speichern.

Hinweis dazu: In diesem Beispiel muss die 00749.bod in eine extra Mod gepackt werden und dann beim Spielstart aktiviert werden (oder als Fakepatch).
Bei anderen Mods, wo die Map nur zusätzlich erweitert wird, kann diese wie gewohnt in das Mod-Paket integriert werden (Pfad objects\cut beachten!).


7. Das beste kommt zum Schluss...

Nachdem wir nun die Map als solches haben und auch die Übersichtskarte müssen wir beides nur noch in X3 integrieren.
Das heißt (sofern noch nicht geschehen) die neue Map in den maps-Ordner des X3 Verzeichnes kopieren und die Mod mit der modifizierten 00749.bod in den mods-Ordner bzw. als fakepatch in das X3-Hauptverzeichnisses.

Nun müssen wir X3 noch sagen das es diese Map laden soll. Dies machen wir über den Missiondirector.
Bevor ich loslege danke ich dem Autor dieser Info, unserem guten Moderator Ketraar.
Wenn am Ende also alles klappen sollte, denkt an ihn.

Kopiert folgenden Code in eine leere Textdatei:

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="director.xsl" type="text/xsl" ?>
<director name="template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="director.xsd">
  <cues>
    <cue name="Loadmap_************">
      <condition>
        <check_all>
          <check_value value="{player.name}" exact="loadmeamap"/>
        </check_all>
      </condition>
      <timing>
        <time exact="2s"/>
      </timing>
      <action>
        <do_all>
          <load_map file="************" comment="map name OHNE file extension"/>
        </do_all>
      </action>
    </cue>
  </cues>
</director>
Passt die relevanten Bereiche an eure Map an.

Danach speichert die Textdatei in dem Ordner "director" des X3 Verzeichnisses als *.XML ab (falls der Ordner nicht da ist, anlegen!).
Das wäre es soweit.


8. ...mit Happy End

Nachdem nun alles an seinem Platz ist starten wir X3 (sofern nötig Mod aktivieren) und starten testweise ein neues Spiel.
Nun ändern wir unseren Namen in "loadmeamap". Anders als beim Script- oder Galaxyeditor friert das Spiel nicht ein und der geänderte Name bleibt. Man kann ihn aber wieder umbenennen...
Nun fliegen wir zum Sektor Sturm der Weber und suchen ein Südtor. Ist dieses da hat alles geklappt und ihr könnt eure beiden neuen Yakisektoren abklappern.


9. Und die Moral von der Geschicht.

Nun zum Trick: Seit Patch 2.5 ist es möglich neue Sektoren in ein laufendes Spiel einzufügen. Das Problem ist nun diese in das bestehende Universum zu integrieren. Auch das hat EGOSOFT stark erleichtert.
Wie in unserem Beispiel knüpft die neue Map an die alte an, an dem Sektor Sturm der Weber. Erstellen wir diesen Sektor nun auch in der neuen Map wird alles was wir in diesen Sektor setzen (Fabriken, Schiff und TORE) beim Laden in das bestehende Universum integriert.
Gerade der Fakt das Tore übernommen werden ist dabei äußerst praktisch. So spart man sich das Erstellen von Toren per Script.


10. Sequel

Später werde ich auch noch erklären wie man die Sektorverbindungen angezeigt bekommt.

Aber dafür ist es mir heute zu spät oder eher zu früh.

User avatar
Lc4Hunter
Posts: 2041
Joined: Sun, 2. Apr 06, 16:15
x3tc

Post by Lc4Hunter » Sat, 31. Oct 09, 02:36

RESERVIERT

!!!BITTE NICHT HIER ANTWORTEN!!!

Bitte hier Fragen, Kritik und sonstiges Posten:
=>http://forum.egosoft.com/viewtopic.php?t=262774

Danke :)

Post Reply

Return to “X³: Terran Conflict / Albion Prelude - Scripts und Modding”