[DISKUSSION] Allgemeine S&M-Fragen III

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
Klaus11
Posts: 859
Joined: Mon, 13. Feb 12, 17:23
x3ap

Post by Klaus11 »

Ketraar wrote:Aso, TOAs erstellt man genau wie tore, die haben die ingame subtype 4 (North), 5 (South), 6 (West) und 7 (East). Gate ID ist die selbe wie bei den anderen Toren.
Ich habe es ausprobiert. Wenn man die Werte um einen erhöht, klappt es. 5 (North), 6 (South), 7 (West) und 8 (East) :D Danke für den Tipp.
Ketraar wrote:Seitenweise Fehler? oO
Ich habe inzwischen alle fehlerhaften Torverbindungen gelöscht und durch korrekte ersetzt. Im Galaxieeditor werden auch keine fehlerhaften Torverbindungen mehr angezeigt. Die Map kann ich jetzt mit dem MapTools_V2 öffnen. Leider funktioniert die daraus erzeugte 000749.bod in Verbindung mit der Karte immer noch nicht.
Im Galaxieeditor erhalte ich noch Fehlermeldungen in Bezug auf Waren (Stationen) die in zwei Werften verkauft werden sollen. Ob sich das auch auf die 000749 auswirkt, kann ich nicht sagen.
Ketraar wrote:Wenn du Lust hast kannst ja mal die map Datei hochladen und ich guck mir diese mal an wenn du willst.
MFG
Ketraar
Das ist ein großzügiges Angebot.:lol: Ich werde dankend darauf eingehen. Ich werde beide Map's hochladen, die originale und die von mir reparierte Karte. Den Link schicke ich Dir dann per PN.

Mit freundlichen Grüßen
Klaus
[ external image ] Dif-tor heh smusma (Lebet lang und in Frieden – vulkanischer Gruß), Cockpitsammlung, Spieler HQ aktivieren, XENON-DAE
User avatar
Ketraar
EGOSOFT
EGOSOFT
Posts: 12107
Joined: Fri, 21. May 04, 17:15
x4

Post by Ketraar »

So hab mir die Karte mal angeschaut.

Die Warnung mit dem Schildkomplex ist normal, weil diese haben 2 Produkte und evtl. wirds da Probleme geben wenn der Spieler diese kaufen kann (beim Platzieren).

Was diese id="11893" bedeuten weiß ich nicht, normal hat eine map Datei keine IDs tun aber nix, kann man also getrost ignorieren.

Warum der Maptool Probleme mit der Erstellung via dieser Mapdatei (unsichtbare Sektoren ingame) konnte ich nicht begreifen, grobe Fehler konnte ich nicht sehen und lange nach Bugjagt gehen kann ich aus Zeitgründen nicht wirklich.

MFG

Ketraar
User avatar
Klaus11
Posts: 859
Joined: Mon, 13. Feb 12, 17:23
x3ap

Post by Klaus11 »

Vielen Dank für Deine Mühe mit der Karte. Vielleicht kriege ich es ja irgendwann noch hin.

Könntest Du mir verraten, wie man im IG Galaxieeditor Sektoren einfügen kann :?:
[ external image ] Dif-tor heh smusma (Lebet lang und in Frieden – vulkanischer Gruß), Cockpitsammlung, Spieler HQ aktivieren, XENON-DAE
User avatar
Ketraar
EGOSOFT
EGOSOFT
Posts: 12107
Joined: Fri, 21. May 04, 17:15
x4

Post by Ketraar »

Am selben Ort wo man alles andere erstellt (shift + numpad enter -> add sector)). Geht aber nur da wo es auch einen 00749.bod Eintrag hat.

MFG

Ketraar
User avatar
Klaus11
Posts: 859
Joined: Mon, 13. Feb 12, 17:23
x3ap

Post by Klaus11 »

Danke für die Info.
Mein Problem war, dass ich glaubte, dass der neue Sektor sofort erscheint. Habe ich aber nie hinbekommen.
Nun habe ich festgestellt, dass die Map erst exportiert werden muss, dann den Editor schließen und bei einem erneuten Laden der Map ist dann auch der neue Sektor sichtbar.

