DockAndWait Order wird nach erfolgreichem Andocken abgebrochen

Hier ist der ideale Ort um über Scripts und Mods für X4: Foundations zu diskutieren.

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

staeuber
Posts: 33
Joined: Tue, 8. Feb 05, 00:36
x4

DockAndWait Order wird nach erfolgreichem Andocken abgebrochen

Post by staeuber »

Liebe Community, ich hoffe jemand kann mir bei diesem Problem helfen!

Problem Zusammenfassung

Ich habe ein hartnäckiges Problem mit custom AI Scripts, bei dem Schiffe erfolgreich andocken, aber sofort wieder abdocken, weil die DockAndWait Order vorzeitig abgebrochen wird. Das erzeugt eine Endlos-Andock/Abdock-Schleife, die ich trotz exakter Befolgung der Vanilla X4 Muster nicht lösen kann.

🔬 KOMPLETTER TESTFALL VERFÜGBAR

Ich habe eine minimale Test-Mod erstellt, die dieses Problem zu 100% reproduziert. Der komplette Testfall kann heruntergeladen werden - einfach in den X4 extensions Ordner entpacken und das gleiche Verhalten beobachten.

Test Mod Inhalt:
order.test.dosomething.xml - Master Order der zufällige Stationen auswählt
order.test.trainperform.xml - Training Order der das Andock/Abdock Problem zeigt
Umfassende Logging Patches - Zeigt exakt was passiert

🚫 Das Problem

Was passieren sollte:
1. Schiff erstellt DockAndWait Order
2. Schiff dockt erfolgreich an
3. TrainPerform Script setzt mit Training fort
4. Schiff bleibt während Training angedockt

Was tatsächlich passiert:
1. Schiff erstellt DockAndWait Order ✅
2. Schiff dockt erfolgreich an ✅
3. DockAndWait bestätigt "waiting" Status ✅
4. Schiff dockt sofort wieder ab ❌
5. Script braucht ~8 Sekunden um Neustart und Abdocken zu erkennen ❌
6. TrainPerform erstellt neue DockAndWait Order ❌
7. Endlosschleife ❌

📋 Aktuelle Debug Logs

Code: Select all

[Scripts] 290.40: [TEST-TRAIN] ❌ Not docked. Creating DockAndWait and waiting for completion
[Scripts] 380.23: [TEST-PATCH] DockAndWait: === DOCK SUCCESS === Now waiting for caller to complete operations...
[Scripts] 380.23: Kurier Verteidiger successfully docked at ARG Mikrochipfabrik I. waiting.

!! SCHIFF DOCKT SOFORT AB !!

[Scripts] 388.44: [TEST-TRAIN] === TRAINING START === Ship: KPC-834, Destination: ARG Mikrochipfabrik I  
[Scripts] 388.44: [TEST-TRAIN] ❌ Not docked. Creating DockAndWait...
Die DockAndWait Order ist erfolgreich und bestätigt den "waiting" Status, aber das Schiff dockt sofort ab. Das Script braucht dann ~8 Sekunden um neu zu starten und zu erkennen dass das Schiff nicht mehr angedockt ist, wodurch eine neue DockAndWait Order erstellt wird und der Zyklus sich wiederholt.

🔍 Aktuelle Implementierung

TrainPerform Order (Vereinfacht):

Code: Select all

<!-- Check if already docked -->
<do_if value="(this.ship.dock and (this.ship.dock.container == $destination)) or 
              (this.ship.parkedat and ((this.ship.parkedat == $destination) or 
               this.ship.parkedat.hascontext.{$destination}))">
  <debug_text text="Already docked - proceeding to training"/>
  <resume label="perform_training"/>
</do_if>

