Das Script sollte (theoretisch) folgendes tun.
1. suche alle einsammelbaren Kleinasteroiden in scannerreichweite der aktuellen schiffsposition.
2. fals dass Schiff weiter als 2500km von nächstegelegenen Asteroiden weg is, flieg bis auf minimum 2500km hin.
3. schau nach wieviele erze das Teil in sich hat.
4. füge das dem Frachtrauch hinzu und zerstöre den Kleinasteroiden.
So weit also die Theorie.
Wenn ich das Script starte fliegt mein schiff (sogar ausserhalb des Scanners) ca. in die Sectormitte, bleibt stehen und lässt es sich dort gutgehen ^^.
das hier sucht doch alle Kleinasteroiden, also auch die die noch zu groß zum einsammeln sind oder?
Code: Select all
$gefundeneDebris = find debris: sector=$Sektor resource=null min yield=null flags=[Find.Nearest] refobj=[THIS] num=null max distance=$Scannerreichweite refpos=null
Wenns ohne arrays machbar ist, wäre ich nicht böse drumm *g*, Voprstellen könnte ich es mir mit arrys, dass er von 1-99schlagmichtot so lange weiterschaltet, bis es ein einsammelbarer ist. Aber kein Plan wie das aussehen muss.
Nach meinem Verständnis nach, sollte er falls mehrere sammelbare Kleinasteroiden im 2500km Bereich liegen, diese nach jeweils 1Sekunde nach und nach einsammeln ohne weiterzufliegen, richtig? Falls nicht warum nicht *g*.
Was ich bisher verbrochen habe
Code: Select all
$Menue = create custom menu array
add custom menu item to array $Menue: text='01 Asteroiden zerkleinern' returnvalue=1
add custom menu item to array $Menue: text='02 Asteroiden sammeln (mit dem Transporter)' returnvalue=2
$Menue = open custom menu: title='Auswahlmenü' description=null option array=$Menue
if $Menue == 2
|$Sektor = [THIS] -> get user input: type=Var/Sector, title=$Sektorauswahl
|if [THIS] -> get amount of ware Spezialsoftware Mk1 in cargo bay
||if [THIS] -> get amount of ware Transporter in cargo bay
|||if [THIS] -> get amount of ware Mineralien Kollektor in cargo bay
||||if [THIS] -> get amount of ware Mineralienscanner in cargo bay
@ |||||= [THIS] -> call script '!move.movetosector' : sector=$Sektor
|||||$Scannerreichweite = [THIS] -> get scanner range
|||||
nochmal:
|||||$gefundeneDebris = find debris: sector=$Sektor resource=null min yield=null flags=[Find.Nearest] refobj=[THIS] num=null max distance=$Scannerreichweite refpos=null
|||||
|||||$kannEingesammeltWerden = $gefundeneDebris -> has collectible rocks
|||||
|||||$PosX = $kannEingesammeltWerden -> get x position
|||||$PosY = $kannEingesammeltWerden -> get y position
|||||$PosZ = $kannEingesammeltWerden -> get z position
|||||
@ |||||= [THIS] -> call script '!move.movetoposition' : sector=$Sektor position x=$PosX position y=$PosY position z=$PosZ precision=2500
|||||
|||||$Beamdistanz = 2500
|||||
|||||$Rock = find debris: sector=$Sektor resource=null min yield=null flags=[Find.Nearest] refobj=[THIS] num=null max distance=$Beamdistanz refpos=null
|||||
|||||$kannEingesammeltWerden = $Rock -> has collectible rocks
|||||
|||||$ErzTyp = $kannEingesammeltWerden -> get resource waretype of asteroid
|||||$ErzTypGroesse = get volume of ware $ErzTyp
|||||$Anzahl = $kannEingesammeltWerden -> get asteroid yield
|||||
|||||$benoetigterPlatz = $Anzahl * $ErzTypGroesse
|||||if [THIS] -> can transport ware $ErzTyp
||||||$freierLaderaum = [THIS] -> get free volume of cargo bay
||||||if $freierLaderaum >= $benoetigterPlatz
|||||||= [THIS] -> add $Anzahl units of $ErzTyp
|||||||$kannEingesammeltWerden ->destruct: show no explosion=[TRUE]
|||||||if $freierLaderaum < $benoetigterPlatz
@ ||||||||= [THIS] -> call script '!move.returntohomebase' :
|||||||end
||||||end
|||||end
||||end
|||end
||end
|end
end
@ = wait 1000 ms
goto label nochmal
return null
Wer sich genötigt fühlt die zwei drei Codezeilen direkt ins Script zu schreiben, tut euch keinen Zwang an
www.BodenseeJugend.de/sonstiges/X3TC-AP/a1.zip