Fragen zum Auslesen von Schiffsdaten mittels Skripteditor

Hier ist der ideale Ort um über Scripts und Mods für X³:Farnham's Legacy zu diskutieren.

Moderators: Scripting / Modding Moderators, Moderators for English X Forum, Moderators for the X3:FL Forums

Post Reply
Freizeitspieler
Posts: 98
Joined: Tue, 9. Aug 05, 19:50
x4

Fragen zum Auslesen von Schiffsdaten mittels Skripteditor

Post by Freizeitspieler » Fri, 21. May 21, 22:22

Ich bin ja gerade dabei eine aktuelle Schiffsliste zu erstellen und hab dazu jetzt ein bisschen mit dem Skripteditor rumgespielt, um zumindest die Basisdaten direkt aus dem Spiel ziehen zu können. Das klappt soweit eigentlich schon ganz gut, allerdings hätte ich noch ein paar Fragen, vielleicht kann ja jemand weiterhelfen:
  • Gibt es eine Möglichkeit, alle Schiffstypen als Liste/Array zu bekommen? Momentan teste ich einzelne Schiffstypen, die kann ich auch manuell auswählen, aber sich für alle Schiffe jedesmal durch das Menü zu klicken wäre schon nervig. Das würde ich gerne mit einer Schleife über ein Array lösen.
  • Hat jemand schon mal jemand die Befehle

    Code: Select all

    <RetVar> get max upgrade speed: shiptype=<Var/Ship Type>
    und

    Code: Select all

    <RetVar> get average steering: shiptype=<Var/Ship Type>
    (im Skripteditor zu finden unter "Fly Commands" -> "Daten - Schiffs-/Stationstyp") ausprobiert? Die liefern bei mir unplausible Werte. Und zusätzlich liefert mir auch jede Abfrage, die danach kommt, den Wert "0" zurück. Der nach dem selben Prinzip aufgebaute Befehl

    Code: Select all

    <RetVar> get acceleration: shiptyp=<Var/Ship Type>
    funktioniert dagegen wie erwartet. Die Geschwindigkeitswerte kann ich zwar auch auslesen, in dem ich ein enstprechendes Schiff spawnen lasse und darauf dann "<RetVar> = <RefObj> get max upgradet speed" (aus "General Object Commands" -> "Schiffskommandos") anwende, für die Drehrate gibt es hier aber keinen entsprechenden Befehl (oder ich hab ihn übersehen).
  • Die Hauptlaser sind immer auf Position 0 im Geschützturmarray, richtig?
  • Die Ausgabe der Daten mache ich als csv Datei, wobei jedes Schiff eine eigene Zeile bekommen soll. Wie füge ich aber einen Zeilenumbruch in einen String ein?

User avatar
X2-Illuminatus
Moderator (Deutsch)
Moderator (Deutsch)
Posts: 22751
Joined: Sun, 2. Apr 06, 16:38
x4

Re: Fragen zum Auslesen von Schiffsdaten mittels Skripteditor

Post by X2-Illuminatus » Sat, 22. May 21, 18:00

Freizeitspieler wrote:
Fri, 21. May 21, 22:22
Gibt es eine Möglichkeit, alle Schiffstypen als Liste/Array zu bekommen?
<RetVar> = get ship type array: maker race=<Var/Race> class=<Value> in den Universe and Sector Commands. Beide Eingabewerte mit 'null' befüllen, dann bekommst du alle Schiffstypen zurückgegeben. Alternativ gibt es noch den Befehl "get all available shiptype: exclude buyable", der dir alle verfügbaren Schiffstypen als Tabelle zurückgibt.
Freizeitspieler wrote:
Fri, 21. May 21, 22:22
Hat jemand schon mal jemand die Befehle

<RetVar> get max upgrade speed: shiptype=<Var/Ship Type>

<RetVar> get average steering: shiptype=<Var/Ship Type>
(im Skripteditor zu finden unter "Fly Commands" -> "Daten - Schiffs-/Stationstyp") ausprobiert? Die liefern bei mir unplausible Werte.
Die Befehle liefern interne Einheiten, da der Script Editor nur integer-Werte kennt. Du kannst dir das Script "plugin.shipbrowser.columise" anschauen. Dort werden die Befehle verwendet und die Werte umgerechnet.
Freizeitspieler wrote:
Fri, 21. May 21, 22:22
Die Hauptlaser sind immer auf Position 0 im Geschützturmarray, richtig?
Richtig.
Freizeitspieler wrote:
Fri, 21. May 21, 22:22
Die Ausgabe der Daten mache ich als csv Datei, wobei jedes Schiff eine eigene Zeile bekommen soll. Wie füge ich aber einen Zeilenumbruch in einen String ein?
Jeder "write to logfile"-Befehle schreibt in eine neue Zeile ("append=True" vorausgesetzt). Wenn du deine Ausgabe so formatierst, dass alle Informationen zu einem Schiff in einer Zeile stehen, musst du nur die komplette Zeile auf einmal ins Logfile schreiben. Der nächste, mittels "write to logfile" ausgegebene Text landet automatisch in der nächsten Zeile. Brauchst du für irgendwas in einer Textzeile einen Zeilenumbruch, dann musst du dir diesen aus einer Textdatei einlesen. Verfügbare Varianten finden sich z. B. unter {35,1104343} (%s\n) oder {2295,254} (%s\n%s).
Nun verfügbar! X3: Farnham's Legacy - Ein neues Kapitel für einen alten Favoriten

