[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

Post Reply
User avatar
JSDD
Posts: 949
Joined: Fri, 21. Mar 14, 21:51
x3tc

Post by JSDD » Sat, 15. Sep 18, 15:50

TRUE = objekt wird rückstandslos vernichtet
FALSE = objekt wird nur kaputt gemacht

FritzHugo3 wrote:Transporter + Debris = keine Kaputten Schiffe mehr. Da das Schiff die nun nicht mehr persönlich einsammelt, sondern direkt in den Frachtraum "gebeamt" werden, müssen die Debris mit destruct zerstört werden.
warum? geht der befehl nicht:

Code: Select all

$gesammelte.menge = [THIS] -> catch ware object $truemmer
IS wirds vanilla wie oben gemacht, OOS wird nur die yield-zahl des trümmers in den frachtraum transferiert, originaler trümmer bleibt unbeführt ...


das vanilla-script sieht so aus:

Code: Select all

Script !move.collectrocks
Version: 1
for Script Engine Version: 43
Description
Let ship collect debris flying around in an active sector
Arguments

    1: wareobj , Value , 'GALOBJ of debris'

Source Text

001 @ = wait randomly from 100 to 200 ms
002   skip if $wareobj -> exists
003   |return null
004   skip if $wareobj -> is of class Debris
005   |return null
006   
007   * check if debris mineral typ is loadable
008   
009   $ware = $wareobj -> get resource waretype of asteroid
010   
011   skip if [THIS] -> can transport ware $ware
012   |return null
013   $free = [THIS] -> get free amount of ware $ware in cargo bay
014   skip if $free
015   |return null
016   
017   * mining hack to speed up the process
018   if not [THIS] -> is in active sector
019   |$mineral.yield = $wareobj -> get asteroid yield
020   |$unit.amount = $wareobj -> get debris count
021   |skip if $unit.amount
022   ||inc $unit.amount = 
023   |$sector = $wareobj -> get sector
024   |$x = $wareobj -> get x position
025   |$y = $wareobj -> get y position
026   |$z = $wareobj -> get z position
027 @ |= [THIS] -> call script '!move.movetoposition' :  sector=$sector  position x=$x  position y=$y  position z=$z  precision=2500
028   |if not [THIS] -> is in active sector
029   ||while $mineral.yield > 0
030   |||dec $mineral.yield = 
031   |||$ret =  = random value from 25000 to 35000 - 1
032 @ |||= [THIS] -> move around $ret ms
033 @ |||= [THIS] -> move to position: x=$x y=$y z=$z with precision 1500 m
034 @ |||= wait 130 ms
035   |||skip if [THIS] -> get free amount of ware $ware in cargo bay
036   ||||break
037   |||skip if not [THIS] -> is in active sector
038   ||||break
039   |||= [THIS] -> add $unit.amount units of $ware
040   ||end
041   |end
042   |return null
043   end
044   
045   * normal collecting routine
046   while 1
047   |skip if $wareobj -> exists
048   ||return null
049   |
050   |skip if $wareobj -> has collectible rocks
051   ||return null
052   |
053   |$sector = $wareobj -> get sector
054   |if $sector != [ENVIRONMENT]
055 @ ||= [THIS] -> call script '!move.movetosector' :  sector=$sector
056 @ ||= wait randomly from 250 to 500 ms
057   ||continue
058   |end
059   |if $ret == FLRET_FIREFREE
060   ||if $wareobj -> has collectible rocks
061   |||$catchedamount = [THIS] -> catch ware object $wareobj
062   |||return $catchedamount
063   ||end
064   ||$ret = FLRET_TIMEOUT
065 @ ||= wait randomly from 100 to 200 ms
066   ||continue
067   |end
068   |
069 @ |$ret = [THIS] -> move to ware object $wareobj for collecting: timeout=60000 ms
070   |if $ret != FLRET_FIREFREE
071   ||skip if $ret == FLRET_INTERRUPTED OR $ret == FLRET_TIMEOUT
072   |||return null
073 @ ||= wait randomly from 100 to 200 ms
074   |end
075   end
076   return null
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

FritzHugo3
Posts: 3351
Joined: Mon, 6. Sep 04, 17:24
x4

Post by FritzHugo3 » Sun, 16. Sep 18, 00:08

Wer sagt denn das der Befehl

Code: Select all

$gesammelte.menge = [THIS] -> catch ware object $truemmer
nicht geht?
Das Schiff muss dazu aber heran fliegen und das ist genau, was ich mit einem installierten Transporter nicht möchte, weil die Schiffe dann gegen die Asteroiden fliegen und zerstört werden.

Und das funktioniert auch wunderbar, wie ich es jetzt habe. wie gesagt, das Thema ist schon erledigt.

Im übrigen habe ich lediglich die vanilla Orginaldatei erweitert. Steht alles auf der Seite, wenn du meinem Link folgst. Es gibt kein Problem mehr (die auf einfachem Wege lösbar wären), das Script funktioniert.
(Wie ich es im meinem zweiten Post bereits geschrieben hatte)

So spare ich mir eine Textdatei, es braucht kein neues Comand, kein Menü oder sonst was. Was ganz schlichtes, was funktioniert. Wer das erweitern möchte, falls ihm was fehlt, darf das gerne machen.

Trotzdem danke für deine Bemühung.
Ich fordere mehr und vorallem gerechtere Verteilung von Keksen und Süßkram für die "Magischen 20"! Daher wählen Sie jetzt die DPFGKV, die Deutsche Partei für gerechtere Keks - Verteilung!

Bigeagle
Posts: 282
Joined: Mon, 15. Jan 07, 22:20
xr

Re: [DISKUSSION] Allgemeine S&M-Fragen III

Post by Bigeagle » Mon, 1. Oct 18, 18:15

Ich bin etwas unsicher was die kompatibilität von TC scripts in AP angeht.

1. Wird der TC scriptordner in AP überhaupt genutzt?
2. Wenn ich TC scripts in den addon\scripts ordner schiebe stimmt doch die versionsnummer nicht. muss ich die ändern, oder akzeptiert AP auch TC scripts?
3. wie sieht die ladereihenfolge bei mods aus? TC 01-xx.cat/dat und danach addon\01-xx.cat/dat?
4. gibt es noch was wichtiges dazu?
^^_^^

FritzHugo3
Posts: 3351
Joined: Mon, 6. Sep 04, 17:24
x4

Re: [DISKUSSION] Allgemeine S&M-Fragen III

Post by FritzHugo3 » Mon, 1. Oct 18, 18:44

Zu 1 und 2
Soweit ich weis, kannst du die Scripte von X2, X3, X3:TC in den Ordner X3:AP-Addon (Scripte, t) kopieren.
(es wurden nur einige wenige Befehlszeilen verändert, die in AP etwas anders heißen)
(Umgekehrt ist aber nicht alles Abwärtskompatiebel, Scripte für AP werden größtenteils nicht in X2 funktionieren)

Savegameordner Sichern, vanilla Scriptordner sichern und dann einfach ausprobieren oder im einzelnen Thread der Erweiterung nachfragen, wenn du ganz sicher gehen möchtest.

Zu 3, habe ich nie benutzt diese Variante der Modifikation.
Bei ganzen Modpacks, würde ich einfach nachfragen, wenn nichts in den Installationsanweisungen steht.

4. Mit Backups kann dir ja nicht viel passieren
(Bei Steam vielleicht die Savegamecloud aus machen, damit da nichts durcheinander kommen kann. Hab ich bei mir grundsätzlich aus bei allen Spielen, da ich mit nur einem PC keinen Mehrnutzen sehe).

Schönen Tag dir.
Ich fordere mehr und vorallem gerechtere Verteilung von Keksen und Süßkram für die "Magischen 20"! Daher wählen Sie jetzt die DPFGKV, die Deutsche Partei für gerechtere Keks - Verteilung!

Gamefreak
Posts: 354
Joined: Sat, 7. Nov 09, 13:19

Re: [DISKUSSION] Allgemeine S&M-Fragen III

Post by Gamefreak » Sun, 28. Oct 18, 14:08

Seit sehr langer Zeit spiele ich mal wieder X3TC. Liegt auch daran, dass ich mir per GOG (mag kein Steam) X3TC+AP geholt habe.

Ich will mir ein Skript zusammen bauen, dass einer Schiffswerft alle Stationen einer Rasse hinzufügt. Bei den Schiffen habe ich eine entsprechende Vorlage gefunden die funktioniert, bei den Stationen allerdings nicht und die Schiffsvorlage für die Stationen zu modifizeren hat auch nichts gebracht :evil: . Um ehrlich zu sein, bin auch nicht gut darin zu scripten :roll: .

Ist es überhaupt möglich? Gibt es vielleicht schon ein Skript, dass genau dies macht?

FritzHugo3
Posts: 3351
Joined: Mon, 6. Sep 04, 17:24
x4

Re: [DISKUSSION] Allgemeine S&M-Fragen III

Post by FritzHugo3 » Sun, 28. Oct 18, 15:50

Gamefreak wrote:
Sun, 28. Oct 18, 14:08
Seit sehr langer Zeit spiele ich mal wieder X3TC. Liegt auch daran, dass ich mir per GOG (mag kein Steam) X3TC+AP geholt habe.

Ich will mir ein Skript zusammen bauen, dass einer Schiffswerft alle Stationen einer Rasse hinzufügt. Bei den Schiffen habe ich eine entsprechende Vorlage gefunden die funktioniert, bei den Stationen allerdings nicht und die Schiffsvorlage für die Stationen zu modifizeren hat auch nichts gebracht :evil: . Um ehrlich zu sein, bin auch nicht gut darin zu scripten :roll: .

Ist es überhaupt möglich? Gibt es vielleicht schon ein Skript, dass genau dies macht?
Bin jetzt nicht im Spiel und mach das nur mal eben gut dünkend aus dem Kopf.
Soweit ich mich erinnere werden Stationen wie Produkte bei den AD's hinzugefügt.
Irgendwas mit
Set product to Station
add product to Station
An für sich sollte es bei den Schiffen nicht viel anders gewesen sein.

Zeig uns doch mal dein bisheriges Script
[.spoiler][.code]Hier Code (ohne die Punkte)[./code][./spoiler]
Ich fordere mehr und vorallem gerechtere Verteilung von Keksen und Süßkram für die "Magischen 20"! Daher wählen Sie jetzt die DPFGKV, die Deutsche Partei für gerechtere Keks - Verteilung!

Gamefreak
Posts: 354
Joined: Sat, 7. Nov 09, 13:19

Re: [DISKUSSION] Allgemeine S&M-Fragen III

Post by Gamefreak » Sun, 28. Oct 18, 16:49

Damit ich nicht falsch verstanden werde: Wie ich eine einzelne Station einer Werft hinzufügen kann hab ich schon geschafft. Aber ich will nicht jede einzelne Station auswählen müssen.

Mein bisheriges Skript für die Schiffe:
Spoiler
Show

Code: Select all

Argument1: station, Var/Station, 'Wähle Werft'

$ships = get ship type array: maker race=ATF class=Bewegliches Schiff
  $i = size of array $ships
  while $i
    dec $i = 
    $ware = $ships[$i]
    $station ->add product to factory or dock: $ware
    = $station -> add 1 units of $ware
  end
  return null
Das bisherige Skript für die Stationen:
Spoiler
Show

Code: Select all

Argument1: station, Var/Station, 'Wähle Werft'

$station.array =  get station array: of race Argonen class/type=Fabrik
  $i = size of array $station.array
  while $i
    dec $i = 
    $ware = $station.array[$i]
    $station ->add product to factory or dock: $ware
    = $station -> add 1 units of $ware
  end
  return null
Bei den Schiffen geht es wunderbar. Nur bei den Stationen bin ich derzeit planlos.
Habe es jetzt vom Skript Editor abgeschrieben, da ich sonst nicht wüsste wie es anders geht. Hoffentlich korrekt.

EDIT: Code direkt aus der XML rauskopiert.
Last edited by Gamefreak on Sun, 28. Oct 18, 18:16, edited 3 times in total.

FritzHugo3
Posts: 3351
Joined: Mon, 6. Sep 04, 17:24
x4

Re: [DISKUSSION] Allgemeine S&M-Fragen III

Post by FritzHugo3 » Sun, 28. Oct 18, 17:56

Ah ok, dann hab ich dich in der Tat falsch verstanden, du möchtest quasi ein Wildcard ala suche selber alle Stationstypen heraus und schmeiß sie nach einander in die Station rein. Mit Tablen/Arrays kann ich dir leider nicht wirklich helfen, auch weiß ich nicht, ob das bei Stationen (dazu noch rassenspezifisch) überhaupt möglich und sinnvoll ist. Ich hab das bei meinen Scripten immer händisch gemacht.

Abschreiben musst du keine Scripte. Das sind normale Textfiles, die du mit notepad++ (oder was anderem) in Windows öffnen kannst.
Es gibt auch einen externen Scripteditor zum Spiel, ich persönlich nutze den aber höchstens um was innerhalb der Scripte zu kopieren/verschieben und so zeugs.
Ich fordere mehr und vorallem gerechtere Verteilung von Keksen und Süßkram für die "Magischen 20"! Daher wählen Sie jetzt die DPFGKV, die Deutsche Partei für gerechtere Keks - Verteilung!

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

Re: [DISKUSSION] Allgemeine S&M-Fragen III

Post by X2-Illuminatus » Sun, 28. Oct 18, 18:18

Gamefreak wrote:
Sun, 28. Oct 18, 16:49
Habe es jetzt vom Skript Editor abgeschrieben, da ich sonst nicht wüsste wie es anders geht. Hoffentlich korrekt.
Auf das entsprechende Script im scripts-Order (oder jedem anderen Ordner, in dem die x2script.xsl liegt) doppelklicken. Anschließend sollte sich die Browseransicht des Scripts öffnen, und du kannst den Scripttext in code-tags in deinen Forenbeitrag kopieren.

Der Grund, warum dein Script nicht funktioniert, liegt indes am verwendeten Befehl:

Code: Select all

$station.array = get station array: of race = Argonen class/type = Fabrik
Im Gegensatz zu "get ship type" bei Schiffen erhältst du hier nicht ein Array mit Stationstypen sondern mit existierenden Stationen im Universum. Wenn du dir den Inhalt von $station.array ins Logbuch ausgibst, sollte das klar werden. Einen Befehl, um Stationstypen zu erhalten, gibt es wohl nicht. Es gibt einige Möglichkeiten, was du alternativ machen kannst:
1) Du erweiterst dein bisheriges Script, um die Abfrage nach dem Stationstyp. Diesen erhältst du mithilfe von <RetVar><RefObj> get ware type code of object. Problem hierbei: Nicht alle NPC-Stationen sind für den Spieler gedacht.
2) Du lässt eine Schleife über alle Subtypes von Maintype 6 (Factories) laufen. Mit dem Befehl <RetVar> = get ware from maintype <Var/Number> and subtype <Var/Number> erhältst du den entsprechenden Stationstyp. Anschließend könntest du prüfen, ob die Station von einer bestehenden Schiffswerft als Ware angeboten wird, und wenn ja, diese deiner gewählten Schiffswerft hinzufügen.
3) Du prüfst direkt, welche Stationen von Schiffswerften verkauft werden und fügst diese deiner gewählten Schiffswerft hinzu.
Last edited by X2-Illuminatus on Fri, 2. Nov 18, 19:48, edited 1 time in total.
Reason: Zwei Rechtschreibfehler beseitigt
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 and Nopileos as Kindle e-books! (NOW also available: X3: Yoshiko!)

