"hängt" manchmal. Es ist kein "richtiger" Lockup wie in einem Loop ohne Wait.
Der Befehl sollte nach 400 ms (in diesem Beispiel) per timeout zurückkehren aber das tut er nicht immer.
In Logs hat dieser Befehl meist richtig funktioniert, in einigen Fällen hat der Timeout aber sehr sehr spät gegriffen und diese eine Zeile wurde 16 Sekunden, einmal sogar 43 Sekunden lang ausgeführt.
In dieser Zeit ist das Turret Script natürlich eingefroren.
Da alle Turret scripts diesen Befehl verwenden (sollten) betrifft das sämtliche Turret Scripts in X3:TC.
Bei Verwendung der ES-Scripts tritt der Effekt genauso auf also liegt es definitiv nicht an meiner schlampigen Programmierung.
Ich jage diesen Bug schon länger. Deshalb auch die Debug infos genau um diese eine Zeile. =)
Hier der Ausschnitt aus dem Turret script.
Es zeichnet die Zeit in Sekunden auf, die das Script mit genau diesem Befehl zubringt.
Code: Select all
941 |$Time = playing time
942 |$Dummy1 = $Time - $Time.Start.Turn
943 |write to log file #$PageID append=[TRUE] printf: fmt=' T %s: Start turning to %s %s at %s sec turn timer.', $TurretID, $Target.ID, $Best.Target, $Dummy1, null
944 |
945 @ |$Fire = [THIS] -> turn turret $TurretID to target $Best.Target : timeout=400 ms
946 |
947 |$Time = playing time
948 |$Dummy1 = $Time - $Time.Start.Turn
950 |write to log file #$PageID append=[TRUE] printf: fmt=' T %s: End turning to %s, %s at %s sec turn timer. Fire free = %s', $TurretID, $Target.ID, $Best.Target, $Dummy1, $Fire