Frage an erfahrene Scripter: Schiffe vor Selbstzerstörungsbefehl schützen?

Hier ist der ideale Ort um über Scripts und Mods für X³: Reunion zu diskutieren.

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

Post Reply
Tilt[KBG]
Posts: 241
Joined: Sat, 22. May 04, 17:29
x2

Frage an erfahrene Scripter: Schiffe vor Selbstzerstörungsbefehl schützen?

Post by Tilt[KBG] » Sun, 18. Mar 18, 15:19

Hi all.

Manchmal verirrt man sich nochmal hierher.

Ich habe vor vielen Jahren ein Script begonnen (eine aus der Kontrolle geratene Idee :P ) und bin mal wieder dran, es weiter zu bauen. Und nun stolpere ich über ein merkwürdiges Problem.

Vorweg:
Ich habe 2.5 sowie das Bonuspack drauf.

Ich will, das bei mir ein paar Sonderrassen, also die "Race2" und "Race3", mit ein paar Schiffen ein "paar Missionen" durchführen. Nichts Besonderes, sondern etwa nur, dass sie einfach von Station A nach B fliegen.
Sie fliegen ganz normal los und seltsamerweise, ganz plötzlich, explodieren sie einfach. Kein Beschuss, keine Kollision oder sonst irgendwie erkennbarer äußerer Einfluss.
Es sei denn, ich spinne jetzt mal, dass die anderen Scripte ( auch die Signierten ?!) auch auf diesen Rassen arbeiten und etwaige Kontrollfunktionen oder Sicherheitsroutinen meinen Schiffen einen Selbstzerstörungsbefehl geben, weil sie nicht ins Konzept passen. Kann das sein? Weiß hier jemand einen Rat?
Insbesondere möchte ich gerne wissen, ob ich solche Befehle abfangen kann? Wie ist das denn mit Signalen? Kann man da etwas bauen wie "ignore signal killed" oder etwas in dieser Art?

Bin für jede Unterstützung dankbar.

Gruß

Tilt

User avatar
X2-Illuminatus
Moderator (Deutsch)
Moderator (Deutsch)
Posts: 24949
Joined: Sun, 2. Apr 06, 16:38
x4

Post by X2-Illuminatus » Sun, 18. Mar 18, 16:40

Versuch mal nach Erstellung des Schiffes die "race logic" auf false zu setzen. (Der passende Befehl sollte sich in den General Object Commands finden.)
Nun verfügbar! X3: Farnham's Legacy - Ein neues Kapitel für einen alten Favoriten

Die komplette X-Roman-Reihe jetzt als Kindle E-Books! (Farnhams Legende, Nopileos, X3: Yoshiko, X3: Hüter der Tore, X3: Wächter der Erde)

Neuauflage der fünf X-Romane als Taschenbuch

The official X-novels Farnham's Legend, Nopileos, X3: Yoshiko as Kindle e-books!

Tilt[KBG]
Posts: 241
Joined: Sat, 22. May 04, 17:29
x2

Post by Tilt[KBG] » Thu, 22. Mar 18, 15:37

Danke erstmal.

Konnte mir aber selber helfen, indem ich auf die Race "Neutrale" gewechselt bin. Die explodieren nicht.

Jetzt habe ich ein anderes Problem. Ich verwalte ein t-File mit entsprechenden Meldungen ans Player Logbuch. Jetzt bin ich aber an einen Punkt gekommen, wo das Log nicht richtig bespielt wird. Er meldet ReadText0-5. Aber das Element existiert definitv im t-File. Was kann es für Ursachen geben, dass das Element nicht angezeigt wird?
Ausser den offensichtlichen Fehlern wie
--> vergessen t-File zu laden
--> t-Element existiert nicht im t-File (PageId und/oder ZeilenID fehlen)

Gruß

Tilt

UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader » Thu, 22. Mar 18, 19:18

du hast die Page ID nicht richtig angegeben denke ich. Code bitte, ich mag es nicht ins blaue zu raten...
if not stated otherwise everything i post is licensed under WTFPL

Ich mache keine S&M-Auftragsarbeiten, aber wenn es fragen gibt wie man etwas umsetzen kann helfe ich gerne weiter ;)

I wont do Script&Mod Request work, but if there are questions how to do something i will GLaDly help ;)

Tilt[KBG]
Posts: 241
Joined: Sat, 22. May 04, 17:29
x2

Post by Tilt[KBG] » Thu, 22. Mar 18, 19:46

Hallo,

Da hast Du recht.

Ich hoffe Du wirst daraus schlau. Der Code ist noch in der Entwicklung. Ferner ist das ein Auszug aus dem größeren Script.
Mein t-File hat die ID 497512.
Der hier abgebildete Code legt einige Variablen fest und schreibt im Debug-Modus (Was ich hier über Debug-Variablen regle) Meldungen ins PlayerLogBuch.

Der entscheidende Punkt ist dort, wo ich ein Subscript aufrufe, dass im fehlerfreien Fall einen Array zurück gibt. Bei Fehlern kommt zum Beispiel der Wert 0. Wenn das passiert, soll eine formatierte Meldung aus dem t-File im Log erscheinen. Tut es aber nicht.

Ich möchte noch erwähnen, dass alle meine anderen Teilsripte korrekt arbeiten.