Die Sorgen-Karte werde ich neu erstellen. Die Fehlersuche ist zu aufwendig.

MFG

Klaus
[ external image ] Dif-tor heh smusma (Lebet lang und in Frieden – vulkanischer Gruß), Cockpitsammlung, Spieler HQ aktivieren, XENON-DAE
User avatar
Klaus11
Posts: 859
Joined: Mon, 13. Feb 12, 17:23
x3ap

Hangar Problem

Post by Klaus11 »

Hallo Piloten,

ich habe ein Problem mit einem Hangar für M3 – M5 Schiffe auf einem M1.

Egal, welchen Anflugwinkel ich wähle, der Leitstrahl (Lichterkette) ist in einem 45º Winkel waagerecht versetzt.:cry: Welcher falsche Wert könnte dieses Problem verursachen?

MFG
Klaus
[ external image ] Dif-tor heh smusma (Lebet lang und in Frieden – vulkanischer Gruß), Cockpitsammlung, Spieler HQ aktivieren, XENON-DAE
Cherup
Posts: 18
Joined: Thu, 26. Jul 12, 19:20

Post by Cherup »

Moin Moin in die Runde,

ich habe die eine oder andere kurze Frage zu Script-Befehlen:

1.<RetVar/IF><RefObj> get debris count
Was macht dieser Befehl?
Was gibt er zurück? Sammelbare Trümmerstücke, alle Asteroidentrümmer,...?
Was bekommt er als RefObj? Ein Schiff, ein Array, einen Sektor?

2. "find debris: ..."
Was ist (ungefähr) die maximale Anzahl,die ich setzen kann?

3.<RetVar> = sort array: data = <Value> sort values = <Value>
Gut, ein Befehl zum sortieren von Arrays :)
Aber auch hier bräuchte ich eine kurze Erklärung...
Ich denke mal das mit "data = <Value>" das zu sortierende Array gemeint ist, aber was sind die sort values? Kann ich da z.b. nach Entfernung sortieren lassen? (Glaube ich zwar nicht aber wäre schön :D )

4. Gibt es einen Befehl, um einen Landecomputer direkt zu nutzen? Oder muss ich das im Script mit "put into environment" machen?

5. Was ist der Unterschied zwischen "<RetVar/IF><RefObj> is known" und "<RetVar/IF> has <Value> been discovered"?

6. Kennt jemand eine möglichst vollständige Befehls-Referenz zu den Befehlen in TC? Ich benutze hauptsächlich die Referenz zu X2 aber gibt es vielleicht etwas entsprechendes zu X3/X3TC?


Ich wünsche noch einen schönen Samstag :)
Cherup
UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader »

1. Vermutung: Asteroidenteile/trümmer in einem Sektor (RefObj)

2. ich schätze mal es geht um die maximale anzahl die der befehl zurück geben soll - können geht da bis 2 milliarden, allerdings könnte das nen (kurzen)freeze verursachen

3. der befehl bekommt 2 Arrays - das erste ist das was sortiert wird und das 2. sind die Werte nach denen sortiert wird - wenn du objekte nach entfernung sortieren willst müsstest du im 1. Array die Objekte eintragen und im 2. Array deren entfernung hinterlegen (selbstverständlich müssen beide arrays gleich gross sein)

4. put into environment ist der landecomputer (minus checks, ob das wirklich grad möglich ist, die müssten im script gemacht werden) - ob das auch für das PLAYERSHIP klappt weiss ich allerdings nicht

5. kA

6. vielleicht nicht vollständig, aber schau mal ganz unten in der Foren-Übersicht ;)
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 ;)
Cherup
Posts: 18
Joined: Thu, 26. Jul 12, 19:20

Post by Cherup »

Danke für die schnelle Antwort :)
User avatar
Klaus11
Posts: 859
Joined: Mon, 13. Feb 12, 17:23
x3ap

Skriptanfrage

Post by Klaus11 »

Ich habe lange vergeblich nach Skriptbeispielen für meine Problemstellung gesucht. Nun hoffe ich, dass ihr mir wieder die richtigen Antworten geben könnt.

