[TC]Taktkonforms Scriptschnipsel

Hier können Diskussionen rund ums scripten und modden zu X3 Terran Conflict und Albion Prelude geführt werden.

Moderator: Moderatoren

Benutzeravatar
boreas
Angehender Ausbilder
Beiträge: 596
Registriert: Di 02 Aug, 2011 10:51 am
Lieblings X-Titel:
Wohnort: irgendwo im WWW

Beitrag von boreas »

Hallo ich bins mal wieder

Gibt es einen script mit dem mann andere schiffe einfach in seinen besitz bringen kann? so ganz ohne entern oder system overide software?
wenn ja bitte ich darum mir diesen so schnell es geht zu übermitteln. vielen dank

mfg bores
Hausaufgaben sind wie GTA - Man hat ne Mission, aber macht doch was anderes
Benutzeravatar
Marvelous
Ausbilder
Beiträge: 725
Registriert: So 02 Jan, 2011 2:51 pm
Lieblings X-Titel:

Beitrag von Marvelous »

Noch nie von einem solchen gehört. Warum erscriptest du dir dann nicht einfach das Schiff?
Benutzeravatar
boreas
Angehender Ausbilder
Beiträge: 596
Registriert: Di 02 Aug, 2011 10:51 am
Lieblings X-Titel:
Wohnort: irgendwo im WWW

Beitrag von boreas »

Weil das der orca aus dem plot ist. ich habe schon 30 marines verloren und die neuen kommen nicht mal durch die hülle. ich versuch jetzt schon 2 ingame stunden das teil zu entern
Hausaufgaben sind wie GTA - Man hat ne Mission, aber macht doch was anderes
Benutzeravatar
ThanRo
Veteran Klasse 3
Beiträge: 1446
Registriert: Di 15 Mai, 2007 3:34 pm
Lieblings X-Titel:

Beitrag von ThanRo »

Ich hab mal einen kleinen Zweizeiler geschrieben. Das Teil nimmt zwei Argumente entgegen. Zuerst wählst Du das Objekt und danach den neuen Besitzer. Ist vielleicht nicht sehr elegant, aber es funktioniert wie es soll.

Code: Alles auswählen

Script a.a.cheat.ownship
Version: 0
for Script Engine Version: 44

Description
Description 
Arguments
1: objekt , Var/Ship/Station , 'Was soll übernommen werden?' 
2: owner , Var/Race , 'Neuer Besitzer?' 
Source Text

001   $objekt -> set owner race to $owner
002   return null
Dateianhänge
a.a.cheat.ownship.zip
(666 Bytes) 332-mal heruntergeladen
Benutzeravatar
boreas
Angehender Ausbilder
Beiträge: 596
Registriert: Di 02 Aug, 2011 10:51 am
Lieblings X-Titel:
Wohnort: irgendwo im WWW

Beitrag von boreas »

Vielen Dank dafür
ich werd ihn gleich ausprobieren
Hausaufgaben sind wie GTA - Man hat ne Mission, aber macht doch was anderes
Benutzeravatar
BlackbirdSR171
Schütze
Beiträge: 169
Registriert: So 05 Sep, 2010 11:10 am
Lieblings X-Titel:
Wohnort: Leitstern & Harmonische Ewigkeit

Beitrag von BlackbirdSR171 »

Könnte man theoretisch beim Stations erstellscript das auch so machen das es:
a: als kommando bei den slots auftaucht und
b: das man die Herstellprodukte erst beim erstellen auswählen kann?
Also jetzt nicht wie in dem Script, das man von vornhinein die Sachen festlegt, sondern das man dann gefragt wird, welche Produkte man dann haben möchte. Die Primär/Sekundär-Ressis sollen fest sein. Also wie in dem Script von Taktkonform.

Mir persönlich ist die Antwort zu b wichtiger, weil ich mal denke das a möglich sein wird.

Grüsse

Edit: Ich habs hinbekommen. Habe die Waren als Argumente festgelegt.
Edit2:Ich habs nun auf 3 Waren begrenzt.

Code: Alles auswählen