Gamefreak
Posts: 354
Joined: Sat, 7. Nov 09, 13:19

Re: [DISKUSSION] Allgemeine S&M-Fragen III

Post by Gamefreak » Fri, 2. Nov 18, 19:36

Lösung 1 hat geklappt, auch wenn ich einige der Stationen dann halt manuell entfernen muss.

Lösung 2 und 3 sind mir doch etwas zu kompliziert :? . Wie schon gesagt, so gut bin ich im Scripten nicht.

Danke für die Hilfe.

Gamefreak
Posts: 354
Joined: Sat, 7. Nov 09, 13:19

Re: [DISKUSSION] Allgemeine S&M-Fragen III

Post by Gamefreak » Sun, 4. Nov 18, 15:52

Ich hab mal wieder ein kleines Problem.

Derzeit arbeite ich an einem Skript, dass eine Station klonen soll. Die Gedanke dahinter ist eigene Stationen mit Produkten und Ressourcen etc zu kreieren und diese dann im Universum durch das Skript zu verteilen.
Spoiler
Show

Code: Select all

Argument1: Stationstyp , Var/Station, 'Type der Station auswählen'
Argument2: Position, Var/Sector Position, 'Position wählen'

 $Sektor = $Position[3]
  $Z = $Position[2]
  $X = $Position[1]
  $Y = $Position[0]
  $Race = $Stationstyp -> get owner race
  $Type = $Stationstyp -> get ware type code of object
  $Ware = $Stationstyp -> get products
  $name = $Stationstyp -> get name
  $ressourcen = $Stationstyp -> get tradeable ware array from station
  $station = create station: type=$Type owner=$Race addto=$Sektor x=$X y=$Y z=$Z
  $array = size of array $Ware
  while $array
    dec $array = 
    $product = $Ware[$array]
    $station ->add product to factory or dock: $product
  end
  $array2 = size of array $ressourcen
  while $array2
    dec $array2 = 
    $res = $ressourcen[$array2]
    if $Stationstyp -> uses ware $res as primary resource
      $station ->add primary resource to factory: $res
    else if $Stationstyp -> uses ware $res as secondary resource
      $station ->add second resource to factory: $res
    end
  end
  $station ->set name to $name
  $schildtyp = $station -> get max. shield type that can be installed
  $anzahl = $station -> get number of shield bays
  = $station -> install $anzahl units of $schildtyp
  $maxshield = $station -> get maximum shield strength
  $station ->set current shield strength to $maxshield
  $station ->factory production task: on=[TRUE]
  $station ->station trade and production tasks: on=[TRUE]
  return null