Folgende Einstellungen kann man auch auf dem Spielerschiff im Kommandoslot wählen:
Z.B.
Benachrichtigung, wenn Auftrag ausgeführt ja/nein
Autosprung ja/nein
Mitgeführte Treibstoffreserve in Sprüngen 0 ….
Frage 1: Kann man per Skript diese Einstellungen abfragen und an ein anderes Schiff übergeben?

Frage 2: Wie erfrage ich die Wing Schiffe im aktuellen Spielersektor und ihren aktuellen Befehl, um ihnen den Selben nach Schiffswechsel erteilen zu können? (per Skript)

Gruß Klaus

PS
Sollten sich meine Vorstellungen nicht realisieren lassen, dann teilt es mir bitte auch mit.
Skriptbeispiele wären sehr hilfreich. :wink:
[ external image ] Dif-tor heh smusma (Lebet lang und in Frieden – vulkanischer Gruß), Cockpitsammlung, Spieler HQ aktivieren, XENON-DAE
User avatar
X2-Illuminatus
Moderator (Deutsch)
Moderator (Deutsch)
Posts: 25129
Joined: Sun, 2. Apr 06, 16:38
x4

Post by X2-Illuminatus »

1) Die Scriptbefehle für die Erweiterte Sprungabtriebskonfiguration finden sich alle am Ende der Fly Commands. Damit kannst du die Autosprung-Eigenschaften abfragen und bei anderen Schiffen setzen.

Code: Select all

001   * Annahme: $ship1 und $ship2 enthalten jeweils ein Schiff
002   * Wenn der Autosprung auf Schiff 1 aktiviert ist, werden seine Einstellungen
003   * auf Schiff 2 übertragen.
004   if $ship1 -> is autojump activated
005   * Autosprung aktivieren
006   |$ship2 ->set autojump active: [TRUE]
007   * Mininmale Sprungreichweite in Sektoren setzen
008   |$min.jumps = $ship1 -> get autojump minimum jumps
009   |$ship2 ->autojump minimum jumps= $min.jumps
010   * Treibstoffreserve in Sprüngen
011   |$jump.resupply = $ship1 -> get jumpdrive fuel resupply
012   |$ship2 ->set jumpdrive fuel resupply: amount=$jump.resupply
013   end
014   
015   return null
Einen Befehl, die Benachrichtigen-Option abzufragen oder zu setzen, gibt es nicht.

2) Hier verstehe ich nicht so ganz, was du möchtest. Erst einmal meinst du Wingmen oder die Staffeln (Blau, Gelb, Grün usw.)? Zweitens was ist das genaue Ziel der Aktion bezogen auf den Schiffswechsel und den aktuellen Sektor? Wenn der Spieler sein Schiff wechselt, dann behalten die Schiffe in seiner Staffel und/oder seine Wingmen im Allgemeinen ihren aktuellen Befehl. Insofern verstehe ich, warum man ihnen denselben Befehl noch einmal erteilen sollte. Oder geht es hier nur um Befehle, die das aktuelle Spielerschiff als Ziel nutzen ("Beschütze mich" und dergleichen)?
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!
User avatar
Klaus11
Posts: 859
Joined: Mon, 13. Feb 12, 17:23
x3ap

Post by Klaus11 »

Hallo X2,

ich danke Dir recht herzlich. :D Diese Beispiele haben mich schon ein großes Stück weitergebracht.
X2-Illuminatus wrote:1) Die Scriptbefehle für die Erweiterte Sprungabtriebskonfiguration finden sich alle am Ende der Fly Commands. Damit kannst du die Autosprung-Eigenschaften abfragen und bei anderen Schiffen setzen.

Code: Select all

