Neue Fabriken ins Spiel einfügen? Vorhandene ändern?

Hier ist der ideale Ort um über Scripts und Mods für X³: Terran Conflict und X³: Albion Prelude zu diskutieren.

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

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

Post by UniTrader »

@LordMorpheus
soweit richtig, genau das wollte ich für die Kommandoslot-Methode auch schreiben ;)

nur eine klitzekleine verbesserung: du kannst [THIS] überall wo lesend zugegriffen wird anstelle einer Variablen einsetzen ;)

und zu deinem Problem: ich würde das Script so erweitern: (erst die Produktion stoppen, dann das Produkt entfernen und zuletzt das eigentliche Produkt hinzufügen, den Preis auf durchschnitt setzen (evtl. nicht mehr nötig) sowie die Produktion wieder starten (==Zykluszeit und Warenverbrauch neu berechnen iirc)
Lord Morpheus wrote:

Code: Select all

if [THIS] -> is of type {Terraner Raketenfabrik Glühwürmchen}
* Fabrik stoppen + falsche Produkte entfernen
| [THIS] -> factory production task: on=[FALSE]
| $Product = [THIS] -> get product ware 
| [THIS] -> remove product to factory or dock: $Product
* ----------------------------------------------------------------
* richtige Produkte einfügen, preise setzen und Produktion wieder starten
| [THIS] -> add product to factory or dock: {Glühwürmchen Rakete}
| $Price.av = get average price of ware {Glühwürmchen Rakete}
| [THIS] -> set price of ware {Glühwürmchen Rakete} to $Price.av Cr 
| [THIS] -> factory production task: on=[TRUE]
end

return null
wenn das nicht klappt hab ich noch nen plan B.. aber es sollte theorhesisch funktionieren ;) (wenn nicht solltest du die RelVal in der TMissiles überprüfen, denn die bestimmt Zykluszeit + Warenverbrauch)
Lord Morpheus
Posts: 764
Joined: Thu, 15. Dec 05, 21:27
x3tc

Post by Lord Morpheus »

Danke erstmal für die Mühe. ;)

Dein Script behebt auf jeden Fall weitere Probleme, aber funktionieren tut es leider immer noch nicht.
So ist das Produkt "Unbekanntes Objekt" nun weg und es steht nur noch das richtige Produkt in den Einstellungen. Auch der Durchschnittspreis wird nun richtig gesetzt.
Aber der Produktzyklus sagt immer noch 1 Sekunde. Anzahl Produkte steht auf 0 und die Kostenberechnung des Produkts funktioniert nicht.
Auch produziert die Fabrik nichts selbst wenn alle Ressourcen vorhanden sind.

Das sind die Werte der TMissiles für die Glühwürmchen:
Relative Value : 12
Price Modifier 1: 25
Price Modifier 2: 1
Relative Value (Player): 4

Sind genau die doppelten Kosten einer Moskito.
UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader »

was hat die Station nochmal genau für Ressourcen?
Lord Morpheus
Posts: 764
Joined: Thu, 15. Dec 05, 21:27
x3tc

Post by Lord Morpheus »

Das wären Energiezellen, Terranische EPA und Erz als Primäre Ressourcen.
UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader »

wenn diese EPA die Terranische L2-Nahrung sind sollte das eigentlich funktionieren :wtf: die Produktion ist definitiv gestartet oder? ([THIS] -> factory production task: on=[TRUE] )
Lord Morpheus
Posts: 764
Joined: Thu, 15. Dec 05, 21:27
x3tc

Post by Lord Morpheus »

Das Script sieht so aus:

Code: Select all

if [THIS]->is of type {Terraner Raketenfabrik Glühwürmchen}
  * Fabrik stoppen + falsche Produkte entfernen
  [THIS]->factory production task: on=[FALSE]
  $Product = [THIS]->get product ware
  [THIS]->remove product from factory or dock: $Product
  * ----------------------------------------------------------------
  * richtige Produkte einfügen, preise setzen und Produktion wieder starten
  [THIS]->add product to factory or dock: {Glühwürmchen Rakete}
  $Price.av = get average price of ware {Glühwürmchen Rakete}
  [THIS]->set price of ware {Glühwürmchen Rakete} to $Price.av Cr
  [THIS]->factory production task: on=[TRUE]
end
 
return null
Habe ich also direkt von dir übernommen. Noch zur Sache die Fabrik wurde an einer SW gekauft und dann per TL aufgestellt. Terranische EPA sind die L2 Nahrungsmittel der Terraner also die Ressourcen sind korrekt.
UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader »

an dieser stelle weiss ich jetzt wirklich nicht weiter... wie sieht es aus, wenn du die Station manuell erstellst?