Danke für Deine Hilfe. Es lebe das 4-Augen Prinzip

Gruß

Tilt

Code: Select all

003   $TextFileID = 7512
004   load text: id=$TextFileID
005   $PageId = 3000
006   $TextID = 5
007   
008   * --- Constants
009   * --- Bei Agents Auswahl = 1 (Minimum) braucht es dennoch 4 bei Tech
010   $BaseCostAgentsForTech = 3

014   * --- Debugs
015   $DebugGlobalVars = [FALSE]
016   $DebugGetTargetStation = [TRUE]
017   $DebugArrayFromChance = [FALSE]
018   $DebugRefDockShipList = [TRUE]
019   *$ColorForSpyAttack = 'Blue'
020   * --- Debugs Ende
021   if $DebugGlobalVars
022    write to player logbook $CostInPercentForActivatingBlue
023    write to player logbook $CostInPercentForSuccessBlue
024    write to player logbook $CostBaseForBlue
025   end
026   * --- 
027   $MeldeID = get script name
028   write to player logbook: printf: pageid=$PageID textid=$TextID, $MeldeID, null, null, null, null
029   * ---
030   * --- Wir gehen davon aus, das ein Refdock existiert (Keine GlobVar dazu)
031   * ---
032   $GVNameString = 'SpyCenterDockExist'
033   $Param1 = get global variable: name=$GVNameString
034   $SpyCenterDockExist = $Param1
035   if $DebugGlobalVars
036    write to player logbook $GVNameString
037   end
038   skip if $SpyCenterDockExist
039    goto label SkriptStartBroken
040   * ---
041   

044   
045   
046   * --- Entnehme Kristall und Agents aus SpyDock, falls zu wenig, Ende
047   $AgentsInSpyDockCount = $SpyDock -> get amount of ware Militärisches Personal in cargo bay
048   * --- Fisch: Player hat Einsatzanzahl der Agenten gewählt
049   $PlayerChosenStrength = $RefDock -> get amount of ware Fisch in cargo bay
050   $ChosenCostAgentsForTech = $BaseCostAgentsForTech * $PlayerChosenStrength
051   if $AgentsInSpyDockCount < $ChosenCostAgentsForTech
052   * --- Anzahl Agenten zu klein. Sollte nicht sein, aber kehre dann zurück
053   *goto label ScriptEndNotEnoughAgents
054   end
055   * ---
056   $SubtractAgentsFromSpyDock = $ChosenCostAgentsForTech * -1
057   * --- Die Werte der Agents auf SpyShip kommen aus ChanceBlue Script 
058   *$Dummy = $SpyShip -> add $ChosenCostAgentsForTech units of Militärisches Personal
059   $Dummy = $SpyDock -> add $SubtractAgentsFromSpyDock units of Militärisches Personal
060   * --- Blauen Kristall haben wir schon an Bord des SpyShips
061   $CountBlueCrystalsSpyDock = $SpyDock -> get amount of ware Blauer Kristall in cargo bay
062   $CountBlueCrystalsSpyDock = $CountBlueCrystalsSpyDock * -1
063   $Dummy = $SpyDock -> add $CountBlueCrystalsSpyDock units of Blauer Kristall
064   
065   
066   * --- Agent.Capacity GV herabsetzen
067   
068   
069   * --- Zur Kontrolle
070   * --- Die Werte der Agents auf RefShip kommen aus ChanceBlue Script 
071   *$Dummy = $RefShip -> add $ChosenCostAgentsForTech units of Militärisches Personal
072   
073   
074   
075   * --- Bestimme Angriffsziel

077 @ $TargetStationInfoArray = $SpyShip -> call script 'aa0.SpaceAgents.ship.ChanceBlue' :  Das Referenz Dock=$RefDock  Das aktive Spy Center=$SpyDock  Das ReferenzShip Partner zum Spy=$RefShip  Das aktive Spy Ship=$SpyShip  Start Kosten für blaue Attacke=$CostInPercentForActivatingBlue  Provisionskosten Pro Agent=$CostInPercentForSuccessBlue  Berechnungsbasis blaue Kosten=$CostBaseForBlue
078   * ---
079   
080   
081   if $TargetStationInfoArray == null
082    $Param2 = 'SpaceAgenten.Ship.ChanceBlue'
083    $PageId = 3000
084    $TextID = 4
085    write to player logbook: printf: pageid=$PageID textid=$TextID, $MeldeID, $Param2, null, null, null
086    goto label EndOfScript
087   end
088   if $TargetStationInfoArray == 0
089    $Param2 = 'SpaceAgenten.Ship.ChanceBlue'
090    $PageId = 4000
091    $TextID = 5
092    
093    write to player logbook '--- Wir sind hier bei Return 0 ---'
094    write to player logbook $PageId
095    write to player logbook $TextID
096    write to player logbook $TextFileID
097    write to player logbook $MeldeID
098    write to player logbook $Param2
099    
100    write to player logbook: printf: pageid=$PageID textid=$TextID, $MeldeID, null, null, null, null
101    goto label EndOfScript
102   end
103   $DataType =  datatyp[ $TargetStationInfoArray ]
104   if $DataType == DATATYP_ARRAY
105    
106    goto label NextCorrectScriptStep2
107    
108   end

Post Reply

Return to “X³: Reunion - Scripts und Modding”