001   * Annahme: $ship1 und $ship2 enthalten jeweils ein Schiff
002   * Wenn der Autosprung auf Schiff 1 aktiviert ist, werden seine Einstellungen
003   * auf Schiff 2 übertragen.
004   if $ship1 -> is autojump activated
005   * Autosprung aktivieren
006   |$ship2 ->set autojump active: [TRUE]
007   * Mininmale Sprungreichweite in Sektoren setzen
008   |$min.jumps = $ship1 -> get autojump minimum jumps
009   |$ship2 ->autojump minimum jumps= $min.jumps
010   * Treibstoffreserve in Sprüngen
011   |$jump.resupply = $ship1 -> get jumpdrive fuel resupply
012   |$ship2 ->set jumpdrive fuel resupply: amount=$jump.resupply
013   end
014   
015   return null
Einen Befehl, die Benachrichtigen-Option abzufragen oder zu setzen, gibt es nicht.
Leider ist der Rückgabewert in "008 |$min.jumps = $ship1 -> get autojump minimum jumps" bei mir immer NULL. Edit: Erledigt, funktioniert jetzt auch. :wink:
Die anderen Zeilen funktionieren wie sie sollen.
X2-Illuminatus wrote:2) Hier verstehe ich nicht so ganz, was du möchtest. Erst einmal meinst du Wingmen oder die Staffeln (Blau, Gelb, Grün usw.)? Zweitens was ist das genaue Ziel der Aktion bezogen auf den Schiffswechsel und den aktuellen Sektor? Wenn der Spieler sein Schiff wechselt, dann behalten die Schiffe in seiner Staffel und/oder seine Wingmen im Allgemeinen ihren aktuellen Befehl. Insofern verstehe ich, warum man ihnen denselben Befehl noch einmal erteilen sollte. Oder geht es hier nur um Befehle, die das aktuelle Spielerschiff als Ziel nutzen ("Beschütze mich" und dergleichen)?
Es geht um den oder die Wingmen und den Befehlen "Beschütze mich" und dergleichen. Beim Wingmen habe ich festgestellt, dass der aktive Befehl für ein spezielles Schiff gilt. Wenn man sein Spielerschiff verlässt, bleibt der Befehl für das verlassene Schiff gültig. Zerstört man dieses Schiff ist der Befehl aufgehoben. Staffeln bleiben von mir unbeachtet.
Hat man von SchiffA ein Kommando an den Wingmen ausgegeben, ist dieses Kommando nur für SchiffA gültig und wird leider nicht an SchiffB übertragen, nur weil es plötzlich das Spielerschiff ist.
[ external image ] Dif-tor heh smusma (Lebet lang und in Frieden – vulkanischer Gruß), Cockpitsammlung, Spieler HQ aktivieren, XENON-DAE
User avatar
X2-Illuminatus
Moderator (Deutsch)
Moderator (Deutsch)
Posts: 25129
Joined: Sun, 2. Apr 06, 16:38
x4

Post by X2-Illuminatus »

Etwas spät die Antwort, aber dennoch:
Klaus11 wrote:
X2-Illuminatus wrote:2) Hier verstehe ich nicht so ganz, was du möchtest. Erst einmal meinst du Wingmen oder die Staffeln (Blau, Gelb, Grün usw.)? Zweitens was ist das genaue Ziel der Aktion bezogen auf den Schiffswechsel und den aktuellen Sektor? Wenn der Spieler sein Schiff wechselt, dann behalten die Schiffe in seiner Staffel und/oder seine Wingmen im Allgemeinen ihren aktuellen Befehl. Insofern verstehe ich, warum man ihnen denselben Befehl noch einmal erteilen sollte. Oder geht es hier nur um Befehle, die das aktuelle Spielerschiff als Ziel nutzen ("Beschütze mich" und dergleichen)?
Es geht um den oder die Wingmen und den Befehlen "Beschütze mich" und dergleichen. Beim Wingmen habe ich festgestellt, dass der aktive Befehl für ein spezielles Schiff gilt. Wenn man sein Spielerschiff verlässt, bleibt der Befehl für das verlassene Schiff gültig. Zerstört man dieses Schiff ist der Befehl aufgehoben. Staffeln bleiben von mir unbeachtet.
Hat man von SchiffA ein Kommando an den Wingmen ausgegeben, ist dieses Kommando nur für SchiffA gültig und wird leider nicht an SchiffB übertragen, nur weil es plötzlich das Spielerschiff ist.
Der folgende Code müsste für dein Vorhaben eigentlich funktionieren:

Code: Select all