Die komplette X-Roman-Reihe jetzt als Kindle E-Books! (Farnhams Legende, Nopileos, X3: Yoshiko, X3: Hüter der Tore, X3: Wächter der Erde)

Neuauflage der fünf X-Romane als Taschenbuch

The official X-novels Farnham's Legend, Nopileos, X3: Yoshiko as Kindle e-books!

Freizeitspieler
Posts: 98
Joined: Tue, 9. Aug 05, 19:50
x4

Re: Fragen zum Auslesen von Schiffsdaten mittels Skripteditor

Post by Freizeitspieler » Sun, 23. May 21, 13:49

Vielen Dank, das hat mir sehr weitergeholfen!

Freizeitspieler
Posts: 98
Joined: Tue, 9. Aug 05, 19:50
x4

Re: Fragen zum Auslesen von Schiffsdaten mittels Skripteditor

Post by Freizeitspieler » Mon, 24. May 21, 19:27

X2-Illuminatus wrote:
Sat, 22. May 21, 18:00
Freizeitspieler wrote:
Fri, 21. May 21, 22:22
Hat jemand schon mal jemand die Befehle

<RetVar> get max upgrade speed: shiptype=<Var/Ship Type>

<RetVar> get average steering: shiptype=<Var/Ship Type>
(im Skripteditor zu finden unter "Fly Commands" -> "Daten - Schiffs-/Stationstyp") ausprobiert? Die liefern bei mir unplausible Werte.
Die Befehle liefern interne Einheiten, da der Script Editor nur integer-Werte kennt. Du kannst dir das Script "plugin.shipbrowser.columise" anschauen. Dort werden die Befehle verwendet und die Werte umgerechnet.
plugin.shipbrowser.columise liefert schon sehr viel von dem was ich mir vorstelle, allerdings bin ich jetzt noch auf ein anderes Problem gestoßen: Ich würde gerne die Varianten der Schiffe (Angreifer, Verteidiger, Tanker...) getrennt vom Hauptnamen haben. Die Lösung hatte ich mir so gedacht: 'name' aus der von plugin.shipbrowser.columise erstellten Liste raussuchen, den String am ersten Leerzeichen trennen und den vorderen Teil und den hinteren Teil separat verarbeiten.

Prinzipiell kein Problem, hat mit meinem Teststring auch funktioniert. Mit dem Schiffsnamen aber nicht. Nach ein bisschen rumprobieren bin ich drauf gekommen, dass das, was mir plugin.shipbrowser.columise als 'name' zurück gibt, anscheinend kein string ist. Folgender Code:

Code: Select all

shipname.complete = $shiptable.ship['name'][1] --> shiptable.ship ist die table für das aktuelle Schiff aus plugin.shipbrowser.columise
write to log file #2  append=[TRUE]  value=$shipname.complete
shipname.complete.length = get length of string $shipname.complete
write to log file #2  append=[TRUE]  value=$shipname.complete.length
Liefert mir für jedes Schiff folgenden Eintrag in der Logdatei:
*Vollständiger Schiffsname*
0

Kann ich shipname.complete irgendwie explizit in einen String umwandeln? Die implizite Umwandlung bei der Ausgabe in die Logdatei funktioniert ja, aber ich habe keine Option im Skripteditor für eine explizite Umwandlung gefunden.

User avatar
Lucike
Posts: 12386
Joined: Sun, 9. May 04, 21:26
x4

Re: Fragen zum Auslesen von Schiffsdaten mittels Skripteditor

Post by Lucike » Mon, 24. May 21, 21:18

Freizeitspieler wrote:
Mon, 24. May 21, 19:27
Kann ich shipname.complete irgendwie explizit in einen String umwandeln? Die implizite Umwandlung bei der Ausgabe in die Logdatei funktioniert ja, aber ich habe keine Option im Skripteditor für eine explizite Umwandlung gefunden.
Beispiel:

Code: Select all

$String = sprintf: fmt='%s', $ShipType, null, null, null, null
Oder wie noch zu X2-Zeiten:

Code: Select all

$String = $ShipType + ''
Es gibt aber auch noch andere Wege, wie etwa die Text-Datei auslesen. Einen neuen Befehl habe ich auch schon gesehen, der die Varianten zurück gibt.

Gruß
Lucike
Image

Freizeitspieler
Posts: 98
Joined: Tue, 9. Aug 05, 19:50
x4

Re: Fragen zum Auslesen von Schiffsdaten mittels Skripteditor

Post by Freizeitspieler » Tue, 25. May 21, 01:06

Danke. sprintf hatte ich sogar versucht, aber anscheinend den Syntax falsch gemacht. Jetzt klappt es.

Post Reply

Return to “X³: Farnham's Legacy - Scripts und Modding”