Warning: ob_start(): function 'compress_handler' not found or invalid function name in /www/htdocs/xfmantis/core.php on line 18
0001623: mzUFO wird mit UFO.escape nicht sofort beendet - Mantis
Mantis - X-Skript
Viewing Issue Advanced Details
1623 Allgemein major always 31.07.07 15:45 03.09.07 03:06
Natter  
Jim_Raynor  
normal  
closed V0.910 - Beta 4  
fixed  
none    
none V0.910 - Final  
0001623: mzUFO wird mit UFO.escape nicht sofort beendet
Wenn das letzte registrierte UFO mit UFO.escape entkommt, dann ird die Mission nicht sofort beendet (getestet durch anschließende Ausgabe von Nachrichtenfenstern).

Dies ist eventuell auch die Ursache dafür, dass der aktuelle Spielsatz DarkAge abstürzt, sobald das UFO mit geskripteter KI verschwindet (event_UFOCommandComplete eird nochmal ausgelöst?).
 error-31-07-2007-14-24.txt [^] (3,095 bytes) 31.07.07 15:46
 CommandTest.xms [^] (1,658 bytes) 01.08.07 00:40
 UKI000Forschuhgsschiff.xms [^] (5,123 bytes) 01.08.07 01:16

Notes
(0002586)
Jim_Raynor   
31.07.07 15:54   
Häng mal bitte noch dein Testskript an, dann ist es für mich leichter zum testen ;)
(0002587)
Natter   
31.07.07 16:26   
Du brauchst mehrere Skripte - hab sie dir alle in die UKI.zip gepackt. Ist nicht mehr der Orginalzustand, aber Fehler tritt noch auf.

Ansonsten kannst du dir auch DarkAge aus dem Forum (Spielsatzintern) downloaden - dort müsstest du nur die Zeile UFO.UserKI:=true; ergänzen

(0002588)
DirkF   
31.07.07 20:49   
Man sollte sich vielleicht mal genau angucken, wann das Event "CommandComplete" ausgelöst wird und wann nicht - schließlich ging dieses Event früher ja auch öfter verloren, und jetzt scheint es auch bei UFO.Escape auszulösen obwohl das keinen Sinn ergibt...
(0002589)
Jim_Raynor   
31.07.07 22:19   
siehe Rückmeldung in http://www.xforce-online.de/forum/index.php?action=vthread&forum=13&topic=1571&page=-1#4 [^]

Es wird kein CommandComplete mehr nach dem Escape aufgerufen ...
(0002590)
Jim_Raynor   
01.08.07 00:40   
So, ich kann es nicht nachvollziehen. Habe jetzt mal ein kleineres Testskript geschrieben und da gibt es keine probleme. Allerdings muss ich auch ehrlich sagen, dass ich garnicht so richtig weiß, wo denn eigentlich das Problem ist. Fakt ist:

- die Events werden gelöscht, wenn auch das UFO aus dem Speicher gelöscht wird
- bei Escape, wird kein CommandComplete ausgelöst. Es macht nichts weiter als Nachricht "entkommen" zu senden und dann das UFO-Objekt zu zerstören.
- Wenn das letzte UFO mit Escape "zerstört" wird, läuft das Skript erstmal weiter, da die Prüfung ob alle UFOs weg sind, erst später passiert. Sofort beendet wird ein Skript nur mit mission_win, mission_loose oder mission_abort.

Mit den Testskript da, konnte ich auch nichts so richtig anfangen, da da noch einiges fehlt (zum Beispiel die Globale Variable). Ich bitte also um ein allein-Ablauffähiges skript (kann auch eine angepasste Version von meinem sein), bei dem es zu dem Problem kommt.
(0002591)
Natter   
01.08.07 01:17   
Mit obigen Skript sollte es aber funktionieren.
(0002593)
Jim_Raynor   
01.08.07 10:00   
Na dann bin ich mal gespannt. Lässt sich der Fehler auch im Skript-Editor nachvollziehen oder nur im Spiel?

Vielleicht hat es sich aber wirklich auch mit 0001612 und kann das deshalb nicht reproduzieren ... Naja mal schauen.
(0002594)
Natter   
01.08.07 16:22   
Nur im Spiel. In medit klappt alles.
(0002596)
Jim_Raynor   
01.08.07 22:47   
Gut, ich habe was gefunden, und das was ich gefunden habe gefällt mir nicht so richtig. Das Problem ist, dass Escape aus CommandComplete heraus aufgerufen wird ... und kann es passieren, dass noch einiges mit dem UFO gemacht wird ... Einzigster Workaround ist, einen Timer von einer Minute zu registrieren und dann dort das UFO flüchten zu lassen. In der Version 0.910 möchte ich da nichts mehr dran ändern, da es doch neue Probleme nachsichziehen kann. Zu dem brauche ich erstmal eine richtige Idee, wie ich das Problem elegant lösen kann ...
(0002597)
DirkF   
01.08.07 23:05   
Wie wäre es, wenn UFO.Escape zwar alle betreffenden Funktionen und ereignisse aufruft, aber statt dem Löschen des Objektes nur ein internes Flag "zu löschen" setzt. Und am Anfang der nächsten Rundenbearbeitung (bevor irgendwelche Skripte gestartet werdne können) werden alle UFOs mit diesem Flag gelöscht.

Eventuell zusätzlich zum Flag das UFO noch auf hidden/keine Ereignisse umschalten (siehe die entsprechenden Mantistickets)
(0002599)
Jim_Raynor   
02.08.07 10:05   
Ja, ich denke so werde ich es machen. Aber ich bin mir unsicher, ob ich es noch in die Version 0.910 aufnehme oder nicht ... Wer weiß, was für Seiteneffekte das wieder auslöst.
(0002600)
DirkF   
02.08.07 10:30   
Gerade wegen der unbekannten Seiteneffekte meinte ich ja das man das UFO dann zusätzlich vom Geoscape wegnehmen sollte - und diese Funktion ist meines Wissens nach sowieso erst für später geplant, kann man ja beides in der 0.915 umsetzen.
(0002604)
Jim_Raynor   
02.08.07 21:16   
Ich habe es jetzt doch in die Version 0.910 aufgenommen. Schlimmere Seiteneffekte als jetzt können nicht auftreten ;)