001   * Annahme: $ship1 enthält das alte und $ship2 das neue Spielerschiff
002   * Erhalte alle Schiffe, die uns folgen
003   $followers.arr = $ship1 -> get formation follower ships
004   $size.followers.arr = size of array $followers.arr
005   
006   while $size.followers.arr
007   |dec $size.followers.arr = 
008   |$follower = $followers.arr[$size.followers.arr]
009   * Beachte nur Wingmen
010   |if $follower -> is player wingman
011   * Beachte nur Schiffe im aktuellen Sektor
012   ||$sector.ship1 = $ship1 -> get sector
013   ||$sector.follower = $follower -> get sector
014   ||if $sector.follower == $sector.ship1
015   * Erhalte den aktuell laufenden Befehl und dessen Ziel
016   |||$command = $follower -> get command
017   |||$command.target = $follower -> get command target
018   * Das erste Ziel ist im Allgemeinen das Zielschiff.
019   * Wenn dies gleich dem alten Spielerschiff ist, ändere es zum neuen 
020   |||do if $command.target == $ship1
021   ||||$command.target = $ship2
022   |||$command.target2 = $follower -> get command target2
023   |||START $follower -> command $command : arg1=$command.target, arg2=$command.target2, arg3=null, arg4=null
024   ||end
025   |end
026   end
027   return null
Wieder finden sich die meisten der verwendeten Befehle (Zeile 3, 10, 16, 17, 22, 23) in den Fly Commands. Ich weiß gerade nicht, ob es einen Wingmen-Befehl gibt, der ein zweites Ziel nutzt. Ich glaube nicht. In dem Fall könnte man die Zeile 22 entfernen und das zweite Argument ("arg2") im "Start command"-Befehl (Zeile 23) noch auf null setzen. Zudem wird der "get formation follower ships"-Befehl nur die Schiffe zurückgeben, die $ship1 aktuell folgen (also irgendeinen "move.follow" Befehl ausführen). Das sollte zwar gemeinhin der Fall sein. Ich weiß aber nicht, ob das Umschalten des Ziels hin zum neuen Spielerschiff problemlos funktioniert, wenn Wingmen gerade im Angriffsmodus sind, also wirklich das Spielerschiff verteidigen. Daher alternativ noch die folgende Variante.

Code: Select all

001   * Annahme: $ship1 enthält das alte und $ship2 das neue Spielerschiff
002   * Erhalte alle Spielerschiffe im aktuellen Sektor
003   $sector.ship1 = $ship1 -> get sector
004   $ship1.sector.arr = $sector.ship1 -> get player owned ship array from sector
005   $size.ship1.sector.arr = size of array $ship1.sector.arr
006   
007   while $size.ship1.sector.arr
008   |dec $size.ship1.sector.arr = 
009   |$ship = $ship1.sector.arr[$size.ship1.sector.arr]
010   * Beachte nur Wingmen
011   |if $ship -> is player wingman
012   * Erhalte den aktuell laufenden Befehl und dessen Ziel
013   ||$command = $ship -> get command
014   ||$command.target = $ship -> get command target
015   * Das erste Ziel ist im Allgemeinen das Zielschiff.
016   * Wenn dies gleich dem alten Spielerschiff ist, ändere es zum neuen 
017   ||do if $command.target == $ship1
018   |||$command.target = $ship2
019   ||$command.target2 = $ship -> get command target2
020   ||START $ship -> command $command : arg1=$command.target, arg2=$command.target2, arg3=null, arg4=null
021   |end
022   end
023   return null
Das Prinzip ist das gleiche. Allerdings werden hier alle Spielerschiffe im aktuellen Sektor von $ship1 erfasst (Zeile 4, der Befehl findet sich in den Universe and Sector commands) und daraufhin überprüft, ob es Wingman sind. Der Sektor-Check aus dem obigen Beispiel (Zeilen 11 bis 14) entfällt.
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!
User avatar
Klaus11
Posts: 859
Joined: Mon, 13. Feb 12, 17:23
x3ap

Post by Klaus11 »

Hallo X2,

ich hatte schon nicht mehr an einen Vorschlag geglaubt und selber mal rumgetestet. Hier meine aktuelle Lösung: gerade fertig geworden.