Script aa.create.player.station
Version: 0
for Script Engine Version: 44
Description
Station erstellen
Arguments

    1: Sector.Pos , Var/Sector Position , 'Wähle Sektor und Position'
    2: Station , Var/Station Type , 'Stationstyp wählen'
    3: Ware , Var/Ware , 'Ware auswählen'
    4: Ware2 , Var/Ware , 'Ware2 eingeben'
    5: Ware3 , Var/Ware , 'Ware3 wählen'
    6: Ware4 , Var/Ware , 'Ware4 wählen'
    7: Ware5 , Var/Ware , 'Ware5 wählen'
    8: Ware6 , Var/Ware , 'Ware6 wählen'
    9: Rasse , Var/Race , 'Rasse wählen'
    10: Name , String , 'Name eingeben'

Source Text

001   $pageID = get global variable: name='Global.Station.Create.PageID'
002   $X = $Sector.Pos[0]
003   $Y = $Sector.Pos[1]
004   $Z = $Sector.Pos[2]
005   $Sector = $Sector.Pos[3]
006   $stat =  create station: type=$Station owner=$Rasse addto=$Sector x=$X y=$Y z=$Z
007   $stat -> set name to $Name
008   $stat -> add primary resource to factory: Energiezellen
009   $stat -> add primary resource to factory: Cahoona Fleischblöcke
010   $stat -> add primary resource to factory: Erz
011   $stat -> add product to factory or dock: $Ware
012   $stat -> add product to factory or dock: $Ware2
013   $stat -> add product to factory or dock: $Ware3
014   $stat -> add product to factory or dock: $Ware4
015   $Ware5 -> add product to factory or dock: $Ware5
016   $Ware6 -> add product to factory or dock: $Ware
017   $stat -> factory production task: on=1
018   $tmp = $stat -> install 5 units of 2 GJ Schild
019   return null
Zuletzt geändert von BlackbirdSR171 am Mo 21 Nov, 2011 6:02 pm, insgesamt 2-mal geändert.
Sprungantrieb wird geladen... 10%... 20... 30... 40... 50%... 60... 70... 80... 90... eingehende Nachricht
Erreiche System... Autopilot deaktiviert :lool:

Hyperion Angreifer mit 236,7 m/s erhalten :cool:
lol, von Feind von Menelaus auf Wächter der Königin in einer Mission
Benutzeravatar
Marvelous
Ausbilder
Beiträge: 725
Registriert: So 02 Jan, 2011 2:51 pm
Lieblings X-Titel:

Beitrag von Marvelous »

a. definitiv ja, das ist wohl aber ein bisschen mehr Arbeit an scripten und zusätzlich wohl noch einer t-file um das zu bewerkstelligen.
(Selber noch nicht getestet, aber darüber im egosoft Forum und in den Scripts von Lucike etwas eingelesen)
b. Es gibt einerseits den Befehl "add default wares to station dock" mit dem man halt "normale" Fabriken aufbauen kann.....
Dass man die Produkte beim script starten selbst auswählen kann, geht doch ganz einfach über die Argumente. Allerdings müsstest du zugegbener Maßen dann schon vorher wissen wie viele Produkte und Ressourcen du der Fabrik hinzufügen möchtest.

Anders geht es wohl nicht, es sei denn man kann argumente auch als Array definieren oder die Benutzereingabe irgendwie rekursiv gestalten. Beides ist mir aber noch nicht untergekommen.

Alternativ: man kann natürlich auch Produkte zu einer bestehenden Fabriken hinzufügen/entfernen...
Benutzeravatar
BlackbirdSR171
Schütze
Beiträge: 169
Registriert: So 05 Sep, 2010 11:10 am
Lieblings X-Titel:
Wohnort: Leitstern & Harmonische Ewigkeit

Beitrag von BlackbirdSR171 »

Juhu, ich bin ein Scripter. :mrgreen:
Ich bin fertig, inklusive des Kommandoslots. :-D
jetzt brauche ich dann nicht mehr in den SE rein, wenn ich mir ne massgeschneiderte Station bauen will.
Danke an Marvelous und an Taktkonform, die mir mit ihrem Schiffs-Cheat die Vorlage gegeben hat.

Grüsse

Edit: Mit dem Script kann man jede Ware die man will produzieren lassen.
Ich habe den Kommandoslot 1256 und als Textfile 7374 verwendet.
Edit2:Man kann damit 3 Produkte einstellen, die hergestellt werden können.
Dateianhänge
Stationerstellen.rar
(2.65 KiB) 320-mal heruntergeladen
Sprungantrieb wird geladen... 10%... 20... 30... 40... 50%... 60... 70... 80... 90... eingehende Nachricht
Erreiche System... Autopilot deaktiviert :lool:

Hyperion Angreifer mit 236,7 m/s erhalten :cool:
lol, von Feind von Menelaus auf Wächter der Königin in einer Mission
Benutzeravatar
Taktkonform
Feldwebel
Beiträge: 3119
Registriert: Di 24 Jun, 2008 4:28 pm
Lieblings X-Titel:
Wohnort: Saxonia

Beitrag von Taktkonform »

Ja, nicht schlecht. :yeah:

Die Sache mit den Argumenten hat nur einen Haken, es gehen leider nur 9.
Um die Zuweisung einfacher zu machen, kannst Du ja auch einen Array, bzw. drei Array benutzen...
...etwa in der Form:

Code: Alles auswählen

$stack =  array alloc: size=0
007   append $ware1 to array $stack
008   append $ware2  to array $stack
009   append $ware3 to array $stack
010   append $ware4 to array $stack
011  ...   
029   $i =  size of array $stack
030   while $i
031   |dec $i = 
032   |$ware = $stack[$i]
034   ||$stat -> add primary resource to factory or dock: $ware
035  ... 
036 @ |= wait 5 ms
037   end
Ich hab' da auch wieder ein paar nette Sachen:

Zuweisung von zusätzlichen Sekundärresourcen zu bestehenden KI-Stationen

Mich hat es manchmal geärgert, das viele Hightec-Fabriken so gut wie keine Resourcen brauchten. Zum Beispiel die Fabriken für zielsuchende Raketen...
....wie finden die ihr Ziel ohne Elektronik? Sitzt da ein Kamikaze-Pilot in Form eines Zwerges drin?
Daher habe ich mir einfach ein kleines Script geschrieben, dass eben genau dieses Problem aus der Welt schafft. ;)

Code: Alles auswählen

001   $station.array =  get station array: product=[Produkt] include empty=[TRUE]
002   $station.size =  size of array $station.array
003   while $station.size
004   |dec $station.size = 
005   |$station = $station.array[$station.size]
006   |skip if $station -> uses ware [Zusätzliche Resource] as secondary resource
007   ||$station -> add second resource to factory: [Zusätzliche Resource]
008   ...
016   end
017   return null
Das Script ist beliebig erweiterbar, die drei Punkte in Zeile 008 sollen nur anzeigen, das es da weitergehen kann, indem man einfach Zeilen 006 und 007 kopiert und eine andere Resource einträgt.

AD mit neuen Waren versehen

Mir ist in TC aufgefallen, das alle Völker fast alle Waren herstellen können, aber ihre AD nicht alle Waren handeln. Hmmpf...
...was soll das denn nun wieder? Und, für manche Fabriken gibt es gar keine Abnehmer...
...daher das folgende kleine Script. ;)

Code: Alles auswählen

Script aa.add.ware.to.dock
Version: 0
for Script Engine Version: 44
Description
Description
Arguments

    1: race , Var/Race , 'Rasse angeben'

Source Text

001   $station.array =  get station array: of race $race class/type=Ausrüstungsdock
002   $station.size =  size of array $station.array
003   while $station.size
004   |dec $station.size = 
005   |$station = $station.array[$station.size]
006   |skip if $station -> uses ware Hurrikan-Rakete as product
007   ||$station -> add product to factory or dock: Hurrikan-Rakete
008   ....
014   end
015   return null
Auch hier stehen die drei Punkte in Zeile 8 wieder für die Erweiterbarkeit des Scriptes, indem man einfach die Zeilen 006 und 007 kopiert und mit anderen Waren versieht.

Das Script sucht nach Docks der angegebenen Rasse und wird die angegebenen Waren diesen Docks hinzufügen. So sind dann die Waren an allen AD's der Rasse verfügbar. Sie werden jedoch nicht automatisch aufgefüllt, sondern müssen erst zu dem AD geliefert werden. Das erledigt sowohl die KI, wie auch eure eigenen Schiffe.

Benutzerdefinierte Werft

In TC gibt es meines Wissens nach noch kein Script, das vergleichbar wäre mit dem Schiffs- und Stationsscript aus Reunion.

Will man nun aber dennoch eine "eigene" Schiffswerft haben, die wiederum nur ganz bestimmte Schiffe handelt, dann kann man das in folgender Weise machen:

Code: Alles auswählen

