Raumfliegen per Script/Mod entfernen

Hier ist der ideale Ort um über Scripts und Mods für X³: Terran Conflict und X³: Albion Prelude zu diskutieren.

Moderators: Moderatoren für Deutsches X-Forum, Scripting / Modding Moderators

User avatar
ubuntufreakdragon
Posts: 3971
Joined: Thu, 23. Jun 11, 14:57

Post by ubuntufreakdragon » Sun, 21. Jan 18, 14:33

|K.O.S.H. wrote:Du meinst, es kann vorkommen, dass ein Script noch läuft, ohne, dass das Objekt noch existiert?
Nein, wenn ein Objekt zerstört wird werden alle Scripte darauf beendet, aber
Du meinst, es kann vorkommen, dass ein Script noch läuft, ohne, dass das Objekt existiert?
das könnte sehr wohl der Fall sein, wenn das script durch ein anderes per Start auf z.b. $spacefly ausgeführt wird $spacefly aber (mittlerweile) leer ist
My X3 Mods

XRebirth, things left to patch:
In General; On Firing NPC's; In De Vries; Out Of Zone; And the Antiwishlist

|K.O.S.H.
Posts: 3187
Joined: Fri, 19. Dec 03, 11:36

Post by |K.O.S.H. » Sun, 21. Jan 18, 14:43

wäre $spacefly dann nicht null und das Script würde in den global Script Tasks erscheinen?
Wing Commander Mod - German Topic
06.07.11 - v1.1 RELEASED!

User avatar
ubuntufreakdragon
Posts: 3971
Joined: Thu, 23. Jun 11, 14:57

Post by ubuntufreakdragon » Sun, 21. Jan 18, 14:46

|K.O.S.H. wrote:wäre $spacefly dann nicht null und das Script würde in den global Script Tasks erscheinen?
ja, könntest du das mal checken?
Ansonsten könnte es noch auf einer station oder was anderem laufen.
Wir könnten es auch rückwärs versuchen und das spacefly script so umschreiben,(vorausgesetzt diese änderungen werden iwie übernommen z.b. durch neue buginstanzen), das es alle ausführenden Objekte in ein globales array einträgt.
My X3 Mods

XRebirth, things left to patch:
In General; On Firing NPC's; In De Vries; Out Of Zone; And the Antiwishlist

|K.O.S.H.
Posts: 3187
Joined: Fri, 19. Dec 03, 11:36

Post by |K.O.S.H. » Sun, 21. Jan 18, 15:18

hab schon das Script geändert, dass es sich beendet, alles schön mit Ausrufezeichen und als pck, damit die Datei auch definitiv höchste Prio hat.

Hat auch bei neuen Raumfliegen funktioniert bei den laufenden Scripts jedoch nicht :/
Wing Commander Mod - German Topic
06.07.11 - v1.1 RELEASED!

User avatar
JSDD
Posts: 836
Joined: Fri, 21. Mar 14, 21:51

Post by JSDD » Sun, 21. Jan 18, 15:38

... testweise einfach mal n debug einbauen, von wegen:

Code: Select all

$debug = [TRUE] ...
if $debug
$script.name = get script name
$text = sprint fmt: '... %s runs on instance of %s ...', [THIS], $script.name, null, null, null
write to logfile 12345 append=[TRUE] $text, ...
end
sodass außerhalb des games (& nicht im in-game-logbuch) dir ne logfile erstellt wird, inder drin steht, welches objekt das script startet ... evtl noch [SECTOR] usw ausgeben lassen ... klar hilfts nur bei neu gestarteten script-instanzen, vllt taucht der fehler trotzdem noch auf & lässt sich entdecken (aber ehrlich gesagt hätt ich den [newGame] button geklickt ^^)
To err is human. To really foul things up you need a computer.
Irren ist menschlich. Aber wenn man richtig Fehler machen will, braucht man einen Computer.


Mission Director Beispiele

|K.O.S.H.
Posts: 3187
Joined: Fri, 19. Dec 03, 11:36

Post by |K.O.S.H. » Sun, 21. Jan 18, 20:04

SO. ich habe heute den ganzen tag damit verbracht, manuell ALLE Sektoren abzufliegen und jedes Objekt zu zerstören...

Ohne Erfolg.

Mittlerweile ist aber eingefallen, wo das Problem liegen könnte:
Wahrscheinlich wurde ein "create"_Kommando mit null aufgerufen,

macht man das als Spieler mit einem Schiff, erscheint es in der Liste, aber als Sektor "null".

Die kann man einfach wegscripten, aber die blöden Raumfliegen bekomme ich nicht mit dem Script erfasst.

Tja

Wie gesagt: neues Spiel starten ist keine Option.
Bisher ist nur der SINZA langsam.