$station = create station: type={Terraner Raketenfabrik Glühwürmchen} race=Player sector=Argon Prime …………
$Station -> add product to factory or dock: {Glühwürmchen Rakete}
$Station -> add primary Ressource: Energiezellen
$Station -> add primary Ressource: EPA
$Station -> add primary ressource: Erz
$Station -> factory production task: on=[TRUE]


PS eine idee hab ich noch: auf welchen Wert hast du den Production multiplier in der TFactories eingestellt?
Lord Morpheus
Posts: 764
Joined: Thu, 15. Dec 05, 21:27
x3tc

Post by Lord Morpheus »

So habe die Station nun manuell erstellt. Wobei du mir ne fiese Falle eingebaut hast. Die Variable &station ist nämlich ungleich der Variable $Station :D

Ergebnis funktioniert die Station hat ihre Waren und produziert einwandfrei. Nur Schilde hat sie nicht. Wobei man das ja sicher per Script beheben kann.

Frage ist jetzt nur warum das so ist und ob man es irgendwie hin bekommt, das aus dem TL gebaute Stationen richtig funktionieren.

In der TFactories meinst du bestimmt den Wert Factory Size. Der Steht auf Normal also S ;)

Dabei hab ich nochmal eine Frage. Was bestimmt eigentlich wieviel Schilde eine Station bekommt? Ich meine wenn ich sie normal aus einem TL aufstelle. So einen Wert gibt es in der TFactories nicht. Wie wird das geregelt?
UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader »

es ging mir bei diesem Test nur darum, einzugrenzen woran es liegen kann (falls es nicht geklappt hätte wären die types/ einer prüfung zu unterziehen, aber da es klappt muss der Fehler eher im Spiel selber bzw. beim Erzeugen der Station via TL liegen...)
---------------------------
probiere mal folgenden eher drastischen Ansatz, um die Station mit Gütern auszustatten (nur zum Test, nicht für den Produktiveinsatz gedacht..):

if [THIS]->is of type {Terraner Raketenfabrik Glühwürmchen}
* Fabrik stoppen + alle Waren entfernen
[THIS]->factory production task: on=[FALSE]
$Ware.arr = [THIS]-> get tradeable ware array from station
$Ware.size = size of Array $Ware.arr
while $Ware.size
dec $Ware.size=
$Ware = $Wares.arr [ $Wares.size ]
[THIS]-> remove product from factory or dock: $Ware
[THIS]-> remove primary resource to factory: $Ware
[THIS]-> remove secondary resource to factory: $Ware
end
* ----------------------------------------------------------------
* richtige Produkte & Ressis einfügen und Produktion wieder starten
[THIS]-> add product to factory or dock: {Glühwürmchen Rakete}
[THIS]-> add primary Ressource: Energiezellen
[THIS]-> add primary Ressource: EPA
[THIS]-> add primary ressource: Erz
[THIS]-> factory production task: on=[TRUE]
end

return null
Lord Morpheus
Posts: 764
Joined: Thu, 15. Dec 05, 21:27
x3tc

Post by Lord Morpheus »

Hmm also ich weiß zwar nicht warum aber das hier:

Code: Select all

if [THIS]->is of type {Terraner Raketenfabrik Glühwürmchen}
  * Fabrik stoppen + falsche Produkte entfernen
  $Product = [THIS]->get product ware
  [THIS]->remove product from factory or dock: $Product
  [THIS]->factory production task: on=[FALSE]
  * ----------------------------------------------------------------
  * richtige Produkte einfügen, preise setzen und Produktion wieder starten
  [THIS]->add product to factory or dock: {Glühwürmchen Rakete}
  [THIS]->factory production task: on=[TRUE]
end

return null
funktioniert. Sprich erst das Produkt entfernen und dann die Produktion stoppen. Frag mich aber nicht warum. Auf jeden Fall vielen dank für deine Hilfe. Ohne dich hätte ich das nie hin bekommen.
Dabei hab ich nochmal eine Frage. Was bestimmt eigentlich wieviel Schilde eine Station bekommt? Ich meine wenn ich sie normal aus einem TL aufstelle. So einen Wert gibt es in der TFactories nicht. Wie wird das geregelt?

Kann mir das jemand beantworten?
User avatar
Reflexer
Posts: 863
Joined: Sat, 21. Feb 09, 12:54
x4

Post by Reflexer »

Killjaeden wrote:Die Schilde sind vordefiniert per Hardcode... Anzahl je nach stationstyp. Dazu wird ein bestimmter Schildeintrag aus der Tshields ausgewählt, ich glaube index 5 oder 6, weiß nichtmehr (in vanilla ist das natürlich der 2GJ schild)
UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader »

dien schildstärker erhöhen ist aber einfach, indem man zusätzliche Schilde auf der Station installiert ;) Stationen haben nämlich so viele Schildslots wie sie Schilde bekommen ;) wie es mit dem entfernen aussieht weiss ich aber jetzt nicht, probiers mal mit der installation einer negativen Zahl Schilde (ALLE WERTE DER STATION DANACH GRÜNDLICH PRÜFEN, bei Schiffen ist dieser Befehl beim abziehen nämlich extrem buggy...)
Lord Morpheus
Posts: 764
Joined: Thu, 15. Dec 05, 21:27
x3tc

Post by Lord Morpheus »

Ich habe leider schon wieder ein Problem. Nachdem das Script jetzt an sich gut funktioniert dachte ich mir ich baue noch eine zweite Fabrik ins Spiel mit ein.
Also habe ich das Script jetzt so verändert:

Code: Select all

if [THIS]->is of type {Terraner M/AM-Gefechtskopffertigung 7619}
  * Falsche Produkte entfernen + Fabrik stoppen
  $Product = [THIS]->get product ware
  [THIS]->remove product from factory or dock: $Product
  [THIS]->factory production task: on=[FALSE]
  * ----------------------------------------------------------------
  * richtige Produkte einfügen und Produktion wieder starten
  [THIS]->add product to factory or dock: {M/AM-Gefechtskopf}
  [THIS]->factory production task: on=[TRUE]
end

if [THIS]->is of type {Terraner Raketenfabrik Glühwürmchen}
  * Falsche Produkte entfernen + Fabrik stoppen
  $Product = [THIS]->get product ware
  [THIS]->remove product from factory or dock: $Product
  [THIS]->factory production task: on=[FALSE]
  * ----------------------------------------------------------------
  * richtige Produkte einfügen und Produktion wieder starten
  [THIS]->add product to factory or dock: {Glühwürmchen Rakete}
  [THIS]->factory production task: on=[TRUE]
end

return null
Das Script erkennt jedoch den Unterschied zwischen den Fabriken nicht. Das heißt wenn ich das Script auf meiner Terraner M/AM-Gefechtskopffertigung per Kommando ausführe, dann hat die Fabrik als Produkt die Glühwürmchen Rakete. Drehe ich im Script die Fabriken habe ich das gleiche Phänomen nur andersrum, daß heißt dann hat die Glühwürmchen Raketenfabrik als Produkt M/AM-Gefechtsköpfe.

Führe ich das Script aber auf einer anderen Fabrik (Planktonfarm, Raketenfabrik Poltergeist, Traumfabrik) dann tut es gar nichts, erkennt also offenbar das keine richtige Fabrik vorhanden ist. Woran liegt das?

EDIT: Ich habe jetzt noch weiter rum probiert, dazu hab ich das Script umgeschrieben

Code: Select all

if [THIS]->is of type {Terraner M/AM-Gefechtskopffertigung 7619}
  * Falsche Produkte entfernen + Fabrik stoppen
  $Product = [THIS]->get product ware
  [THIS]->remove product from factory or dock: $Product
  [THIS]->factory production task: on=[FALSE]
  * ----------------------------------------------------------------
  * richtige Produkte einfügen und Produktion wieder starten
  [THIS]->add product to factory or dock: {M/AM-Gefechtskopf}
  [THIS]->factory production task: on=[TRUE]
end

= wait 50000ms

if [THIS]->is of type {Terraner Raketenfabrik Poltergeist 6_432}
  * Falsche Produkte entfernen + Fabrik stoppen
  $Product = [THIS]->get product ware
  [THIS]->remove product from factory or dock: $Product
  [THIS]->factory production task: on=[FALSE]
  * ----------------------------------------------------------------
  * richtige Produkte einfügen und Produktion wieder starten
  [THIS]->add product to factory or dock: {Glühwürmchen Rakete}
  [THIS]->factory production task: on=[TRUE]
end

return null
Das Ergebnis ist das die Poltergeist Fabrik gemäß dem Script die Glühwürmchen Rakete zugeordnet bekommt. Sowohl M/AM Gefechtskopffabrik als auch die Glühwürmchen Raketenfabrik bekommen als Produkt M/AM Gefechtsköpfe. Eigentlich sollte die Glühwürmchen Raketenfabrik aber gar kein Produkt bekommen?!

EDIT2: Ich habe das Script jetzt nochmal erweitert und mir den Type ins Logbuch schreiben lassen.

Code: Select all

$my.type = [THIS] -> get ware type code of object
write to player logbook $my.type
Terraner Raketenfabrik Glühwürmchen = Terraner Raketenfabrik Glühwürmchen
Terraner Raketenfabrik Poltergeist = Terraner Raketenfabrik Poltergeist
Terraner M/AM-Gefechtskopffertigung = Terraner M/AM-Gefechtskopffertigung
Also er liest den Typ richtig aus, aber trotzdem läuft das Script auch bei der falschen Fabrik.
UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader »

nur so ein gedanke *fällt mir jetzt erst auf* verwendest du den internen SE oder ein externes tool?
Lord Morpheus
Posts: 764
Joined: Thu, 15. Dec 05, 21:27
x3tc

Post by Lord Morpheus »

Ich benutze den Exscriptor.
Ghostrider[FVP]
Posts: 3262
Joined: Wed, 6. Nov 02, 20:31
x3ap

Post by Ghostrider[FVP] »

UniTrader wrote:nur so ein gedanke *fällt mir jetzt erst auf* verwendest du den internen SE oder ein externes tool?
Lord Morpheus wrote:Ich benutze den Exscriptor.
Was macht das für einen Unterschied?
Föderation Vereinter Planeten -=)FVP(=-
Since 1998... join the future! X3-The Sonen
Image
Ghostrider's X-Universum [INDEX]Lucikes Scripts & Mods
Lord Morpheus
Posts: 764
Joined: Thu, 15. Dec 05, 21:27
x3tc

Post by Lord Morpheus »

Also ich habe mittlerweile die Fabriken auch mal per Script erstellt, um zu schauen ob es nicht an den durch TL aufgebauten Fabriken liegt. Aber auch bei gescripteten Fabriken tritt der Fehler auf. Auch wenn ich den Type mit dem internen SE setze tritt der Fehler auf.
Was halt auch komisch ist, ich benutze den Type der Fabrik um sie mir zu scripten bzw. zu einer Schiffswerft hinzu zu fügen. Das klappt ja auch problemlos mit beiden Fabriken.
Und der Befehl "if [THIS]->is of type" funktioniert ja an sich auch solange es sich nicht um von mir hinzu gefügte Fabriken handelt. Bei Standard Fabriken arbeitet das Script korrekt.

Hier sind meine Einträge in der TFactories:

Code: Select all

1;0;0;0;0;SG_FAC_TECH;7617;116;-1.2;-3.0;200;patch20\stations\scenes\usc_small_station_b_scene;31;18;201;38;2000;1;ICON_TRG_ST_HIGHYIELD;12000;25200;25;20;5;15000;1000;0;0;SS_FAC_TR_GLUEW_PL;
1;0;0;0;0;SG_FAC_TECH;7619;116;-1.2;-3.0;200;patch20\stations\scenes\usc_small_station_b_scene;31;18;201;38;2000;1;ICON_TRG_ST_CRYSTAL;11500;21700;25;20;5;10000;3333;0;0;SS_FAC_TR_TECH7_PL;
Stehen ganz am Ende der TFactories. Muss ich vieleicht noch irgendwo was eintragen? Oder ist da ein Fehler drinne?

Ich mein ich könnte natürlich für jede Fabrik ein eigenes Kommando erstellen, aber das kann nicht Sinn der Sache sein, außerdem gibts ja auch nicht unbegrenzt Kommando Slots. Und diverse Mods fügen doch auch Fabriken hinzu, die einwandfrei funktionieren.... :(
Ghostrider[FVP]
Posts: 3262
Joined: Wed, 6. Nov 02, 20:31
x3ap

Post by Ghostrider[FVP] »

Hm.. ans Ende klingt schon mal gut, und ich nehme auch an das Du den Zähler hochgesetzt hast.. also ich wüsste jetzt nicht so warums nicht geht..

Ich will demnächst auch ein paar Terraner Stationen in mein Spiel einfügen, aber soweit bin ich noch nicht gekommen um das zu testen, da ich immer noch dabei bin heraus zu finden, welche Stationen kaufbar sind und welche nicht bzw. welche nach dem Plot kaufbar werden.. ich will ja nur die Differenz haben.

Aber wer weis vielleicht klappt es oder ich stehe vor dem selben Problem.
Föderation Vereinter Planeten -=)FVP(=-
Since 1998... join the future! X3-The Sonen
Image
Ghostrider's X-Universum [INDEX]Lucikes Scripts & Mods
Lord Morpheus
Posts: 764
Joined: Thu, 15. Dec 05, 21:27
x3tc

Post by Lord Morpheus »

Wenn du mit Zähler die fortlaufende Nummer in der TFactories meinst, ja die setzt der X3 Editor 2 automatisch hoch.
Ghostrider[FVP]
Posts: 3262
Joined: Wed, 6. Nov 02, 20:31
x3ap

Post by Ghostrider[FVP] »

axo .. c&p über den X3E, ich mach das immer über nen Texteditor da kann man das dann schnell mal vergessen aber okay.. dann :gruebel:

Werd das mal bei einer Fabrik heute bei mir testen.. mal gucken was passiert.
Föderation Vereinter Planeten -=)FVP(=-
Since 1998... join the future! X3-The Sonen
Image
Ghostrider's X-Universum [INDEX]Lucikes Scripts & Mods

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