Script aa.test.player.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=Argonen Argon Schiffswerft owner=Argonen addto=$Sector x=$X y=$Y z=$Z
006   $ships =  array alloc: size=0
007   append Amphytrion to array $ships
008   append Arion Frachter to array $ships
009   append Artemis Trägerklasse to array $ships
010   append Cheiron to array $ships
011   append Cyamos to array $ships
012   append EA Aurora Starfury to array $ships
013   append Föderation Typ-6 Shuttle to array $ships
014   append Galaxy to array $ships
015   append Gryphos to array $ships
016   append Kalliope to array $ships
017   append Leviathan Fortress to array $ships
018   append Novum Klasse Aufklärer to array $ships
019   append Pasiphae Verteidiger to array $ships
020   append Rhea to array $ships
021   append Sartyr to array $ships
022   append Talos Superfrachter XL to array $ships
023   append Tarsus Aufklärer to array $ships
024   append Theia Verteidiger to array $ships
025   append Vesta to array $ships
026   append Xanthos Verteidiger to array $ships
027   append Cetus MK II to array $ships
028   
029   $i =  size of array $ships
030   while $i
031   |dec $i = 
032   |$ware = $ships[$i]
033   |skip if $ware -> is of class Geschützturm
034   ||$station -> add product to factory or dock: $ware
035   |= $station -> add 1 units of $ware
036 @ |= wait 5 ms
037   end
038   $station -> factory production task: on=[TRUE]
039   = $station -> install 10 units of 2 GJ Schild
040   $station -> set name to 'Antigone Corporation Schiffswerft Trügerische Himmel'
041   return null
Das Script erstellt eine Schiffswerft der angegebenen Rasse und übergibt sie auch dieser Rasse. Der erstellten Schiffswerft werden dann die im Array vorhandenen Schiffe hinzugefügt und handelbar gemacht. So kann man seinen Konzern im eigenen Sektor auch eine Schiffswerft anbieten, die nur Schiffe handelt, die wiederum von euch ausgewählt werden. Natürlich müsst ihr die Schiffe kaufen...
...wir wollen doch nicht cheaten. ;)

Nicht über die seltsamen Schiffsnamen wundern...
...sind alles XSP - Schiffe, die ich mir entsprechend angepasst habe. ;)

ATF-Schiffswerft

Das folgende Script hab' ich mal zu Testzwecken benutzt, als ich mir die Get-Befehle beigebracht habe.^^
Aber das immer wieder mal die Frage auftaucht, wie man an ATF-Schiffe kommt...
...nuja so gehts auch:

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=Goner Schiffswerft owner=Goner addto=$Sector x=$X y=$Y z=$Z
006   $ships =  get ship type array: maker race=ATF class=Bewegliches Schiff
007   $i =  size of array $ships
008   while $i
009   |dec $i = 
010   |$ware = $ships[$i]
011   |skip if $ware -> is of class Spezialschiff
012   ||$station -> add product to factory or dock: $ware
013   |= $station -> add 1 units of $ware
014 @ |= wait 5 ms
015   end
016   $station -> factory production task: on=[TRUE]
017   = $station -> install 10 units of 2 GJ Schild
018   $station -> set name to [Name der Werft]
019   return null
Sodale, das Script erstellt eine Werft der angegebenen Rasse, hier die Goner (jaja, war halt nur ein Joke...), im angegebenen Sektor, an der angegebenen Position und fügt alle Schiffe vom Typ bewegliche Schiffe, die der Rasse ATF zugeordnet sind und keine Spezialschiffe sind, hinzu.

Das funktioniert auch mit allen anderen Rassen, allerdings sollte man dann die skip if-Befehlsketten auf Kampfdrohnen, Geschütztürme, Spezialschiffe und Satelliten ausdehnen.
Ansonsten findet man da auch Sachen wie "undefinied freighter" oder Frachtdrohnen an der Werft. ;)

noch nen netten Tag
Taktkonform
Komm wir essen Oma - Satzzeichen können Leben retten!
Benutzeravatar
BlackbirdSR171
Schütze
Beiträge: 169
Registriert: So 05 Sep, 2010 11:10 am
Lieblings X-Titel:
Wohnort: Leitstern & Harmonische Ewigkeit

Beitrag von BlackbirdSR171 »

Taktkonform hat geschrieben:Ja, nicht schlecht. :yeah:

Die Sache mit den Argumenten hat nur einen Haken, es gehen leider nur 9.
Sry, aber ich glaube da haste dich verzählt. :-D Die Argumente gehen doch bis 10 oder habe ich da was verpasst?
Und wenn ich da noch bissl weiter dran rumbastle, dann wirds auch nich mit Primär/Sekundarressourcen auswählen was.

Eine Frage hätte ich da noch: Wie kann ich das einrichten, das wenn ich mit dem jetzigen Script aber nur 2 Produkte anstelle der 3 haben will? Über die Arrays?
Wenn ich den Script über den SE starte, fragt er dann nach null oder select ware. Wie bekomme ich es hin das er das auch über die Kommandokonsole macht?
Und bevor du jatzt damit ankommst liebe Takt, ich weiss das es dann doch 3 Fragen wurden. :mrgreen:

Ich hoffe das du mir nicht böse bist, das ich deinen Schiffs-Cheat als vorlage missbraucht habe. ;-)

Grüsse
Sprungantrieb wird geladen... 10%... 20... 30... 40... 50%... 60... 70... 80... 90... eingehende Nachricht
Erreiche System... Autopilot deaktiviert :lool:

Hyperion Angreifer mit 236,7 m/s erhalten :cool:
lol, von Feind von Menelaus auf Wächter der Königin in einer Mission
Benutzeravatar
Taktkonform
Feldwebel
Beiträge: 3119
Registriert: Di 24 Jun, 2008 4:28 pm
Lieblings X-Titel:
Wohnort: Saxonia

Beitrag von Taktkonform »

Ja hast Recht, es sind 10...
...schon blöd, wenn man ständig nur von 0 bis 9 zählt und tatsächlich der Meinung ist, das man dann nur 9 Werte hat. *blöd

Ähm, zu Deiner Frage:

NULL ist null, nichts, nada, nem usw..
Demzufolge müßte ein NULL-Eingabe im Argument auch NULL in der Ausgabe erzeugen, also keine Ware deklarieren.

Ich habe es noch nicht ausprobiert, bin mir aber ziemlich sicher, dass dies funktionieren sollte.

Mal was ganz anderes...
...bezüglich der Fabrikerstellung:

Man könnte das doch auch über die Objektklassen lösen, also direkt von vorhanden Stationen die Objektklassen auslesen, als Grundgerüst für neue Fabriken verwenden (macht die Angabe der Primär- und Sekundäressourcen überflüssig) und nur noch die Produktpalette bestimmen.
Die Idee stammt nicht von mir, Trickmov macht das in etwa so in seinem STO-Script. Er kopiert einfach bestehende Fabriken und fügt sie im Spielersektor wieder ein.
Die einzige kleine Änderung wäre dann eben die argumentsbezogene Angabe der Endprodukte.

Hmmm...
....werd' ich mal ausprobieren.

noch nen netten Tag
Taktkonform
Komm wir essen Oma - Satzzeichen können Leben retten!
Raumtraktor
Anfänger
Beiträge: 31
Registriert: Sa 28 Nov, 2009 6:38 pm
Lieblings X-Titel:
Kontaktdaten:

Beitrag von Raumtraktor »

Hallo Taktkonform,

Hallo community,

Also ich spiele X3TC seit ca 2 Jahren.
Habe einige script installiert von Lucike.
Außerdem das Script Hauptquartier und mini mod.

So weit , so gut.
Das script minimod 2.1 upgedatet von 1.6 macht mir etwas
Ärger da ich, entweder in Saturn oder in Mars und Mond
eine leere Schiffswerft vorfinde.

Seit ich auf dieses Thema hier gestoßen bin habe ich nun
meinen Spielstand gespeichert meinen t,script ordner gesichert
das Spiel neu installiert und ein neues Spiel angefangen
um den SE auszuprobieren und zu lernen.

Habe mich jetzt so 2 Wochen mit dem SE intensiv geschäftigt,
hier viel gelesen von Taktkonform und heretic ohne deren
Artikel und Beschreibungen ich nicht in die Lage versetzt
worden wäre auch nur eine Zeile zu scripten.


Ansehen erhöhen, Geld überweisen funktioniert.

Code: Alles auswählen

Script Rufaenderung.bei.Rassen.
Version: 0
for Script Engine Version: 44
Description
Description Verbesserung des Wirtschaftsranges bei Rasse
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

Code: Alles auswählen

