Wie scripted man eine korrekte Schleife, für die Griffon?

Hier können Diskussionen rund ums scripten und modden zu X3 geführt werden.

Moderator: Moderatoren

Antworten
christianmunich
Rekrut
Beiträge: 53
Registriert: Di 14 Okt, 2008 8:26 pm
Lieblings X-Titel:

Wie scripted man eine korrekte Schleife, für die Griffon?

Beitrag von christianmunich »

Ich habe mir das Drohnenscript für die Griffon angesehen, da ich etwas für den Einstieg brauche.
Außerdem hat mich gestört das die "Arbeiter" an Bord streiken wenn man nicht genügend Credits auf dem Konto hat, auch wenn man vom Khaak umzingelt ist.
Meine Idee:
Keine Credits, sondern Rohstoffe werden verbraucht zum Drohnenbau!
Die relevanten Scripte dürften sein:
[highlight=red]plugin.XTM.Cmd.Build.M8Drone.xml[/highlight]
plugin.XTM.Cmd.Build.Drone.Check.xml
plugin.XTM.Cmd.Build.BuildDrone.xml
plugin.XTM.Cmd.Build.Drone.Build.xml
plugin.XTM.Cmd.Build.HullStatus.Const.D.xml
plugin.XTM.Misc.Griffon.MonitorDockedShips.xml

Das erste Scripte das meiner Meinung nach noch vor dem eigentlichen Bau läuft habe ich auch schon angefangen umzuschreiben (siehe unten, farbig markiert oder unterstrichen)
leider kommt immer eine Fehlermeldung, beim Befehl die Rohstoffe nach dem Beginn des Drohnenbaus aus dem Laderaum zu entfernen!

Irgenwie fehlt mir das Verständnis zu den Schleifen!
Weiss jemand was ich falsche mache, bzw. hat ein Idee wie ich die Ware bei Baubeginn aus dem Laderaum kriege?? :(

skip if not [THIS]->is task 181 in use
return null

set script command: {CMD_XTM_BUILD_DRONES}

[THIS]->connect ship command/signal {SIGNAL_KILLED} to script 'plugin.SIGNAL.KILLED' with prio 100
[THIS]->set local variable: name='SIGKILLED.XT.Griffon' value=[TRUE]

$ST.DroneII = {Argonen Kampfdrohne MkII}

skip if not [THIS]->is task 748 in use
[THIS]->start task 748 with script 'plugin.XTM.Cmd.Build.Drone.Monitor' and prio 100: arg1=null arg2=null arg3=null arg4=null arg5=null

$Shiptype = $ST.DroneII
$Drones = [THIS]->get local variable: name='XTMOD.DRONE.ARRAY'

$D = size of array $Drones
if not $D
$Drones = array alloc: size=0
[THIS]->set local variable: name='XTMOD.DRONE.ARRAY' value=$Drones
end

$D = size of array $Drones
while $D
dec $D =
$Drone = $Drones[$D]
if $Drone->exists
$Drone->set homebase to [THIS]
else
remove element from array $Drones at index $D
end
end
[THIS]->set local variable: name='XTMOD.DRONE.ARRAY' value=$Drones


[highlight=red]* von mir
$check = [THIS]->get amount of ware {Geschützturm 3923} in cargo bay
if $check < 2
return null
end
* von mir[/highlight]

$Drones = [THIS]->get local variable: name='XTMOD.DRONE.ARRAY'
$D = size of array $Drones
while $D < 24
$Drones = [THIS]->get local variable: name='XTMOD.DRONE.ARRAY'
$D = size of array $Drones
while $D
dec $D =
$Drone = $Drones[$D]
if $Drone->exists
$Drone->set homebase to [THIS]
[highlight=red][THIS]->add -2 units of {Geschützturm 3923}[/highlight]

[highlight=red]Hier frisst er es nicht mehr! Eigentlich sollte es ganz einfach sein, weiter oben checkt er, ob sich mindestens 2 Geschütztürme im Laderaum befinden, weiter unter entfernt er für jede zu bauende Drohne, 2 Geschütztürme. Aber es hängt!![/highlight]


else
remove element from array $Drones at index $D
end
end
[THIS]->set local variable: name='XTMOD.DRONE.ARRAY' value=$Drones
$D = size of array $Drones
skip if [THIS]->is task 162 in use
[THIS]->start task 162 with script 'plugin.XTM.Cmd.Build.BuildDrone' and prio 100: arg1=$Shiptype arg2=null arg3=null arg4=null arg5=null
= wait 20000 ms
$Drones = [THIS]->get local variable: name='XTMOD.DRONE.ARRAY'
$D = size of array $Drones
end

return null
Antworten