Code: Select all

$ship = get player ship

$SC = [PLAYERSHIP]-> get sector
$ShipSC = $SC-> get ship array from sector/ship/station
for each $Wing.Ship in array $ShipSC using counter $Sice.ShipSC
 if $Wing.Ship-> is player wingman
  $WingKommando = $Wing.Ship-> get command
 end
end

................
*Diverse weitere Befehle
*nach Schiffswechsel
...................

$ShipSC = $SC-> get ship array from sector/ship/station
$Sice.ShipSC = size of array $ShipSC
$ship = get player ship
while $Sice.ShipSC
 dec $Sice.ShipSC
 $Wing.Ship = $ShipSC[$Sice.ShipSC]
 if $Wing.Ship-> is player wingman
  START $Wing.Ship-> command $WingKommando : arg1=$ship, arg2=null, arg3=null, arg4=null
 end
end
Ich danke Dir für Deine Mühe und schaue mir das mal genauer an. Vielleicht gibt es zu meinem Vorschlag auch eine evizientere Lösung. Ein umfangreicher Test steht noch aus. :wink:

Nachtrag: Ich habe mit den Wingman’s verschiedene Manöver ausgeführt und alles funktioniert. Langsam wird die Illusion perfekt. :lol:
[ external image ] Dif-tor heh smusma (Lebet lang und in Frieden – vulkanischer Gruß), Cockpitsammlung, Spieler HQ aktivieren, XENON-DAE
User avatar
Klaus11
Posts: 859
Joined: Mon, 13. Feb 12, 17:23
x3ap

Post by Klaus11 »

Ich bin es schon wieder!
Nun habe ich beim Testen ein neues Problem mit meinem Skript entdeckt und ich kann es mir nicht wirklich erklären. :gruebel:

Solange ich nur die vorgesehenen Geschütze installiert habe ist beim Schiffswechsel alles OK. Alle Waren werden Eins zu Eins übergeben.
Wenn ich aber ein zusätzliches Geschütz desselben Typs im Laderaum habe passiert folgendes.
Beispiel:
Das Schiff kann vier Geschütze des Typs A installieren. Ist nun ein Weiteres Typ A im Laderaum, werden nach dem Wechsel vier Geschütze des Typ A dazu addiert. Plötzlich hat man neun Geschütze an Bord.

Edit:
Ich habe festgestellt, dass dasselbe mit den Schilden passiert. Vier Schilde können installiert werden. Hat man ein fünftes an Bord, dann werden beim Schiffswechsel zu den fünf noch vier dazu addiert.:gruebel:
Hier der Code des Skriptes. Nach der Abfrage, ob R2D2 an Bord ist, wird das Skript ausgeführt. R2D2 wird einmal abgezogen, sonst würde auch er sich vervielfältigen. {SSTYPE_LASER@39}


Code: Select all

$ship = get player ship
$ZielA = get player tracking aim
$sector = $ship-> get sector
$x = $ship-> get x position
$y = $ship-> get y position
$z = $ship-> get z position

$KommandoSpieler = [PLAYERSHIP]-> get command
$WingKommando = null

$ShipSC = $sector-> get ship array from sector/ship/station
for each $Wing.Ship in array $ShipSC using counter $Sice.ShipSC
if $Wing.Ship-> is player wingman
$WingKommando = $Wing.Ship-> get command
end
end

if $ship-> is emergency jump activated
$AUTUJ = 2
end
$Spruenge = $ship-> get autojump minimum jumps
$jumpdrive.resuply = [PLAYERSHIP]-> get jumpdrive fuel resupply


play sample 1171
= wait 500 ms

$shipType = $ship-> get ware type code of object
$name = $ship-> get name
$ships = array alloc: size=0
= $ship-> add -1 units of {SSTYPE_LASER@39}

if $shipType == {Argonen X-Wing \(T70\)}
 $newShip = create ship: type={Player X-Wing \(T70\)} owner=[Player] addto=$sector x=$x y=$y z=$z
 else
 if $shipType == {Player X-Wing \(T70\)}
 $newShip = create ship: type={Argonen X-Wing \(T70\)} owner=[Player] addto=$sector x=$x y=$y z=$z
 end