An sich klappt es auch, allerdings werden die neuen Stationen ohne Schilde erzeugt.

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

Re: [DISKUSSION] Allgemeine S&M-Fragen III

Post by X2-Illuminatus » Sun, 4. Nov 18, 19:25

Wenn ich mich richtig erinnere, kann man in Stationen beliebig viele Schilde beliebiger Größe installieren. Die von dir verwendeten Befehle, um die passenden Schilde und Schildanzahlen zu erhalten, werden daher nur bei Schiffen vernünftige Werte ausgeben. (Das kannst du aber auch selbst teste, indem du dir die Werte einfach ins Logbuch oder eine Logdatei ausgeben lässt.)
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 and Nopileos as Kindle e-books! (NOW also available: X3: Yoshiko!)

Gamefreak
Posts: 354
Joined: Sat, 7. Nov 09, 13:19

Re: [DISKUSSION] Allgemeine S&M-Fragen III

Post by Gamefreak » Tue, 13. Nov 18, 18:10

Gibt es eine Möglichkeit per Skriptbefehl Zahlen/Werte in der Ausgabe besser darzustellen? Also nicht 123456789, sondern 123,456,789 oder 123.456.789.

Derzeit arbeite ich an einem Skript, dass eine Asteroid der Wahl mit einer beliebigen Ausbeute erzeugt und dem Spieler Geld (nach einer Formel) abzieht.