Script aa.spieler.credits.ueberweisen
Version: 0
for Script Engine Version: 44
Description
Description
Arguments

    1: credits , Nummer , 'wieviel darf es sein'

Source Text

001   add money to player: $credits
002   return null
Auch die Station zur Produktion von Poltergeist und Gespenst Raketen arbeitet prima.
Läßt sich auch in einen Komplex einfügen.
Was nicht funktioniert wenn man als Station Gespenstraketenfabrik wählt.

Sieht so aus:

Code: Alles auswählen

Script a.test.station.
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 , 'Name 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=Terraner Raketenfabrik Poltergeist owner=$race addto=$Sector x=$X y=$Y z=$Z
006   $stat -> add primary resource to factory: Energiezellen
007   $stat -> add primary resource to factory: Terranische EPA 
008   $stat -> add primary resource to factory: Kristalle
009   $stat -> add second resource to factory: M/AM-Gefechtskopf
010   $stat -> add product to factory or dock: Gespenst-Rakete
011   $stat -> add product to factory or dock: Poltergeist-Rakete
012   $stat -> station trade and production tasks: on=1
013   $tmp = $stat -> install 5 units of 2 GJ Schild
014   return null

[highlight=red]So jetzt kommt das woran ich mir die Zähne ausbeisse.[/highlight]

Also ich würde gerne die Möglichkeit haben eine einfache,
beliebige Standardfabrik aufzustellen an der man normal
Handel betreiben kann die aber nicht nur von mir sondern
auch durch den KI versorgt wird.
Klar das Sie dann nicht dem Spieler zugewiesen sein darf.
Wenn Spieler ausgewählt ist sollte sie so arbeiten als wenn
ich Sie regulär in einer Schiffswerft gekauft hätte.
Muß aber nicht sein.

Sieht so aus:

Code: Alles auswählen

Script aaa.variable.standard.station
Version: 0
for Script Engine Version: 44
Description
Description frei wählbare normale Station
Arguments

    1: sector.pos , Var/Sector Position , ' Sektor und Position wählen'
    2: Stationstyp , Var/Station Type , 'Stationstyp wählen'
    3: owner , Var/Race , 'Besitzer 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=$owner addto=$Sector x=$x y=$y z=$z
006   $station -> add default wares to station/dock
007   $station -> station trade and production tasks: on=[TRUE]
008   $station = [DOCKEDAT] -> get tradeable ware array from station
009   return null
Ein z.B.:aufgestelltes Sonnenkraftwerk arbeitet schon mal ganz brav, wenn ich Kristalle liefere.
Zeigt auch an wieviel Resourcen sie hat und wieviel sie maximal speichern kann.

Nur die Teladi ,die faulen profitgierigen Hunde, denken nicht dran sich um Ihre geschenkte Station zu kümmern.

Einziger Trost , sobald ich 300 Kristalle abgeliefert habe werde ich im Handelsrang befördert . Hmmm ist ja auch schon was .

Welche Funktion habe ich vergessen?



So nun zu meinem 2.Sorgenkind, die variable Schiffswerft.

Also habe alles mögliche versucht aber Sie bleibt leer.
Egal welcher Besitzer egal welcher Schiffsproduzent. egal wo aufgestellt.
Ob ich im Sektor bin oder nicht.

Die Schiffswerft denkt nicht dran mir auch nur einen klitzeklitzekleinen Jäger zum Kauf anzubieten.

Sieht jetzt so aus.

Code: Alles auswählen

Description variable Schiffswerft
Arguments

    1: sector.pos , Var/Sector Position , 'Sektor und Position wählen'
    2: Schiffswerft , Var/Station Type , 'Schiffswerft -Typ wählen'
    3: owner , Var/Race , 'Besitzer wählen'
    4: race , Var/Race , 'Hersteller 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=$Schiffswerft owner=$owner addto=$Sector x=$X y=$Y z=$Z
006   $ships =  get ship type array: maker race=$race class=Bewegliches Schiff
007   $i =  size of array $ships
008   while $i
009   |dec $i = 
010   |$ships = $ware[$i]
011   |$station -> add product to factory or dock: $ware
012   |$i = $station -> add 1 units of $ware
013 @ |$i = wait 5 ms
014   end
015   $station -> factory production task: on=[TRUE]
016   $tmp = $station -> install 10 units of 2 GJ Schild
017   return null