Das Savegame hat schon 3 Rechner, 4 Betriebsysteme, 2 PKW, 2 Umzüge und vieles mehr überlebt.
Ich hänge dran.
Wing Commander Mod - German Topic
06.07.11 - v1.1 RELEASED!

|K.O.S.H.
Posts: 3187
Joined: Fri, 19. Dec 03, 11:36

Post by |K.O.S.H. » Tue, 23. Jan 18, 08:25

Folgendes habe ich noch erfolglos probiert:

- Object Class der RF in der tShips auf M5 ändern
- ID der RF in der tSHips ändenr (gab nicht mal einen Crash...)
- find ship so benutzen, dass es einen M5 bei mit im Sektor findet. Auf Raumfliegen umstellen und ein paar freilassen -> die RF wurden NICHT gefunden, mit demselben Code

Da hat Egosoft mal wieder gezaubert.

Die beidne Scrippte ship.cmd.follow.spacefly und ship.cmd.idle.spacefly enthalten beide eine Entlosschleife ohne Abbruchmöglichkeit.
D.H. sobald irgendwas "außen" schief geht, die RF also nicht wie vorgesehen entfernt werden, wenn man den Sektor verlässt, hat man keine Möglichkeit sie zu beenden...

Da könnte ich mich schon wieder aufregen... Von Egosoft ist natürlich auch keine Hilfe zu erwarten...


Heute werde ich beide Scripte noch so modifizieren, dass sie in der Schleife mein Check-Script aufrufen und sich extern beenden lassen, wenn ich das wünsche. Das gilt natürlich nur für alle neu erstellten Sripte.

Außerdem habe ich den Verdacht, dass es eventuell mit dem unfokussiertem Sprungantrieb zusammenhängt. Dass dort beim Verlassen des Sektors erst der Sektor gelöscht wird und die Objekt liegen bleiben.
Ist natürlich nur ne Theorie, heute Abend weiß ich mehr.

Bin echt genervt...
Wing Commander Mod - German Topic
06.07.11 - v1.1 RELEASED!

|K.O.S.H.
Posts: 3187
Joined: Fri, 19. Dec 03, 11:36

Post by |K.O.S.H. » Sun, 28. Jan 18, 10:31

Ich habe noch ein Script gefunden, dass massenhaft (1184x)läuft und nich beendet wird: anarkis.pirate.sig.pb.attacked

Das kommt wohl von der Piratengilde...

Kann mir denn niemand helfen?

Randnotiz: Hab den UNFUG getestet:
Wenn man die Raumfliegenscripte sofort beendet und die Raumfliegen per Script tötet, werden in dem temporären Sektor massenhaft Sonnen generiert (tausende).
Klingt witzig, ist aber ein krasser Seiteneffekt.

Im Temporären Sektor ausgesetzte Fliegen werden korrekt beim Verlassen entfernt.
Daran liegt es also auch nicht.

Gibt es nicht eine Möglichkeit ALLE Objekte im Universum durchzugehen und zu checken, ob eines der Scripte läuft?

Edit: kann man das vlt mit dem MD machen?
Wing Commander Mod - German Topic
06.07.11 - v1.1 RELEASED!

User avatar
JSDD
Posts: 836
Joined: Fri, 21. Mar 14, 21:51

Post by JSDD » Wed, 31. Jan 18, 22:11

|K.O.S.H. wrote:Gibt es nicht eine Möglichkeit ALLE Objekte im Universum durchzugehen und zu checken, ob eines der Scripte läuft?

Code: Select all

maintype = 0
while maintype < 16

subtype = get number of subtypes for maintype
while subtype > 0
dec= subtype 

type = get ware from maintype: maintype subtype: subtype
array.objects = find objects ... irgendwie über den type
for each object in array.objects ... destroy it

emd

inc= maintype
end
so irgendwie hätt ichs versucht ... oder n array mit allen classen erstellen, dann für jede klasse n array von objekten erstellen, dann für jedes objekt den check durchführen ..
To err is human. To really foul things up you need a computer.
Irren ist menschlich. Aber wenn man richtig Fehler machen will, braucht man einen Computer.


Mission Director Beispiele

|K.O.S.H.
Posts: 3187
Joined: Fri, 19. Dec 03, 11:36

Post by |K.O.S.H. » Thu, 1. Feb 18, 08:47

hey. danke erstmal für die Mühe.
Leider funktioniert "find" nicht auf Raumfliegen. hab ich schon probiert.

Trotzdem vielen Dank.
Wing Commander Mod - German Topic
06.07.11 - v1.1 RELEASED!

|K.O.S.H.
Posts: 3187
Joined: Fri, 19. Dec 03, 11:36

