Page 1 of 1

Gelandete Schiffe abfragen

Posted: Mon, 26. Oct 15, 21:02
by HashtagMC
Der Scripteditor hat unter Generel Object Commands den Befehl <RetVar/IF> = <RefObj> -> get number of landed ships. Der gibt aber nur die Anzahl der gelandeten Schiffe zurück, nicht diese selbst.

Meine Frage lautet also: Wie bekomme ich alle auf einem Schiff gelandeten Schiffe geliefert (vorzugsweise als Array)?



Im Moment habe ich folgendes Script:

Code: Select all

$number = [THIS] > get number of landed ships
$i = 0
while $i < $number
    $ship = [THIS] -> find ship:class or type=null race=Player flags=[DOCKEDAT] refobj=null maxnum=null with homebase=[THIS]
    //Aktion für das Schiff
    $i = $i + 1
end
return null
Damit soll für alle Schiffe, die auf THIS gelandet sind und THIS als homebase haben eine Aktion ausgeführt werden. Blöderweise findet das Script aber dann x mal das selbe Schiff, bei 31 gelandeten Schiffen führt es dann 31 mal eine Aktion auf dem ersten Schiff aus.

Posted: Mon, 26. Oct 15, 22:02
by X2-Illuminatus
Den Befehl <RetVar> = <RefObj> get ship array from sector/ship/station sollte es bereits in X2 geben, wenn ich mich recht entsinne, und dort auch in den Universe and Sector Commands zu finden sein.

Posted: Mon, 26. Oct 15, 22:45
by HashtagMC
Ja, den Befehls gibts. Besten Dank.

Skript sieht jetzt so aus:

Code: Select all

$ships = [THIS] -> get ship array from sector/ship/station
$arraysize = size of array $ships
$arraysize = $arraysize - 1
$i = 0
while $i < $arraysize
    $ship = $ships[$i]
    = $ship -> call script plugin.hmc.hbname:
    $i = $i + 1
end
return null
Theortetisch sollte das alle gelandeten Schiffe umbenennen (plugin.hmc.hbname). Klappt aber net.

//Edit: Sehe grade, dass immer eins über bleibt. Durch das Entfernen von $arraysize = $arraysize - 1 gelöst. Dachte eigentlich, dass das so müsste, weil Arrays ja bei 0 anfangen und ein 30 langes Array also bei Position 29 endet.