Genauso hier...
...erst durch eine Nachfrage bin ich auf die Idee gekommen, mal den ganzen "Standard-Scripteintopf" in einen Thread zu legen.
Die folgenden Schnipsel sind alles keine "Komfortversionen" sondern dienen und dienten einzig und allein dazu, den Unsäglichkeiten des X-Universums ein wenig auf die Sprünge zu helfen.
Sie beschäftigen sich mit den großen und kleinen Katastrophen (siehe HUB-Plot) des täglichen Wahnsinns in X3 und sind meist auf Nachfrage aus diesem Forum entstanden.
Anmerkung
Ja, die Scripte sind durch die Bank weg Cheats, sieht man mal vom Hinzufüge-Script ab, und Cycrows Cheatpaket kann das sicherlich komfortabler und doller, aber ich selbst lehne das Paket ab, da es nicht reproduzierbare Ereignisse auslösen kann und es einfach zu einfach macht.
Da streng ich doch lieber selber meinen Kopf an.
Genug gelabert:
Achtung! Alle Scripte hier sind für TC ab 2.0 erstellt.
Warencheat für den Hubplot
Code: Alles auswählen
Arguments
1: ware , Var/Ware , 'Ware wählen'
2: Station , Var/Station , 'Sation wählen'
3: wert , Nummer , 'Anzahl der Durchläufe'
Source Text
001 $tempstore = $Station -> get max. store amount of ware $ware
002 $i = 0
003 while $i != $wert
004 |$tmp = $Station -> add $tempstore units of $ware
005 |inc $i =
006 @ |= wait 5000 ms
007 end
008 return null
Das macht es solange, bis die angegebene Anzahl der Durchläufe erreicht ist. Somit ist jede beliebige Menge möglich, von "alles transferieren lassen", bis nur "mal ein paar tausend Microchips rüberschicken".
Rufänderung des Spielers gegenüber anderen Völkern
Code: Alles auswählen
Version: 0
for Script Engine Version: 44
Description
Änderung des Ranges des Spielers bei den Völkern, bzw. zwischen den Völkern
Arguments
1: race , Var/Race , 'Rasse auswählen'
2: value , Var/Number , 'Anzahl der Rufpunkte'
Source Text
001 $race add notoriety: race=Player value=$value
002 return null
Erstellen eines Asteroiden
Code: Alles auswählen
Version: 0
for Script Engine Version: 44
Description
Erstellt einen Asteroiden
Arguments
1: Sector.Pos , Var/Sector Position , 'Sektor und Position wählen'
2: Type , Nummer , '(0=Erz/1=Sili/2=Nividium)'
3: yield , Nummer , 'Ausbeute angeben'
Source Text
001 $X = $Sector.Pos[0]
002 $Y = $Sector.Pos[1]
003 $Z = $Sector.Pos[2]
004 $Sector = $Sector.Pos[3]
005 $roid = create asteroid: type=null addto=$Sector resource=$Type yield=$yield x=$X y=$Y z=$Z
006 return null
Verschieben eines Asteroiden ohne dabei im Sektor sein zu müssen
Code: Alles auswählen
Version: 0
for Script Engine Version: 44
Description
Verschieben eines Asteroiden
Arguments
1: Sector.Pos , Var/Sector Position , 'Sektor und Position wählen'
2: roid , Var/Asteroid , 'Asteroid auswählen'
Source Text
001 $X = $Sector.Pos[0]
002 $Y = $Sector.Pos[1]
003 $Z = $Sector.Pos[2]
004 $Sector = $Sector.Pos[3]
005 $roid -> set position: x=$X y=$Y z=$Z
006 return null
Der Spieler muß sich dabei nicht im Sektor des Asteroiden aufhalten.
Ein Verschieben über Sektorgrenzen hinaus ist damit nicht möglich.
Verschieben einer Station
Code: Alles auswählen
Version: 0
for Script Engine Version: 44
Description
Erstellt einen Asteroiden
Arguments
1: Sector.Pos , Var/Sector Position , 'Sektor und Position wählen'
2: station , Var/Station , 'Asteroid auswählen'
Source Text
001 $X = $Sector.Pos[0]
002 $Y = $Sector.Pos[1]
003 $Z = $Sector.Pos[2]
004 $Sector = $Sector.Pos[3]
005 $station -> set position: x=$X y=$Y z=$Z
006 return null
Erstellen jedes x-beliebigen Schiffes im Spiel
Code: Alles auswählen
Version: 0
for Script Engine Version: 44
Description
Schiff erstellen
Arguments
1: Sector.Pos , Var/Sector Position , 'Wähle Sektor und Position'
2: Ship , Var/Ship Type , 'Schifstyp wählen'
3: Rasse , Var/Race , 'Rasse auswählen'
Source Text
001 $X = $Sector.Pos[0]
002 $Y = $Sector.Pos[1]
003 $Z = $Sector.Pos[2]
004 $Sector = $Sector.Pos[3]
005 $cship = create ship: type=$Ship owner=$Rasse addto=$Sector x=$X y=$Y z=$Z
006 $Upgrade = $cship -> get amount of ware Laderaumerweiterung in cargo bay
007 $UpgradeMax = $cship -> get max upgrades for upgrade Laderaumerweiterung
008 $Upgrade = $UpgradeMax - $Upgrade
009 = $cship -> install $Upgrade units of Laderaumerweiterung
010 $Upgrade = $cship -> get amount of ware Triebwerkstuning in cargo bay
011 $UpgradeMax = $cship -> get max upgrades for upgrade Triebwerkstuning
012 $Upgrade = $UpgradeMax - $Upgrade
013 = $cship -> install $Upgrade units of Triebwerkstuning
014 $Upgrade = $cship -> get amount of ware Ruder-Optimierung in cargo bay
015 $UpgradeMax = $cship -> get max upgrades for upgrade Ruder-Optimierung
016 $Upgrade = $UpgradeMax - $Upgrade
017 = $cship -> install $Upgrade units of Ruder-Optimierung
018 $ShieldType = $cship -> get max. shield type that can be installed
019 $ShieldMax = $cship -> get number of shield bays
020 = $cship -> install $ShieldMax units of $ShieldType
021
022 $Turret = 0
023 $TurretMax = $cship -> get number of turrets
024 while $Turret < $TurretMax
025 |
026 |$LaserType1 = null
027 |$LaserType2 = null
028 |$LaserType3 = null
029 |$LaserType4 = null
030 |
031 |skip if not $cship -> fits laser Photonenimpulskanone into turret $Turret
032 ||$LaserType1 = Photonenimpulskanone
033 |skip if not $cship -> fits laser Energiepulskanone into turret $Turret
034 ||$LaserType1 = Energiepulskanone
035 |skip if not $cship -> fits laser Energieplasmawerfer into turret $Turret
036 ||$LaserType2 = Energieplasmawerfer
037 |skip if not $cship -> fits laser Splitterbombenwerfer into turret $Turret
038 ||$LaserType2 = Splitterbombenwerfer
039 |skip if not $cship -> fits laser Projektilkanone into turret $Turret
040 ||$LaserType3 = Projektilkanone
041 |skip if not $cship -> fits laser Phasenrepetiergeschütz into turret $Turret
042 ||$LaserType3 = Phasenrepetiergeschütz
043 |skip if not $cship -> fits laser Ionen-Disruptor into turret $Turret
044 ||$LaserType4 = Ionen-Disruptor
045 |skip if not $cship -> fits laser Pulsstrahler into turret $Turret
046 ||$LaserType4 = Pulsstrahler
047 |$LaserMax = $cship -> get max. number of lasers in turret $Turret
048 |skip if not $LaserType1
049 ||= $cship -> install $LaserMax units of $LaserType1
050 |skip if not $LaserType2 AND ! $LaserType1
051 ||= $cship -> install $LaserMax units of $LaserType2
052 |skip if not $LaserType2 AND $LaserType1
053 ||= $cship -> install $LaserMax units of $LaserType2
054 |skip if not $LaserType3
055 ||= $cship -> install $LaserMax units of $LaserType3
056 |skip if not $LaserType4
057 ||= $cship -> install $LaserMax units of $LaserType4
058 |inc $Turret =
059 end
060
061 $inst = $cship -> install 1 units of Boost Erweiterung
062 $inst = $cship -> install 1 units of Versorgungssoftware
063 $inst = $cship -> install 1 units of Duplex Scanner
064 $inst = $cship -> install 1 units of Patrouillensoftware
065 $inst = $cship -> install 1 units of Erkundungssoftware
066 $inst = $cship -> install 1 units of Frachtscanner
067 $inst = $cship -> install 1 units of Kampfsoftware MK1
068 $inst = $cship -> install 1 units of Kampfsoftware MK2
069 $inst = $cship -> install 1 units of Landecomputer
070 $inst = $cship -> install 1 units of Mineralienscanner
071 $inst = $cship -> install 1 units of Navigationssoftware MK1
072 $inst = $cship -> install 1 units of Singularitäts-Zeitverzerrungsantrieb
073 $inst = $cship -> install 1 units of Spezialsoftware MK1
074 $inst = $cship -> install 1 units of Transporter
075 $inst = $cship -> install 1 units of Triplex Scanner
076 $inst = $cship -> install 1 units of Sprungantrieb
077 $inst = $cship -> install 1 units of Handelssoftware MK3
078 $inst = $cship -> install 1 units of Handelssoftware MK1
079 $inst = $cship -> install 1 units of Handelscomputer-Erweiterung
080 $inst = $cship -> install 1 units of Handelssoftware MK2
081 $inst = $cship -> install 1 units of Lebenserhaltung für Frachtraum
082 return $cship
Dieses Script erzeugt ein voll ausgestattes, mit Schilden und Waffen versehenes Schiff.
Dabei ist es völlig egal, ob nun für den Spieler oder für die Völker erstellt wird. Auch der Aufenthaltsort des Spielers ist egal, er muß nicht im gleichen Sektor sein.
Ein Wort zu den Waffen. Vom Prinzip her wäre es möglich, wirklich jede erdenkliche Waffenart und Waffenkombination einzubinden.
Dieses Beispiel hier ist dafür gedacht gewesen, schnell Ausfälle bei Transportern und Jägern zu kompensieren, daher liegt der Waffenschwerpunkt auf den "leichten Waffen". Die PIK ist dabei die Ausnahme, da ich das Script auch ab und an einsetze, um Völkern GKS zur Verfügung zu stellen, wenn deren Verteidigung wieder mal von Khaak, Xenon und Co. überrannt worden ist.
Gut, in TC passiert das fast nie, in XTM war es desöfteren im Einsatz.
Es gibt von diesem Script auch noch eine weitere Version, mit Kommandoslot und Ausrüstungslibrary, die aber für ein "Schnipsel" schon viel zu weit führt.
Station erstellen und in Betrieb nehmen
Code: Alles auswählen
Version: 0
for Script Engine Version: 44
Description
Description
Arguments
1: Sector.Pos , Var/Sector Position , 'Sektor und Position wählen'
2: station , Var/Station Type , 'Stationstyp wählen'
3: race , Var/Race , 'Eigentümer wählen'
4: name , String , 'Namen auswählen'
Source Text
001 $X = $Sector.Pos[0]
002 $Y = $Sector.Pos[1]
003 $Z = $Sector.Pos[2]
004 $Sector = $Sector.Pos[3]
005 $stat = create station: type=$station owner=$race addto=$Sector x=$X y=$Y z=$Z
006 $stat -> set name to $name
007 $stat -> add primary resource to factory: Energiezellen
008 $stat -> add primary resource to factory: Erz
009 *$stat -> add primary resource to factory: Siliziumscheiben
010 $stat -> add primary resource to factory: Cahoona Fleischblöcke
011 $stat -> add second resource to factory: Quantumröhren
012 $stat -> add second resource to factory: Computerkomponenten
013 $stat -> add second resource to factory: Stoff-Rheime
014 $stat -> add second resource to factory: Teladianium
015 $stat -> add product to factory or dock: 25 MJ Schild
016 $stat -> add product to factory or dock: 200 MJ Schild
017 $stat -> station trade and production tasks: on=1
018 $tmp = $stat -> install 5 units of 2 GJ Schild
019 return null
Achtung!
Die Angaben der jeweiligen Primär-, Sekundärresourcen und Produkte muß bei dieser Version im SE erfolgen, wird also nicht über Argumente gelöst.
Obwohl...
...vielleicht denke ich da noch mal drüber nach, Aufwand wäre es kein großer, das über ein Menü zu machen.
Im Beispiel wird ein argonischer Produktionskomplex "mittlerer Schild" erstellt, mit einer etwas "anderen" Resourcenvergabe.
Was ihr daraus macht, ist Eurer Phantasie überlassen.
Die Angabe des Namens läßt es zu die Station beliebig umzubenennen, das gilt allerdings nur für die reine Benennung, nicht für den Voicestream, denn den müßte man erstmal aufnehmen.^^
Objekt zerstören
Code: Alles auswählen
Version: 0
for Script Engine Version: 44
Description
Bumm
Arguments
1: obj , Var/Ship/Station , 'Schiff oder Station wählen'
Source Text
001 $obj -> destruct: show no explosion=[TRUE]
002 return null
Wie man sich Freunde macht...
Code: Alles auswählen
Version: 0
for Script Engine Version: 44
Description
Description
Arguments
1: target , Var/Ship/Station , 'Ziel auswählen'
2: race , Var/Race , 'Rasse wählen'
3: relation , Relation , 'Beziehungstyp wählen'
Source Text
001 $target -> set relation against $race to $relation
002 return null
Waren/Ausrüstung an Schiffe und Stationen transferieren
Code: Alles auswählen
Version: 1
for Script Engine Version: 44
Description
Transferiert Waren zu Schiffen oder Stationen
Arguments
1: object , Var/Ship/Station , 'Schiff oder Station wählen'
2: ware , Var/Ware , 'Ware wählen'
3: count , Nummer , 'Menge wählen'
Source Text
001 $tmp = $object -> add $count units of $ware
002 return null
...nach dem zweiundzwanzigsten Auftrag "bringe sie XYZ,blablabla" innerhalb der Sohnenreihe bei XTM ist mir der Kragen geplatzt.
Ergebnis, dieses kleine Script, was alles schöööön vereinfacht.
Auch Upgrades lassen sich damit auf Schiffe transferieren.
Funktioniert auch wunderbarst mit TC.
Schiff tunen
Code: Alles auswählen
Version: 0
for Script Engine Version: 44
Description
Description
Arguments
1: cship , Var/Ship , 'Schiff wählen'
2: count , Nummer , 'Menge wählen'
Source Text
001 $Upgrade = $cship -> get amount of ware Laderaumerweiterung in cargo bay
002 $UpgradeMax = $cship -> get max upgrades for upgrade Laderaumerweiterung
003 $Upgrade = $UpgradeMax - $Upgrade
004 = $cship -> install $Upgrade units of Laderaumerweiterung
005 $Upgrade = $cship -> get amount of ware Triebwerkstuning in cargo bay
006 $UpgradeMax = $cship -> get max upgrades for upgrade Triebwerkstuning
007 $Upgrade = $UpgradeMax - $Upgrade + $count
008 = $cship -> install $Upgrade units of Triebwerkstuning
009 $Upgrade = $cship -> get amount of ware Ruder-Optimierung in cargo bay
010 $UpgradeMax = $cship -> get max upgrades for upgrade Ruder-Optimierung
011 $Upgrade = $UpgradeMax - $Upgrade + $count
012 = $cship -> install $Upgrade units of Ruder-Optimierung
013 return $cship
Das Script maximiert die natürliche Anzahl an Tunings und fügt so nebenbei die gewünschte Anzahl an Overtuning hinzu.
Funktioniert sowohl im positiven, wie im negativen Bereich, will sagen, man kann damit auch Schiffe langsamer machen, falls man sich mal in der Anzahl der Tunings vergaloppiert hat.
Nur unter die Grenze der "natürlichen" Tunings fällt man nie.
Update
Komplette Werft, inklusive aller Schiffe einer Rasse, erstellen
Code: Alles auswählen
Script aa.test.atf.shipyard
Version: 0
for Script Engine Version: 44
Description
Description
Arguments
1: sector.pos , Var/Sector Position , 'Sektor und Position wählen'
Source Text
001 $X = $sector.pos[0]
002 $Y = $sector.pos[1]
003 $Z = $sector.pos[2]
004 $Sector = $sector.pos[3]
005 $station = create station: type=[STATIONSTYP] owner=[RASSE] addto=$Sector x=$X y=$Y z=$Z
006 $ships = get ship type array: maker race=[RASSE] class=Bewegliches Schiff
007 $i = size of array $ships
008 while $i
009 |dec $i =
010 |$ware = $ships[$i]
011 |$station -> add product to factory or dock: $ware
012 |= $station -> add 1 units of $ware
013 @ |= wait 5 ms
014 end
015 $station -> factory production task: on=[TRUE]
016 return null
[RASSE] = Kann jede beliebige Rasse sein, außer dem Spieler. Spielereigene Werften funktionieren nicht! Der Rassentyp von Besitzer der Werft und Erstellerrasse der eingefügten Schiffe kann durchaus unterschiedlich sein.
Es geht also, das man den Gonern die Werft zuordnet, die Werft selbst aber ATF-Schiffe anbietet.
Dieses kleine Script erstellt eine Werft vom angegebenen Typ und angegebener Rasse an der angegebenen Position und fügt dieser erstellten Werft alle Schiffe hinzu, die der Objektklasse Bewegliches Schiff der Erstellerrasse (<get maker race>) entsprechen.
Und das sind immer alle, also auch die, die sonst nicht im Spiel auftauchen, wie etwa die Wallhalla bei der ATF.
Objekttyp "Bewegliches Schiff" deswegen, da es keinen Sinn macht, Geschütztürme und Satelliten in einer Werft anzubieten.
Ach ja, das die Werft hier keine Schilde hat, war damals Absicht...
...sie sollte so schnell wie möglich "zerbröselt" werden, als Testobjekt für die KI-Steuerung in einem Kampfscript. Aber das bekommt ihr sicher hin, der Werft ein paar Schilde zu gönnen. Und wenn nicht...
...einfach fragen.
Update 2
Da sich in letzter Zeit die Fragen nach eigenen Torverbindungen und nach Zuweisungen von Waren, Produkten und Resourcen zu bestehenden Fabriken, Docks und Handelsstationen gehäuft hat, hier nochmal zwei Beispiele, wie man so etwas mit einfachen Mitteln lösen kann.
Eigene Torverbindungen erstellen
Code: Alles auswählen
Script aa.test.sprungtor
Version: 0
for Script Engine Version: 45
Description
Description
Arguments
1: sector.pos , Var/Sector Position , 'Sektor und Position wählen'
2: sector.pos1 , Var/Sector Position , 'Sektor 2 und Position wählen'
3: typegate1 , Number , 'Angabe des Tortyps für Tor 1 (0=N, 1=S, 2=W, 3=E)'
4: typegate2, Number, Angabe des Tortyps für Tor 2 (0=N, 1=S, 2=W, 3=E)'
Source Text
001 $X = $sector.pos[0]
002 $Y = $sector.pos[1]
003 $Z = $sector.pos[2]
004 $sector = $sector.pos[3]
005
006 $X1 = $sector.pos1[0]
007 $Y1 = $sector.pos1[1]
008 $Z1 = $sector.pos1[2]
009 $sector1 = $sector.pos1[3]
010
011 $sec1x = $sector -> get universe x index
012 $sec1y = $sector -> get universe y index
013
014 $sec2x = $sector1 -> get universe x index
015 $sec2y = $sector1 -> get universe y index
016
017 $gid1 = 5
018 while $sector -> get warp gate: gate id=$gid1
019 |if $gid1 == -1
020 ||return null
021 |end
022 end
023
024 $gid2 = 5
025 while $sector1 -> get warp gate: gate id=$gid2
026 |if $gid2 == -1
027 ||return null
028 |end
029 end
030
031 $tor1 = create gate: type=$typegate1 addto=$sector gateid=$gid1 dstsecx=$sec2x dstsecy=$sec2y dstgateid=$gid2 x=$X y=$Y z=$Z
032 $tor2 = create gate: type=$typegate2 addto=$sector1 gateid=$gid2 dstsecx=$sec1x dstsecy=$sec1y dstgateid=$gid1 x=$X1 y=$Y1 z=$Z1
033 return null
Bitte beachten: Es können maximal 6 Tore ein einem Sektor platziert werden und es kann auch immer nur ein Tor mit der entsprechenden Richtungsangabe geben.
Alle benötigten Werte können von der Galaxiekarte entnommen werden. Das Script wandelt intern die Angaben in die benötigten Koordinaten um und erstellt dann zwei Tore in den angebenen Sektoren und verbindet diese miteinander.
Die Tore sind persistent. Sie bleiben auch nach einem Speichern des Spiels und Neuladen bestehen. Bei einem kompletten Neustart des Spiels muss das Script einmalig aufgerufen werden, um die Torverbindung zu erstellen.
Zuweisen von Resourcen zu Fabriken, mittels Maintype
Code: Alles auswählen
Script aa.test.maintype
Version: 0
for Script Engine Version: 45
Description
Description
Arguments
1: ware , Var/Ware , 'Ware auswählen'
Source Text
001 $object = get maintype of ware $ware
002 $stock = get number of subtypes of maintype $object
003 $i = 0
004 while $i < $stock
005 |inc $i =
006 |$product = get ware from maintype $object and subtype $i
007 |$station.array = get station array: product=$product include empty=[TRUE]
008 |$station.size = size of array $station.array
009 |while $station.size
010 ||dec $station.size =
011 ||$station = $station.array[$station.size]
012 ||skip if $station -> uses ware Kristalle as secondary resource
013 |||$station ->add second resource to factory: Kristalle
014 ||skip if $station -> uses ware Nostropöl as secondary resource
015 |||$station ->add second resource to factory: Nostropöl
016 ||skip if $station -> uses ware Computerkomponenten as secondary resource
017 |||$station ->add second resource to factory: Computerkomponenten
018 ||skip if $station -> uses ware Teladianium as secondary resource
019 |||$station ->add second resource to factory: Teladianium
020 ||skip if $station -> uses ware Mikrochips as secondary resource
021 |||$station ->add second resource to factory: Mikrochips
022 @ ||= wait 10 ms
023 |end
024 end
025 return null
So kann man zum Beispiel allen Raketenfabriken im Universum einen anderen oder erweiterten Satz an sekundären Resourcen verpassen.
Natürlich kann man das Ganze auch so anpassen, dass sich damit auch die primären Resourcen ändern lassen.
Das Script selbst fragt nach dem Start nur eine Ware der gewünschten Gruppte (Maintype) ab, wird dann die enthaltenen Subtypen ermitteln und jede KI-Fabrik in der Galaxie suchen und um die Einträge ab Zeile 012 ergänzen, die einen Subtyp des Maintypes als Produkt herstellt, solange diese Fabrik die angegebene sekundäre Resource nicht schon als sekundäre Resource benutzt (skip if...).
Warum man das machhen will?
Nun ja, man kann damit recht schnell einen sehr hohe Nachfrage an sonst nicht oder wenig benötigten Gütern erreichen und das Spiel ein wenig "lebensechter" gestalten. Denn eine Rakete besteht nun mal nicht nur aus Sprengkopf, Futter für die Produktionsmannschaften und Erz.
Update 3
Die eigene Reparatursoftware
Es ist ganz einfach nervig, wenn man sich mit dem Rep-Laser ins All hängt und beginnt Hüllenschäden zu reparieren. Bei GKS ist es defacto unmöglich auf diese Art Kosten zu sparen.
Aber mit ein wenig Aufwand kann man sich selbst eine käufliche Softwareerweiterung schaffen, die das dann übernimmt.
Reparaturscript
Code: Alles auswählen
Script aa.repair.ship
Version: 0
for Script Engine Version: 45
Description
Description
Arguments
Source Text
001 $maxhull = [THIS] -> get max hull
002 $curhull = [THIS] -> get hull
003 $i = $curhull
004 while $i < $maxhull
005 |inc $i =
006 |[THIS] ->set hull to $i
007 @ |= wait 5 ms
008 end
009 return null
Wie man sieht, ist es mit ganz wenig Aufwand möglich, eine lineare Reparatur erreichen. Das Script ermittelt die maximal mögliche Hülle, die derzeit vorhandene Resthülle und repariert solange, bis der Wert von maxhull (maximal mögliche Hülle) nicht mehr größer ist, als der wert von currhull (dynamischer Wert der jeweiligen Hüllenstärke seit Beginn der Reparatur).
Setup-Script
Code: Alles auswählen
Script setup.plugin.repsoft
Version: 0
for Script Engine Version: 45
Description
Reparatursoftware
Arguments
Source Text
001 $pageid = 7661
002 load text: id=$pageid
003 set global variable: name='Global.Repsoft.PageID' value=$pageid
004 $command = COMMAND_537_REP_SOFTWARE
005 $ware = Reparatursoftware
006 set script command upgrade: command=$command upgrade=$ware
007 global script map: set: key=$command, class=Bewegliches Schiff, race=Player, script='aa.repair.ship', prio=0
008 global script map: ignore: key=$command, class=Navigationssatellit, race=Player
009 global script map: ignore: key=$command, class=Erweiterter Satellit, race=Player
010 global script map: ignore: key=$command, class=Kampfdrohne, race=Player
011 global script map: ignore: key=$command, class=Frachtdrone, race=Player
012
013 * Reparatursoftware den argonischen ADs hinzufügen
014 $station.array = get station array: of race Argonen class/type=Argon Ausrüstungsdock
015 $station.size = size of array $station.array
016 while $station.size
017 |dec $station.size =
018 |$station = $station.array[$station.size]
019 |skip if $station -> uses ware Reparatursoftware as product
020 ||$station ->add product to factory or dock: Reparatursoftware
021 |= $station -> add 1 units of Reparatursoftware
022 end
023 return null
Ergänzung
Durch Nachfrage bin ich darauf aufmerksam gemacht worden, dass der angegebene Kommandoslot und die neue Ware nicht auffindbar sind.
Mein Fehler!
Ich hatte vergessen zu erwähnen, dass beim Schreiben des Setup-Scripts die Platzhalter eingesetzt werden sollten.
Für den Kommandoslot (Command_537_Rep_Software) ist das Command_Type_Special_37 und für die neue Ware (Reparatursoftware) der Eintrag SS_Ware_NEW11.
Sobald das Setup-Script zum ersten Mal gestartet wird, liest es die neuen Bezeichnungen aus dem T-File (7661) aus und ersetzt die Platzhalter. Ab dann stehen dann auch die Bezeichnungen so drin, wie sie im Listing vorhanden sind.
T-File und Definition der neuen Ware "Reparatursoftware"
T-File mit der Bezeichnung 7661-L049.xml
Code: Alles auswählen
<?xml version="1.0" encoding="UTF-8"?>
<language id="49">
<page id="7661" title="Reparatursoftware" descr="0">
</page>
<page id="2008" title="Script Object Commands" descr="">
<t id="537">COMMAND_537_REP_SOFTWARE</t>
</page>
<page id="2010" title="Script Cmd Names" descr="">
<t id="537">\033RErweiterung:\033X Reparatursoftware</t>
</page>
<page id="2011" title="Script Cmd Shorts" descr="">
<t id="537">RS</t>
</page>
<page id="2022" title="Command Info" descr="">
<t id="537">Neuartige Erweiterung auf Nanitenbasis zum Reparieren von Hüllenschäden</t>
</page>
<page id="17" title="Boardcomp. objects" descr="">
<t id="5853">Reparatursoftware</t>
<t id="5854">Diese Erweiterung ermöglicht eine stetige Hüllenreparatur auf Schiffen, auf
denen sie installiert ist.</t>
</page>
</language>
Anmerkung:
Code: Alles auswählen
\033RErweiterung:\033X Reparatursoftware
Somit steht dann im Kommandoslot folgendes:
Erweiterung: Reparatursoftware
Sie müssen nicht mitgeschrieben werden, dann bleibt halt alles weiß.
In der Onlinereferenz MSCI findert man eine komplette Liste aller möglichen Farbkodierungen.
Dieser Teil des Scripts wird nicht im SE erstellt, sondern einfach mit einem normalen Texteditor. Gespeichert wird die neue Datei dann im Ordner "t" der jeweiligen X-Installation (also bei TC im Ordner "t", bei AP im Ordner "addon/t"). Das Namensformat muss dabei jeweils in der Form <vierstellige ID>-L049.xml angegeben werden, wenn es sich um eine deutschsprachige Datei handelt. Beim Speichern auch bitte darauf achten, dass der Dateityp auf "alle" steht und die Kodierung im UTF-8-Format erfolgt.
Um mehrsprachige Versionen zu erzeugen, erstellt man die Datei mit den Einträgen in der jeweilig gewünschten Sprache und ändert den Zusatz L-<Landeskennung> in die jeweils gültige Landeskennung (internationale Telefonvorwahl des jeweiligen Landes [Deutsch=049, GB=044, Frankreich=033, usw.). So hat man dann eben mehrere Dateien mit der ID=7661, eben für die jeweilige Installationssprache des Spiels.
Im Egosoftforum, unter "unsignierte Erweiterungen" in Script-Forenteil (TC/AP) gibt es eine Liste mit freien und belegten Befehlsslots und verwendeten T-ID's. So kann man schon mal nachschauen, welche Slots verwendet werden und ob man diese Scripte bei sich installiert hat, und danach dann seine eigene Wahl treffen, um Inkompatibilitäten zu vermeiden.
Dasselbe gibt es, im gleichen Forumsteil/Thread, auch für die freien bzw. benutzten Erweiterungsslots (NEW_WARE[...]).
Somit hat man eine neue Softwareerweiterung, die man einmal kaufen muss, pro Schiff versteht sich, und die dann auf Wunsch anfängt die Hülle langsam aber sicher wieder zu reparieren.
Sodale, das soll es erstmal gewesen sein...
...ich hab zwar hier noch ein paar Schnipsel rumliegen, aber die sind so speziell auf bestimmte Probleme zugeschnitten (Aussetzen von Sats, Einsammeln von Sats, automatische Benennung von Schiffen, usw.) das ich sie hier nicht anbieten möchte.
Anhang A
Ich schiebe mal den Beitrag von Lucike zu den Befehlsbibliotheken hier in den Startpost. Sie sind hier bedeutend besser aufgehoben, als auf Seiten ypsen-tausend.
Die Bibliotheken gibt es hier zu Download.Lucike hat geschrieben: Ich würde gerne hier mal einige Elemente aus meiner Befehlsbibliothek vorstellen, da oft nach solchen Sachen hier gefragt wird. Hoffentlich ist dieses Thema dafür passend.
lib.le.equip.ship.upgrades
Schiff komplett mit Laderaum, Triebwerk, Ruderoptimierung und Schilde ausrüsten.
Arguments
1: Ship , Var/Ship , 'Ship'
$Ship = das auszurüstende Schiff
lib.le.equip.ship.weapons
Schiff komplett mit allen möglichen Waffen intelligent ausrüsten.
Arguments
1: Ship , Var/Ship , 'Ship'
$Ship = das auszurüstende Schiff
lib.le.choose.product
Produkt aus einer nach Warengruppen (Subtypes) sortierten Liste auswählen.
1: Title , Var/String , 'Title'
2: Description , Var/String , 'Description'
3: Array.Ware , Value , 'not Array.Ware'
$Titel = Menütitel
$Description = Menübeschreibung
$Array.Ware = Nicht auswählbare Waren
Das ist natürlich nur ein kleiner Teil der Bibliothek. Auf Wunsch könnte ich das noch komplettieren.
Gruß
Lucike
noch nen netten Tag
Taktkonform
Edit by Diemetius Thread gepinnt.