Post by |K.O.S.H. » Tue, 13. Feb 18, 08:38

hab mir gestern ein kleines Programm geschrieben, dass alle Director-Dateien parst und mir die Cues rausgibt.

Habe dann mit dem Ergebnis 2258 Cues (potentiell)beendet (cancel_cue, destroy_cue) -> kein Erfolg :(
Wing Commander Mod - German Topic
06.07.11 - v1.1 RELEASED!

User avatar
JSDD
Posts: 836
Joined: Fri, 21. Mar 14, 21:51

Post by JSDD » Tue, 13. Feb 18, 13:54

new game! ;) was is schon dabei, vllt hat es mit bereits gefixten fehlern vorheriger game-versionen zutun, sparst dir den stress. ggf kannste dir deine properties / besitztümer & ränge "exportieren" als logfile (funktioniert ingame via "write to logfile ..."). achte auf korrekte xml-formatierung, schreib n kleines md-script welches dir diese exportierte datei lädt & deine besitztümer in nem new game wiederherstellt, samt ränge ... ich glaub sowas (exportierscript) gibts bereits, musst mal suchen ... & ggf die "plausibilitäts"-checks der properties verfeinern, sodass NIX im sektor null gespawnt wird

ps: beim new game + rang fix verdienste gleich von beginn soviel wie in deinem jetzigen game-missionen, nur plots musste afaik nochmal machen (oder gleich mit-"fix"-en)
To err is human. To really foul things up you need a computer.
Irren ist menschlich. Aber wenn man richtig Fehler machen will, braucht man einen Computer.


Mission Director Beispiele

|K.O.S.H.
Posts: 3187
Joined: Fri, 19. Dec 03, 11:36

Post by |K.O.S.H. » Tue, 13. Feb 18, 14:08

hmmpf.
also das wäre allllllllerletzte Möglichkeit.
Nach 10 Jahren gebe ich das Save ungerne auf :/

Hab mir schon das Savegame entzippt und angeguckt, aber Egosoft verwendet da ASCII-Steuerzeichen als Wert - unschön...

Ich finde es auch schade, dass sich von Egosoft niemand dazu äußert, aber was anderes erwartet habe ich nicht...
Wing Commander Mod - German Topic
06.07.11 - v1.1 RELEASED!

User avatar
JSDD
Posts: 836
Joined: Fri, 21. Mar 14, 21:51

Post by JSDD » Tue, 13. Feb 18, 14:32

|K.O.S.H. wrote:hmmpf.
also das wäre allllllllerletzte Möglichkeit.
Nach 10 Jahren gebe ich das Save ungerne auf :/
das zust du doch gar nicht, du "regenerierst" es ...

|K.O.S.H. wrote:Hab mir schon das Savegame entzippt und angeguckt, aber Egosoft verwendet da ASCII-Steuerzeichen als Wert - unschön...
missverständnis!

du schreibst ein script, welches das tut:
--> get all ships
--> for each ship ...
----> get name, location, hull, shield, etc
----> write to logfile: "<t id="123">newship</t>"
also ne "t-file" zeile, so ne readtext zeile, verstehst schon ...
ein anderes script macht dann:
--> load text: id=ebendeineexportiertedatei
--> entry_count = read text: page: xyz text=1
--> for entry_count
----> create ship: nach weiter ausgelesenen daten ...

hat nix mid der savegame-datei zutun! ;) ist nur n "merkzettel" was du für objekte besitzt, schön formatiert in ne textdatei (xml) geschoben sodass das game es wieder einlesen kann. sowas gibts afaik schon. suchen ...

https://forum.egosoft.com/viewtopic.php?t=218397

|K.O.S.H. wrote:Ich finde es auch schade, dass sich von Egosoft niemand dazu äußert, aber was anderes erwartet habe ich nicht...
vergiss nicht, wir sind hier "auf eigene gefahr" (aka modding) unterwegs 8)
To err is human. To really foul things up you need a computer.
Irren ist menschlich. Aber wenn man richtig Fehler machen will, braucht man einen Computer.


Mission Director Beispiele

|K.O.S.H.
Posts: 3187
Joined: Fri, 19. Dec 03, 11:36

Post by |K.O.S.H. » Tue, 13. Feb 18, 19:25

Nee, kein Missverständnis, wollte nur sagen, was ich sonst noch so unternommen habe ;)

Also bevor ein neues Spiel starte/übertrage, Fummelei ich am savegame rum.

Hab ja auch z.b. Viele Sektorübernahmen durch IR, die dann weg wären.
Wing Commander Mod - German Topic
06.07.11 - v1.1 RELEASED!

Post Reply

Return to “X³: Terran Conflict / Albion Prelude - Scripts und Modding”