end

$wares = $ship-> get tradeable ware array from ship
$turrets = $ship-> get number of turrets
while $turrets
dec $turrets
$slots = $ship-> get max. number of lasers in turret $turrets
while $slots
dec $slots
$laser = $ship-> get laser type in turret $turrets at slot $slots
if $laser
= $newShip-> add 1 units of $laser
$newShip-> switch laser in turret $turrets gun $slots to $laser
end
end
end

$shields = 0
$shields = $ship-> get number of shield bays
while $shields
dec $shields
$shield = $ship-> get shield type in bay $shields
= $newShip-> install 1 units of $shield
end

$sub = 0
$wareTech = $ship-> get tradeable ware array from ship
$sub = get number of subtypes of maintype [SSTYPE_W_TECH]
while $sub
dec $sub
$ware = get ware from maintype [SSTYPE_W_TECH] and subtype $sub
if not find $ware in array: $wareTech
if $ship-> get amount of ware $ware in cargo bay
append $ware to array $wareTech
end
end
end

$count = 0
for each $ware in array $wareTech using counter $count
$amt = $ship-> get amount of ware $ware in cargo bay
if $ware != {Triebwerkstuning}
= $newShip-> install $amt units of $ware
end
end

$tuning = $ship-> get amount of ware {Triebwerkstuning} in cargo bay
if $shipType == {Player X-Wing \(T70\)}
$zweimal = 2 * $tuning
= $newShip-> install $zweimal units of {Triebwerkstuning}
end
if $shipType == {Argonen X-Wing \(T70\)}
$zweimal = $tuning / 2
= $newShip-> install $zweimal units of {Triebwerkstuning}
end

$rotalpha = $ship-> get rot alpha
$rotbeta = $ship-> get rot beta
$rotgamma = $ship-> get rot gamma

$newShip-> set rotation: alpha=$rotalpha beta=$rotbeta gamma=$rotgamma

$value = $ship-> get hull
$newShip-> set hull to $value
$value = $ship-> get current shield strength
$newShip-> set current shield strength to $value
$value = $ship-> get current laser strength
$newShip-> set laser energy to $value
append $newShip to array $ships

$curentsped = $ship-> get current speed
= move player to ship $newShip: Teleport=[FALSE]

$newShip-> set ship speed to $curentsped

set player tracking aim to $ZielA->
START [PLAYERSHIP]-> command $KommandoSpieler : arg1=$ZielA, arg2=null, arg3=null, arg4=null

if $AUTUJ != 2
[PLAYERSHIP]-> set autojump active: [TRUE]
[PLAYERSHIP]-> autojump minimum jumps= $min.jumps
end
[PLAYERSHIP]-> set jumpdrive fuel resupply: amount=$jumpdrive.resuply

if $newShip-> exists
$ship-> destruct: show no explosion=[TRUE]
end
$newShip-> autojump minimum jumps= $Spruenge
$newShip-> set formation $formation.a


$ShipSC = $sector-> get ship array from sector/ship/station
$Sice.ShipSC = size of array $ShipSC
$ship = get player ship
while $Sice.ShipSC
 dec $Sice.ShipSC
  $Wing.Ship = $ShipSC[$Sice.ShipSC]
  if $Wing.Ship-> is player wingman
   START $Wing.Ship-> command $WingKommando : arg1=$ship,arg2=null, arg3=null, arg4=null
  end
end

return null
Hat jemand eine Idee, was die Ursache sein könnte?

lG Klaus
[ external image ] Dif-tor heh smusma (Lebet lang und in Frieden – vulkanischer Gruß), Cockpitsammlung, Spieler HQ aktivieren, XENON-DAE
User avatar
X2-Illuminatus
Moderator (Deutsch)
Moderator (Deutsch)
Posts: 25129
Joined: Sun, 2. Apr 06, 16:38
x4

Post by X2-Illuminatus »

Code: Select all