<!-- NOT DOCKED: Create DockAndWait -->
<do_if value="not $cannotdock">
  <debug_text text="Not docked. Creating DockAndWait and waiting for completion"/>
  <create_order id="'DockAndWait'" object="this.ship" immediate="true">
    <param name="destination" value="$destination"/>
    <param name="timeout" value="0s"/>
    <param name="waittime" value="60min"/>
    <param name="callerid" value="this.assignedcontrolled.order"/>
    <param name="internalorder" value="true"/>
  </create_order>
  <wait exact="1ms"/>
  <resume label="perform_training"/>
</do_if>

<label name="perform_training"/>
<!-- Training logic here -->
🔎 Was wir versucht haben

✅ Muster Variationen:
• Exaktes Vanilla order.trade.perform.xml Muster mit <return/>
• Repair Order Muster mit <wait exact="1ms"/>
• Sowohl immediate="true" als auch ohne immediate Flag

✅ Parameter Kombinationen:
timeout="null" (unendliches Warten)
timeout="0s" (kein Timeout)
waittime="60min" (explizite Wartezeit)
• Mit/ohne callerid Parameter
• Mit/ohne undockhandler Parameter

✅ Order Management:
• Ordnungsgemäße Subordinate Order Bereinigung
• Critical Order State Management
• Signal-basierte Completion Handling

❓ Wichtige Fragen an die Community

1. Was könnte dazu führen, dass eine DockAndWait Order sofort nach erfolgreichem Andocken abgebrochen wird?

Das Schiff dockt an, DockAndWait meldet "waiting" Status, aber dockt dann sofort ab. Welcher Mechanismus könnte das verursachen?

2. Gibt es versteckte Anforderungen für DockAndWait Orders die von Custom Scripts erstellt werden?

Vanilla Orders wie TradePerform nutzen DockAndWait erfolgreich. Gibt es Unterschiede wie Custom Scripts diese Orders erstellen sollten?

3. Könnte es Interferenzen zwischen der Parent TrainPerform Order und der DockAndWait Sub-Order geben?

Gibt es einen ordnungsgemäßen Weg um zwischen einem Parent AI Script und seinen DockAndWait Sub-Orders zu koordinieren?

4. Was ist das korrekte Muster für "andocken und warten bis Script fortsetzt" Verhalten?

Sollten Custom Scripts <return/> (wie TradePerform) oder <wait> (wie Repair) nach dem Erstellen von DockAndWait verwenden?

🎯 Reproduzierbarer Testfall

📥 TEST MOD DOWNLOAD: Test Scripts (OneDrive)

Der Download enthält eine komplette Test Mod die dieses Problem reproduziert:

Zum Testen:
1. Download und Entpackung nach X4/extensions/
2. Beliebigen Spielstand laden
3. "DoSomething" Order einem kleinen Schiff zuweisen
4. Debug Log für Andock/Abdock Schleife beobachten

Erwartetes Verhalten: Schiff dockt an und bleibt für Training angedockt
Tatsächliches Verhalten: Schiff dockt an, dockt sofort ab, Endlosschleife

🖥️ System Information
X4 Version: 7.60
Andere Mods: Keine (nur Vanilla + Test Mod)
Script Typ: AI Script (aiscripts/), nicht MD Script

💡 Community Input benötigt

Dieses Problem besteht trotz mehrerer Implementierungsversuche hartnäckig. Jede Einsicht zu:
• X4's Order Lifecycle Management
• Ordnungsgemäße DockAndWait Verwendungsmuster
• Debugging Ansätze für Order Cancellation
• Alternative Muster für Dock-and-Continue Verhalten

Wäre unglaublich hilfreich! Der komplette Testfall sollte es einfach machen das Problem zu reproduzieren und zu untersuchen.

Vielen Dank im Voraus für jede Hilfe! 🚀
keine
staeuber
Posts: 33
Joined: Tue, 8. Feb 05, 00:36
x4

Re: DockAndWait Order wird nach erfolgreichem Andocken abgebrochen

Post by staeuber »

keine

Return to “X4: Foundations - Scripts und Modding”