Der SE baut die Werft auf man kann auch andocken,Sie gehört dem gewählten Besitzer , die Sprecherin sagt auch brav Ihr Sätzchen auf, nur keine Schiffe.

Beim ansehen der while Schleife knackt mir allerdings so
ein klein wenig der Kopf auseinander.

Nach dem "while=$i .... " bleiben bei mir Pünktchen stehen.
Gut habe mir andere Scripte angesehen dort ist es genauso,heißt da kommt noch was ,richtig?

Das no return Value wird nicht angeboten zum Einfügen,
oder ich habe die falsche Funktion erwischt.

Als was ist die Variable "i" deklariert?
Sollten alle Schiffe der gewählten Rasse sein oder ?

Auch "ware" ist nicht deklariert,

Muß das vielleicht in Zeile 10: $ware=$ships.
Also ich komm leider nicht drauf was ich Dünnbrettbohrer
falsch gemacht habe.

Vielleicht hilft mir jemand auf die Sprünge.


Wenn ich das alles so zu meiner Zufriedenheit hinbekomme, möchte ich versuchen meinen original Spielstand wieder in das neuinstallierte Spiel zu laden.
Vorher natürlich den neuen Übungsspielstand sichern.

Die entsprechenden Skripte wieder einfügen, bis auf minimod.

Anschließend das was ich gerne hätte als eigenes script hinzufügen.

Versuch ist es wert.

Mit freundlichen Grüßen

Raumtraktor
Benutzeravatar
Marvelous
Ausbilder
Beiträge: 725
Registriert: So 02 Jan, 2011 2:51 pm
Lieblings X-Titel:

Beitrag von Marvelous »

Ich würde mir diese beiden Zeilen nochmals näher anschauen und mir überlegen was genau daran falsch sein könnte ;) :
012 |$i = $station -> add 1 units of $ware
013 @ |$i = wait 5 ms

auch die Zeilen
006 $ships = get ship type array: maker race=$race class=Bewegliches Schiff
010 |$ships = $ware[$i]
sind nicht ganz richtig.

Erklärung:
1. i ist deine Laufvariable die herunterzählen soll, in Zeile 12 und 13 weist du dieser aber ganz verschiedene Dinge zu --> Die while Schleife wird schonmal nicht funktionieren!!

2. In Zeile 6 weist du $ships ein array der Schiffstypen zu, in Zeile 10 überschreibst du es wieder aber mit einer nicht vorhandenen variable/array.
Lösung: Korrektur : $ships und $ware in Zeile 010 austauschen
Benutzeravatar
Taktkonform
Feldwebel
Beiträge: 3119
Registriert: Di 24 Jun, 2008 4:28 pm
Lieblings X-Titel:
Wohnort: Saxonia

Beitrag von Taktkonform »

Marvelous hat Recht, Dein Fehler steckt in Zeile 12. Dort beginnst Du die Zeile mit dem Zählwert ($i), der dort nix verloren hat. Das was Du da vor Dir hast, ist eine verschachtelte Anweisung. Die Zeile 12 beginnt mit <no returnvalue>, den die Bedingung warum diese Zeile ausgeführt werden soll, steht in Zeile 7. Komisch, eine Zeile weiter oben machst Du es richtig.^^ Flüchtigkeitsfehler...

Und, in Zeile 10 hast Du einfach nur die Variablen verdreht.^^

Und, $ware ist definiert. $ware ist die Übergabevariable, die den aktuell gültigen Eintrag (je nach Fortschritt des Zählers $i) aus dem Array $ships an das Script übergibt. Man darf die beiden Sachen eben nur nicht verdrehen.^^

Zu Deinem Fabrikproblem:

Wenn ich Dich richtig verstanden habe, dann hast Du ein SKW erstellt und es den Teladi geschenkt. Nun möchtest Du aber, dass die Teladi es gefälligst auch mit Sekundärresourcen versorgen?

Tja, wirste nicht hinbekommen...
...Sekundärresourcen sind einzig und allein Sache des Spielers. Die KI kümmert sich nicht darum, bzw. nur äußerst selten.

Auch die Versorgung mit Primärresourcen kann eine Weile dauern, klappt aber dann ohne Dein Zutun auch bei erstellten Fabriken einwandfrei, dauert halt alles ein wenig länger bei der lieben KI.