$wareTech = $ship-> get tradeable ware array from ship 
$sub = get number of subtypes of maintype [SSTYPE_W_TECH] 
while $sub 
  dec $sub 
  $ware = get ware from maintype [SSTYPE_W_TECH] and subtype $sub 
  if not find $ware in array: $wareTech 
   if $ship-> get amount of ware $ware in cargo bay 
    append $ware to array $wareTech 
   end 
  end 
end 

$count = 0 
for each $ware in array $wareTech using counter $count 
  $amt = $ship-> get amount of ware $ware in cargo bay 
   if $ware != {Triebwerkstuning} 
    = $newShip-> install $amt units of $ware 
   end 
end 
Ich würde vermuten, dass dein Problem in obigem Scriptausschnitt liegt. "get tradeable ware array from ship" wird all jene Waren zurückgeben, die nicht installiert sind. Damit auch den einen Laser bzw. den einen Schild, der zusätzlich im Frachtraum liegt. Im zweiten Abschnitt erhälst du mit "get amount of ware in cargo bay" die komplette Anzahl (in diesem Fall fünf) der entsprechenden Ware, die dann auch installiert wird. Dass du zu diesem Zeitpunkt schon die vier Laser und die vier Schilde, entsprechend der vorhanden Slots, installiert hast, wird dabei nicht berücksichtigt. Um zu verhindern, dass bereits installierte Laser und Schilde berücksichtigt werden, kannst du sie entweder im oberen Teil des Scripts, wenn du sie ins neue Schiffe installierst aus dem alten entfernen. Oder du ersetzt den "get amount of ware in cargo bay"-Befehl mit "get true amount of ware in cargo bay". Letzterer ignoriert installierte Waffen und Schilde.
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!
User avatar
Klaus11
Posts: 859
Joined: Mon, 13. Feb 12, 17:23
x3ap

Post by Klaus11 »

Hallo X2,

wieder einmal hat Deine Antwort mir sehr geholfen. :) Vielen Dank dafür.
Es gibt viele Varianten, wie die Laser und Schilde im Schiff verteilt sein können. Ich werde versuchen, meine Abfragen so zu gestalten, dass alle Möglichkeiten erfasst werden.
[ external image ] Dif-tor heh smusma (Lebet lang und in Frieden – vulkanischer Gruß), Cockpitsammlung, Spieler HQ aktivieren, XENON-DAE
User avatar
Aldebaran_Prime
Posts: 1387
Joined: Sat, 20. Feb 10, 17:47
x4

Massenkonvertierung von Scripts im .xmxl in .pck Format

Post by Aldebaran_Prime »

Hallo zusammen, ich habe schon viel gegoogelt, aber leider nichts gefunden:

Wie kann ich eine Massenkonvertierung von msci Scripts im .xml in das .pck Format machen?

Jetzt bitte kein Vorschläge, wie: "jedes Script im X-Studio einzeln öffnen und dann mit "Save as" als .pck speichern" ...
- es geht um 585 Scripts...
User avatar
Klaus11
Posts: 859
Joined: Mon, 13. Feb 12, 17:23
x3ap

Post by Klaus11 »

Ich würde sie in eine Cat importieren und dabei komprimieren. Du kannst so viele auf einmal importieren, wie Du im Quell Ordner hast.

X3 Editor 2 machts möglich. :wink:
Last edited by Klaus11 on Thu, 29. Dec 16, 22:27, edited 1 time in total.
[ external image ] Dif-tor heh smusma (Lebet lang und in Frieden – vulkanischer Gruß), Cockpitsammlung, Spieler HQ aktivieren, XENON-DAE
User avatar
JSDD
Posts: 1379
Joined: Fri, 21. Mar 14, 20:51
x3tc

Post by JSDD »

ich persönlich hab immer scripts zurück ins .pck format mit dem x3editr2 konvertiert, drag&drop ein .xml script in irgendne .cat/.dat in x3editor2

einmal konvertiert, kann man hinterher dieselben wieder aus den x3editor2 extrahieren, aber mit NICHT gesetztem häkchen bei "decompress compressed files"

sollte genauso mit mehreren scripts funktionieren, oder gar mit ganzen script ordnern ;)

[wie mein vorredner bereits sagte ... :D]
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

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