Hallo,
hab' den alten Thread nicht wiedergefunden, Tschuldigung.
Sollte das hier schon zum Grundwissen oder so gehören, Tschuldigung nochmals. Dann einfach löschen.
Es wurde hier schon nachgefragt, wie man die Nasmen von Sektoren, die das System nicht kennt, nachlegen kann. Da wurde verschiedentlich auf die ll0001.xml (ll für Sprachennummer) verwiesen, wo alle Sektornamen drinstehen. Da man die aber aus den Paketen rausholen und dann wieder einbinden muss, ist eine Änderung daran etwas mühsam.
Es geht aber auch anders. Es ist nämlich egal, aus welcher Datei ein Text kommt. Sobald er die richtigen Nummern (aber eben nur page-ID und Text-ID, nicht die languagefile-ID) hat, wird er benutzt. Im Handbuch gibt es eine Liste, die die Sektorennamen der bekannten Sektoren angibt. Dort steht die page-ID 7 und Text-ID 102xxyy (xx und yy sind die universe Index aus den Universe and Sector Commands, aber jeweils um Eins höher -dämliche Konstruktion, muss man immer rumrechnen). Wenn man ein language-file erzeugt und einbindet mit den entsprechenden Daten, kann man jeden Sektor umbenennen (es wird immer die zuletzt geladene Version benutzt). Und das Besondere: Dieser Name erscheint auch in zum Beispiel der Galaxie-Karte und anderswo (wird aber logischerweise nicht aufgesagt), obwohl laut Handbuch page-ID 7 für den Seak text-Audio-Befehl ist.
Ich dachte nur, dass könnte eventuell jemanden interessieren.
Tschüß
ManfredP
Mal wieder die Sektornamen
Moderators: Scripting / Modding Moderators, Moderatoren für Deutsches X-Forum
-
- Posts: 140
- Joined: Sun, 24. Sep 06, 21:23
-
- Posts: 115
- Joined: Tue, 25. Apr 06, 12:40
Ich dachte eigentlich, oben stünd's ...
Hallo,Revan Tair wrote:Hi,
das ist ein gutes Thema, ich möchte gerne wissen wie ich Sektor-Namen ändere( z.B. Unbrkannte Sektoren) wo muss ich da drauf gehen, könntet ihr das mal für einen Noob wie mich das mal Schritt für Schritt erklären?![]()
Danke im vorraus.
mfg Revan Tair
also nochmal langsam zum Mitschreiben:
Man baut eine Datei, die innen Ähnlich aufgebaut ist wie die, die es schon im Ordner 't' (unter dem X2-Ordner, da, wo das Programm drin ist) zu finden sind. Am Besten, man kopiert eine der Dateien. Der Name muss eine sechsstellige Zahl sein (mit XML hinter dem Punkt) und natürlich noch nicht da. Er muss mit 49 anfangen (oder 44 oder so, wenn das Spiel nicht auf deutsch ist). Innen steht sowas wie language und so, das bleibt alles stehen. Die einzelnen Tags, also Schlüsselbegriffe für die Steuerung der Datei, sind durch <...> eingerahmt. /-irgendwas steht dabei für alles zurück.
Zuerst braucht man den Tag page. Da steht auch eine ID, Text und ein paar Sachen wie Descr und so. Die ID muss geändert werden auf '7', der Rest irgendwie (oder auch nicht, ist egal). Gibt es noch mehr Bereiche mit page und /page drumrum, dann kommen die weg. Zwischen page und /page kommen auch Bereiche mit t und /t. Das sind die Texte. Davon braucht man soviele, wie es neue Namen geben soll (das könnten auch geänderte Namen für benannte Sektoren wie Brennans Triumph oder so sein). Jeder Abschnitt steht für einen Namen.
So, und jetzt wird's etwas problematisch. Die Galaxie-Karte im Spiel ist zwei-dimensional aufgebaut (also nur Höhe und Breite) Da stehen die Systeme untereinander und nebeneinander. Es gibt hier zum Download eine XLS- (Excel-)Datei mit vielen Tabellen, da ist auch eine Karte dabei (Name? Keine Ahnung ...), da kann man die Zahlen abzählen.
Der springende Punkt ist, dass die Karte auch Lücken aufweist, die aber mitzählen. Unter 'Herzogs Vision' unterhalb von 'Paranid Prime' gibt es zum Beispiel so eine Lücke. Die Position eines Sektors wird durch zwei Nummern beschrieben, eine für die Breite (X) und eine für die Höhe (Y) und die Beiden zählen von 'Königs Tal' oben links aus -und eben auch über die Lücken durch.
Im Script-Editor gibt es unter 'Universe and Sector Commands' Befehle wie 'get universe x index', die behandeln diese Zahlen. Aber Vorsicht. Diese sog. Indices zählen von X=0,Y=0, wir brauchen aber X=1,Y=1, also beide um Eins höher -natürlich für jeden Sektor.
Diese Zahlen werden zweistellig aneinander gehängt (nicht addiert, sondern sowas wie X=2,Y=3 wird zu '0203') und dann noch '102' davor (insgesamt dann also in dem Beispiel '1020203', das wäre dann 'Herrons Nebel'). Das ist dann die Text-ID und die kommt hinter das t für den Namen des Sektors, der einen Neuen bekommen soll. Und das für jeden Sektor, dessen Namen man ändern will -natürlich in jeweils einem eigenen t-Abschnitt. Der neue Name des Sektors kommt dann hinter die spitze Klammer am Ende des Tags mit der ID dazu (aber vor </t>).
Hat man diese XML-Datei fertig, wird im Script-Editor ein einfaches Script mit nur einem Befehl geschrieben. Es ist die Anweisung 'load text' aus dem 'Object Commands'-Bereich des Editors. Die language-file-ID, die man da braucht, ist der Name der Datei, aber die 49 (oder auch 44 oder was auch immer) davor weggelassen. Man kann das auch als setup-Script schreiben, dann wird es automatisch gestartet. Will man die Änderung aber nur ab dem Moment, kann man sich das auch schenken, denn sowas wird im Save-Game gespeichert, ist also, nachdem man den Befehl load text einmal ausgeführt hat, in jedem Save mit drin.
Ich hoffe, damit ist alles klar. Wenn man diese Nummern-Geschichte erst mal klar hat, ganz einfach, nicht wahr? Die Nummern kann einem auch ein Script mit den beiden get universe index-Befehlen liefern, wenn man will. Da sollte man dann aber gleich jeweils Eins addieren, dann vergisst man es nicht mehr. Sowas könnte dann so aussehen:
Code: Select all
arg1=Var/Sector, Var-Name=Sektor
001 $X=$Sektor -> get universe x index
002 $Y=$Sektor -> get universe y index
003 inc $X=
004 inc $Y=
005 $Nachricht=sprintf: fmt='Die X- und Y-Indices fuer die Namensdatei sind X=%s, Y=%s', $X, $Y, null, null, null
006 send incoming message $Nachricht to player: display it=[FALSE]
007 return null
Tschüß
ManfredP
-
- Posts: 55
- Joined: Sun, 3. Dec 06, 18:41
-
- Posts: 140
- Joined: Sun, 24. Sep 06, 21:23