Warenliste eines Schiffes ermitteln

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

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

User avatar
Reflexer
Posts: 863
Joined: Sat, 21. Feb 09, 12:54
x4

Warenliste eines Schiffes ermitteln

Post by Reflexer »

Hi Leute,

ich sitze grade an den letzten Zügen des SOM und habe ein Problem. Mit der neuen Funktion Warenlager/Warentransfer biete ich die Möglichkeit Waren aus definierten Warenlagern auf die neuen Schiffe zu transferieren. Bei Stationen/Komplexen/ADs/HQs funktioniert das ganze auch problemlos. Allerdings machen mir die TLs das Leben schwer.

Bei den Fabs ist die Ermittlung der zur Verfügung stehenden Waren ja leicht mittels " $tmpProductlist = $tmpStation->get products" ermitteltbar. Soweit so gut.

Nach dem Studium der Möglichkeiten der Schiffs-Trade-Befehle blieb mir (offensichtlich) nur die Möglichkeit die Waren des Schiffs mittels "$tmpProductlist = get warearray for $tmpShip" zu ermitteln. Allerdings ist mit dem Befehl "get warearray" die Variable $tmpProductlist immer null, obwohl jeden Menge Waren im TL vorhanden sind.

Wie ermittele ich nun korrekt alle Waren, die ein Schiff im CargoBay hat? Was mache ich falsch? Leider gibt die MCSI hierzu keine Hilfe.

Danke für die Hilfe.

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

Post by X2-Illuminatus »

Der "get ware array"-Befehl funktioniert nur bei Nicht-Spielerschiffen und gibt alle nichtinstallierten Waren, die sich im Frachtraum befinden, in einem Array zurück. Die gleiche Funktion für Spielerschiffe bietet der "get tradeable ware array"-Befehl.

Die installierten Schilde erhält man mithilfe des Befehls <RetVar/IF><RefObj> get shield type in bay <Var/Number> sowie die Anzahl der Schildbuchten über <RetVar/IF><RefObj> get number of shield bays, beide zu finden in den General Object Commands.
Direkt über dem "get number of shield bays"-Befehl findet sich der entsprechende Befehl für die Anzahl der Laserbuchten. Mit diesem und den folgenden Befehlen (finden sich alle unter General Commnds -> Weapon Information)
  • <RetVar/IF><RefObj> get max. number of lasers in turret <Var/Number>
    <RetVar> = <RefObj> get laser type in turret <Var/Number> at slot <Var/Number>
    <RetVar/IF><RefObj> get laser type in bay <Var/Number>
    <RetVar> = <RefObj> get number of turrets
erhält man die im Schiff installierten Laser.
Ebenfalls in den Weapon Information finden sich Befehle um die kompatiblen Raketen für ein Schiff herauszubekommen. Dabei könnte man mit <RetVar/IF><RefObj> get compatible missile array from cargobay prüfen, ob sich im Frachtraum installierbare Raketen befinden. Wenn nicht, kann man die Werte aus dem tradeable ware array nehmen. Wenn doch, prüft man, wie viele der zurückgegebenen Raketentypen sich im Frachtraum befinden.

Alternativ könnte man natürlich auch die einzelnes Maintypes durchgehen (8 = Laser, 9 = Schilde, 10 = Raketen) und prüfen welche und wie viele Waffen/Schilde im Frachtraum vorhanden sind.

Insgesamt muss man natürlich aufpassen, dass man die Waffen und Schilde aus dem tradeable ware array nicht doppelt erfasst.
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!
User avatar
Reflexer
Posts: 863
Joined: Sat, 21. Feb 09, 12:54
x4

Post by Reflexer »

Vielen Dank Illuminatus :)

"get tradeable ware array" war genau was ich suchte - keine Ahnung, warum ich den Befehl falsch interpretiert hatte.

Jetzt klappt es jedenfalls dank Deiner Hilfe. :)

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