Noch ne Frage: Was bezweckst Du mit Zeile 08 in Deinem Stationsscript, dass der selbst erstellten Station?
Iwie ergibt das keinen Sinn, einen Arraywert auszulesen, der nirgendwo verwendet wird und auch noch gleich lautet wie die Variable, mit der Du die Station an sich erstellst. *wunder

Und, dass die Station keine Schilde hat, das ist wohl gewollt?

@Gespensterfabrik:

Soweit ich weiß, lassen sich terranische Fabriken nicht in Komplexe einbinden. Allerdings habe ich es noch nie probiert.

noch nen netten Tag
Taktkonform
Komm wir essen Oma - Satzzeichen können Leben retten!
Raumtraktor
Anfänger
Beiträge: 31
Registriert: Sa 28 Nov, 2009 6:38 pm
Lieblings X-Titel:
Kontaktdaten:

Beitrag von Raumtraktor »

Danke Euch beiden,
so schnell hatte ich nicht mit einer Antwort gerechnet.

War aber in der kurzen Zwischenzeit nicht untätig und habe mir mal das Script der Schiffswerft mit der append $ships Funktion, etwas weiter oben
hier ,vorgenommen und ein neues script geschrieben.

Und siehe da , dort funktioniert es .

Auch die while schleife.

Code: Alles auswählen

Script aaa.shipyard.appendships
Version: 0
for Script Engine Version: 44
Description
Description Schiffswerft mit ausgewaehlten Schiffen
Arguments

    1: sector.pos , Var/Sector Position , 'Sektor und Position waehlen'

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=Split Split Schiffswerft owner=Split addto=$Sector x=$X y=$Y z=$Z
006   $ships =  array alloc: size=0
007   append Akuma to array $ships
008   append Aran to array $ships
009   append Atmosphärentransporter to array $ships
010   append Auster Frachter to array $ships
011   append Blitz to array $ships
012   append Eklipse Prototyp to array $ships
013   append Chokaro to array $ships
014   append Hyperion Angreifer to array $ships
015   append Osaka to array $ships
016   append Walhalla to array $ships
017   append Wotan to array $ships
018   append Todesklaue Prototyp to array $ships
019   append Tyr to array $ships
020   append Xperimental to array $ships
021   append Ägir to array $ships
022   append Schwarmkönigin to array $ships
023   append Kaiman Frachter to array $ships
024   append Kaiman Superfrachter XL to array $ships
025   append Mistral to array $ships
026   append Mistral Superfrachter to array $ships
027   $i =  size of array $ships
028   while $i
029   |dec $i = 
030   |$ware = $ships[$i]
031   |skip if $ware -> is of class Geschützturm
032   ||$station -> add product to factory or dock: $ware
033   |= $station -> add 1 units of $ware
034 @ |= wait 5 ms
035   end
036   $station -> factory production task: on=[TRUE]
037   = $station -> install 10 units of 2 GJ Schild
038   $station -> set name to 'Chaos AG Shipyard'
039   return null
Die ja dafür sorgt das man keine anderen Objekte in der Schiffswerft hat.
Denke jetzt hab ich es einigermaßen begriffen.
Da das jetzt funktioniert werde ich dank dieses scripts und Euerer Hilfe auch das andere script noch zum laufen bekommen.

Dann ist es meiner Phantasie überlassen was ich daraus mache. :-D

OK, die Schwarmkönigin schmeiß ich wieder raus ;)

Und mit meiner Standard-Station war ich wohl zu ungeduldig .

Habe Schiffe gewählt die ich noch nicht kenne oder noch nicht mal von gehört hatte.

Na so eine Walhalla ist schon ein mächtiger Klopfer und die Akuma hatte ich schon gesehen in einem Piratensektor.

Dachte damals Mann, die entern, Blaupause, bauen freuen , das wärs.

jetzt kann ich Sie einfach kaufen,ausprobieren, einfach klasse.

MMhh ,

Wenn ich die scripte die ich mir nun ,Dank Euerer geduldigen und kompetenten Hilfe, mühsam erarbeitet habe in mein eigentliches Spiel einbinde, werde ich mich wohl noch mit den t-files beschäftigen müssen.
Um, wie ich gelesen habe, Sie auch permanent drinnen zu haben.

Also nochmal vielen Dank für diese Themenseite und Euere aufopferungsvolle,hilfreiche Arbeit.


Grüße

Raumtraktor
Zuletzt geändert von Raumtraktor am Do 01 Dez, 2011 12:31 am, insgesamt 1-mal geändert.
Antworten