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
Warenliste eines Schiffes ermitteln
Moderators: Scripting / Modding Moderators, Moderatoren für Deutsches X-Forum
-
- Posts: 863
- Joined: Sat, 21. Feb 09, 12:54
Warenliste eines Schiffes ermitteln
eigene Projekte: Reflexers kleine Scriptsammlung
-
- Moderator (Deutsch)
- Posts: 25130
- Joined: Sun, 2. Apr 06, 16:38
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)
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.
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
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!
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!
-
- Posts: 863
- Joined: Sat, 21. Feb 09, 12:54
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.

"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.

eigene Projekte: Reflexers kleine Scriptsammlung