Bevor dieser allerdings erzeugt werden soll, soll der Spieler gefragt werden, ob er auch den Betrag bezahlen möchte und bei Werten wie z.B. 750350 oder höher ist der Preis auf der ersten Blick nicht gerade ersichtlich :roll: .

Edit: Danke X2-Illuminatus wegen den Schilden.
Last edited by Gamefreak on Tue, 13. Nov 18, 19:26, edited 2 times in total.

User avatar
Klaus11
Posts: 844
Joined: Mon, 13. Feb 12, 18:23
x3ap

Re: [DISKUSSION] Allgemeine S&M-Fragen III

Post by Klaus11 » Tue, 13. Nov 18, 18:57

Versuche mal dieses Beispiel:

Code: Select all

$TextN = format large number pair as string: billions null, units $Credits, include separators 3, use millions suffix for very large numbers [FALSE]
Image Dif-tor heh smusma (Lebet lang und in Frieden – vulkanischer Gruß), Cockpitsammlung, Spieler HQ aktivieren, XENON-DAE

Gamefreak
Posts: 354
Joined: Sat, 7. Nov 09, 13:19

Re: [DISKUSSION] Allgemeine S&M-Fragen III

Post by Gamefreak » Tue, 13. Nov 18, 19:23

Danke Klaus11 :) . Hat geklappt.

Post Reply

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