Ich zwar habe ich da ein Problem mit einem selbst erstellen Pirat-Kaperscript.
Ich zwar soll das Piratenschiff erstmal überprüfen ob das zu kapernde schiff auch Lohnenswert ist(primar TS und Fighter),
nicht zu stark oder auch komplett zum kapern ungeeignet(Stationen/Asteroiden). Und dann natürlich das Schiff kapern /zugehörigkeit
wechseln.
Ich habe in der Abfrage zunächt den Objekt-Typ 'Big Ship' als nicht kaperbar gekennzeichnet. Das hatte aber merkwürdiger-
weise nicht funktioniert, obwohl Big Ship die Wurzelklasse von den Grosschiffen ist(M6,TL,M2,M1). Nun habe ich es eben so
versucht. Was auch momentan auch zu klappen scheint.
Das ist aber nicht das Hauptproblem.
Und zwar sollen die gekaperten Schiffe abhängig von ihrer Klasse dem Angreifer/Kaperer in einer Formation eskortieren(Fighter)
oder zur Heimatbasis zurückkehren(nächste Piratenbasis,Nur TS Frachter).
Die Frachter fliegen zwar zum Sprungtor aber sie bleiben manchmal 'reglos' im Raum stehen.
Die Fighterschiffe(M5,M4,M3) bleiben auch manchmal vollkommen reglos stehen und wollen dem Kaperer NICHT eskortieren.
Wahrscheinlich wird irgendein Interrupt gestartet welcher die Funktion objekt-> escort ship <LeaderShip> unterbricht.
Wegem dem eskortieren habe ich folgenden Code im init-script ,am Piratenschiff,verwendet.
Code: Select all
030 $pship -> give formation leadership to $pship
031 $pship -> set formation [Formation.X]
ansehe, merke ich das nur Mein Task(Hauptscript) läuft nachdem es auf den gekaperten Schiffen ausgeführt/übertragen wurde.
Seht dazu einfach mal die letzten Zeile dieses Codestücks an.
Dann habe ich die 'Übertragung' meines Tasks auf die gekaperten SChiffe gestoppt, und die gekaperten Schiffe bleiben
trotzdem manchmal im all reglos stehen!! Nur steht dieses mal unter den Schiffsinfos das der Haupttask mit seinen Prozessen/Scripts
läuft(dann wäre doch alles in Ordnung). Das ist doch merkwürdig?!
* * * * *
Ich beschreibe mal wie meine Scripte ablaufen und welches das andere aufrüft.
Das Hauptscript mit der Endlosschleife ist plugin.gandharzero.pirates.think. Von da werde alle externen scripte geladen
auch dieses untere.
Das Hauptscript wird auf dem Objekt welches ein Piratenschiff ist ausgeführt unter dem Task 101(Prio:0). Unter Task 0 konnte ich es nicht
zum laufen bringen weil die 'Startaction' des Objekts(Finde/eleminiere Feinde) es immer überschreibt.
Wie gesagt wird unteres Script vom plugin.gandharzero.pirates.think script ausgeführt. Hier die Stelle wo es passiert.
Code: Select all
038 * try to capture the attacked target
039 $thetarget = $ship -> get attack target
040 $cchance = random value from 0 to 99 - 1
041 if $cchance >= 85 AND $thetarget != null
042 @ = $ship -> call script 'plugin.gandharzero.pirates.cptr' : arg1=$thetarget arg2=$ship
043 end
1)Warum bleiben die gekapertern schiffe manchmal reglos im Raum stehen
2)Weshalb wieso wird der Klassentyp Big Ship als 'Filterkriterium' nicht erkannt. Daher kapern die Piri-Schiffchen auch Korvetten
TL's obwohl sie es nach dem Obigen Big Ship-Klassentyp(als Auswahlfilter, !=Big Ship = alle Dickschiffe nicht kapern!) nicht dürften.
3)Warum eskortieren die gekaperten schiffe(nur Fighter sollen das) den 'Kaperer/Angreifer' nicht?
Und hier der Problemcode:
Code: Select all
001 $shiptype = $target -> get object class
002 $dist = get distance between $target and $attaker
003 $distcapt = random value from 340 to 1450 - 1
004 $sector = $target -> get sector
005
006 if $target != [PLAYERSHIP] AND $dist <= $distcapt AND $shiptype != Cruiser M6 AND $shiptype != Large Transport TL AND $shiptype != Destroyer M2 AND $shiptype != Battle Ship M1
007
008 $attkr = $target -> get attacker
009 if $attkr
010 $target -> set owner race to Piraten
011 $attkrname = $attaker -> get pilot name
012 $target -> set pilot name to $attkrname
013 $homestation = find station in galaxy: startsector=$sector class or type=Piraten Basis race=null flags=[Find.Nearest] refobj=null serial=null max.jumps=25
014 $target -> set homebase to $homestation
015
016 if $shiptype == Fighter
017 $target -> add to formation with leader $attaker
018 @ = $target -> escort ship $attaker
019 else if $shiptype == Small Transport TS
020 $target -> set destination to $homestation
021 @ = $target -> fly to home base
022 end
023 * the captured ship inherits all parents functions
024 *$target -> start task 101 with script plugin.gandharzero.pirates.think and prio 0: arg1=$target arg2=null arg3=null arg4=null arg5=null
025 *$cptrstr = sprintf: fmt='Gekapertes Schiff %s. Schiffstyp %s. Angreifer %s.', $target, $shiptype, $attkr, null, null
026 *write to player logbook $cptrstr
027 end
028 end
029
030 return null