gescriptete Nividiummine produziert zu langsam

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

michathorcale
Posts: 51
Joined: Thu, 24. Apr 08, 21:47
x3tc

gescriptete Nividiummine produziert zu langsam

Post by michathorcale »

Hi, mal wieder hab ich -als Neuling was sripten angeht- ein Problem.
Hab mir eine Nividiummine gescriptet. Als primäre Ressorce werden EZ verwendet. Nividium wird auch tatsächlich produziert, nur dermaßen langsam, dass ich 21 Tage warten muss, bis 2 Nividium produziert sind. Dann hab ich das Spiel ja schon durch *g* Ich find in der Befehlsreferenz auch nirgends einen Befehl, der das beschleunigt. :?
User avatar
ScRaT_GER
Posts: 1962
Joined: Tue, 8. Jan 08, 18:19
x3tc

Post by ScRaT_GER »

Ich habe mich in letzter Zeit viel mit diesem Thema beschäftigt.
Die Produktionszeit, der Preis, die benötigten Ressourcen, die Anzahl der Produkte pro Zyklus werden alle über den sog. RelVal einer Ware geregelt.

Momentan liegt dieser bei Nividium bei 3072, während er bei Erz nur bei 24 liegt. Dadurch ist Erz deutlich billiger als Nividium, es werden 20 Einheiten (wenn ich mich nicht irre) pro Zyklus produziert, etc.

Damit Nividium in der Menge und Zeit produziert wird, die du möchtest, musst du also den RelVal verändern.
Dies geht nur, indem du die TWareM.txt moddest.
Dazu verwendest du einfach den X3 Editor 2 von doubleshadow und öffnest mit diesem die TWareM.txt, die du vorher aus einer Cat (03.cat) entpackst.
Jetzt veränderst du den Wert des Nividiums ein bisschen und schaust, wie sich das ingame auswirkt.
Damit die Datei auch im Spiel verwendet wird, musst du sie übrigens in einen Ordner "types" im X3:TC Hauptverzeichnis kopieren. Dieser ist normalerweise nicht vorhanden und muss selber erstellt werden.

Mit ein bisschen rumprobieren, solltest du eigentlich ein zufriedenstellendes Ergebnis erhalten.

MfG,
ScRaT
michathorcale
Posts: 51
Joined: Thu, 24. Apr 08, 21:47
x3tc

Post by michathorcale »

Danke ScRaT, jetzt läuft´s wie es soll. :D
User avatar
ScRaT_GER
Posts: 1962
Joined: Tue, 8. Jan 08, 18:19
x3tc

Post by ScRaT_GER »

Kein Problem.

Für's Protokoll: Könntest du den RelVal nennen, den du verwendet hast, sowie die daraus resultierenden Werte (Preis, Produktionszeit, Anzahl pro Zyklus, benötigte Ressourcen)?

Dann wäre ich dir sehr verbunden. ;)

MfG,
ScRaT
michathorcale
Posts: 51
Joined: Thu, 24. Apr 08, 21:47
x3tc

Post by michathorcale »

Klaro. RelVal ist 40 (hab ich bei NPC und player eingestellt, wenns bei NPC ne größere Zahl wäre, produziert die Fab langsamer. Lieg ich da richtig?)

Preis: Normal 240, max 380, min 106. dann steht noch unter Cr [160] was auch immer das heißen mag.
Zykluszeit: 00:16:41
Anzahl pro Zyklus: 2
Benötigte Ressourcen: 40 EZ
User avatar
ScRaT_GER
Posts: 1962
Joined: Tue, 8. Jan 08, 18:19
x3tc

Post by ScRaT_GER »

Oh, das ist natürlich arg billig.
Lieg ich da richtig?
Ja, zuätzlich wird das Prodzkt noch teurer und der Ressourcenverbrauch steigt.
Anzahl pro Zyklus: 2
Das ist komisch.
Ich habe einige Tests gemacht. Dabei hat sich für RelVals zwischen 1 und 480 herausgestellt, dass die Anzahl pro Zyklus durch folgende Formel berechnet werden kann:

Anzahl = 480 / RelVal

Bei einem RelVal von 6 hat man also 80 Produkte pro Zyklus. Bei 40 sollten es eigentlich 12 sein... :?:

MfG,
ScRaT
michathorcale
Posts: 51
Joined: Thu, 24. Apr 08, 21:47
x3tc

Post by michathorcale »

Ach, das war jetzt ja auch nur zum ausprobieren. Will halt noch paar andre Sachen testen. Da wärs praktisch, wenn ich einigermaßen schnell an das Nividium rankomme... Natürlich werd ichs irgendwann teurer machen :)
Was das mit dem RelVal betrifft hab ich echt keinen Plan. Ich finds außerdem irgendwie blöd, dass man die Werte nicht einzeln ändern kann.
Was ich mich noch gefragt hab ist, wie man Kontrolle darüber bekommt, wie viel von den primären Ressorcen verwendet werden. Mal angenommen ich will ne Fabrik, die aus EZ, Nividium und Kristallen den Khaak-Laser herstellt. Dann würd ich ja gern kontrollieren, dass EZ am meisten verbraucht werden und Nividium am wenigsten. Geht das dann automatisch, also was am billigsten zu haben ist, wird am meisten verbraucht?
User avatar
ScRaT_GER
Posts: 1962
Joined: Tue, 8. Jan 08, 18:19
x3tc

Post by ScRaT_GER »

Ich finds außerdem irgendwie blöd, dass man die Werte nicht einzeln ändern kann.
Ich weiß auch nicht wer sich das hat einfallen lassen.
Statt in einer XML Datei alle Werte einzeln bestimmen zu können, ist alles von einem einzigen Wert abhängig...
Geht das dann automatisch, also was am billigsten zu haben ist, wird am meisten verbraucht?
Ja, das was am billigsten ist, wird am meisten verbraucht. Leider lässt sich auch das nicht wirklich berechnen, zumindest wenn an die Formel dahinter nicht kennt. Und die kennt wohl selbst Cycrow nicht...

MfG,
ScRaT
michathorcale
Posts: 51
Joined: Thu, 24. Apr 08, 21:47
x3tc

Post by michathorcale »

Jetzt hab ich noch ein Problem. Also ich hab mit dem Texteditor diese Niviviummine gemoddet. Das blöde ist, sie heißt immer noch Erzmine. Den Namen kann ich nicht ändern, nur die ID. :(
Die Station wird durch ein Script in den TL geladen und durch ein anderes dann in Nividiummine umbenannt. Aber eigtl wärs ganz nett, wenn die Station schon so heißen würde in dem Moment, in dem sie in den TL gescriptet wird. Bzw. sie soll ja irgendwann an Schiffswerften käuflich sein unter dem Namen "Nividiummine". Wie stell ich das denn am besten an?
User avatar
ScRaT_GER
Posts: 1962
Joined: Tue, 8. Jan 08, 18:19
x3tc

Post by ScRaT_GER »

Zuerst zum Namen.

Alle Texte des Spiels sind auf sog. Textseiten gespeichert. Diese Textseiten haben IDs von 1 bis 9999. Dabei sind die IDs 1 ich glaube 7000 für Egosoft reserviert, d.h. dass es aus kompatibiltätsgründen klüger ist, eine höhere Textseite zu verwenden.
Auf jeder Textseite stehen wiederrum Einträge, welche natürlich auch IDs haben.
Die Textseiten werden in den sog. Textdateien gespeichert. Dabei können in einer Textdatei theoretisch alle Textseiten gespeichert sein.

Für einen neuen Stationsnamen musst du einen neuen Eintrag auf der Textseite 17 erstellen. Dazu musst du beachten, dass du eine noch unverbrauchte Text-ID verwendest.
Die Haupttextdatei des Spiels ist die 0001-L049.xml. Diese musst du ggf. aus der neusten Cat entpacken.

Dann suchst du die Textseite 17, d.h. eine Zeile mit Inhalt "page id="17".
Hier sind alle Stationsnamen aufgelistet, sodass du sehen kannst, welcher noch frei ist. Am sichersten ist es, wenn du einfach eine sehr hohe Zahl nimmst (z.B. 100001).

Du hast also eine Text-ID gefunden die noch nicht benutzt ist.
Um eine Kompatibilität mit kommenden Patches zu haben, ist es am besten, wenn du eine neue Textdatei erstellst.
In dieser erstellst du nun einen neuen Eintrag auf der Textseite 17.
Die entstehende t-file könnte dann ungefähr so aussehen:

Code: Select all

<page id="17" descr="Bordcomp. Objects">
  <t id="100001">Nividiummine</t>
  <t id="100002">Hier steht die Beschreibung.</t>
</page>
Jetzt musst du nur noch im X3 Editor 2 als ID die von dir gewählte Text-ID angeben. Die Beschreibung wird vom Spiel automatisch eingefügt.

Damit das ganze auch im Spiel geladen wird, musst du natürlich die Textdatei, in welcher du diese Textseite erstellt hast, auch im Spiel laden.
Dazu einfach den Befehl "load text: id=" verwenden.

Hast du eigentlich schon einen neuen Eintrag in die TFactories.txt gemacht oder hast du einen alten Eintrag modifiziert?

MfG,
ScRaT
michathorcale
Posts: 51
Joined: Thu, 24. Apr 08, 21:47
x3tc

Post by michathorcale »

Also ich glaub ich hab nicht alles verstanden. Hier mal ein Ausschnit aus der Textseite 17:

<page id="7" title="Boardcomp. Sectornames" descr="Names of all sectors (spoken by Boardcomputer)" voice="yes">
<t id="1020000">Unbekannter Sektor</t>
<t id="1020101">Königstal</t>
...
<t id="9002">Über dieses Objekt sind in der Datenbank des Bordcomputers keine Daten verfügbar.</t>
<t id="9011">Unbekanntes Feindschiff</t>
<t id="9012">{17,9002}</t>
<t id="9021">Unbekannte Feindstation</t>
<t id="9022">{17,9002}</t>
<t id="9031">Unbekanntes Schiff</t>
<t id="9032">{17,9002}</t>
<t id="100001">Nividiummine</t>
<t id="100002">Nividium bildet eine wichtige Komponente zur Herstellung der neu erforschten Kyonenemitter.</t>
</page>

Hab jetzt doch mal die alte 0001-L049 aus der 08cat genommen und in die 09cat (die sich im mods-Ordner befindet) gespeichert. Geht das auch? Wenn ein neuer patch rauskommt, verwende ich den mod einfach nicht.

Als ID steht bei der Erzmine SS_FAC_A_ORE und wenn ich das in 100001 ändere bringt das irgendwie nix.
Ich hab bisher lediglich mit dem TE die TFactories.pck soweit geändert, dass ich eine Erzmine kopiert hab und die dann in SS_FAC_A_ORE_MG umbenannt hab. Dachte das läuft so wie beim Schiffe modden...
Und ist das ein Problem, dass am Anfang das steht: <page id="7" title="Boardcomp. Sectornames" descr="Names of all sectors (spoken by Boardcomputer)" voice="yes">
und nicht das von dir vorgeschlagene?
UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader »

du solltest ja auch nicht die ID der Station selber ändern sondern die Description ID :roll: (und in diesem fall ist es GENAU dasselbe wie beim Schiffe modden :roll: :P )

PS was sucht eigentlich die Page 7 in deinem Zitierten ausschnitt?? :roll:
if not stated otherwise everything i post is licensed under WTFPL

Ich mache keine S&M-Auftragsarbeiten, aber wenn es fragen gibt wie man etwas umsetzen kann helfe ich gerne weiter ;)

I wont do Script&Mod Request work, but if there are questions how to do something i will GLaDly help ;)
michathorcale
Posts: 51
Joined: Thu, 24. Apr 08, 21:47
x3tc

Post by michathorcale »

Hat sich grad geklärt. Ich muss ja die 100001 bei "description" eintragen. Ich Held. :)

Upps, ein Fehler...
Sollte das heißen:
<page id="17" title="Boardcomp. objects" descr="Quad line groups for ware factory pairs or twins (spoken by Boardcomputer)" voice="yes">
<t id="2011">Sonnenkraftwerk</t>
Mir gings nur darum, dass Nividiummine ja nicht gesprochen werden kann...
michathorcale
Posts: 51
Joined: Thu, 24. Apr 08, 21:47
x3tc

Post by michathorcale »

Es ist zum Mäusemelken. Jetzt kann ich die Nividiummine, die tatsächlich so heißt, zwar in den TL scripten, aber sobald ich sie auf den Asteroiden mit dem Nividiumvorkommen plaziere, heißt sie "Erzmine". Dann kann ich zwar den Namen ändern in "Nividiummine", aber wenn ich auf Info klicke, spult der Schiffscomputer trotzdem den Text für eine Erzmine ab. :?
User avatar
ScRaT_GER
Posts: 1962
Joined: Tue, 8. Jan 08, 18:19
x3tc

Post by ScRaT_GER »

Mir gings nur darum, dass Nividiummine ja nicht gesprochen werden kann...
Selbst das geht. Ist eigentlich ganz einfach, aber das werde ich dir erst erklären, wenn das mit der Mine selbst funktioniert. ;)
Vielleicht hast du es bis dahin eh selbst raus. :)

Ich hab bisher lediglich mit dem TE die TFactories.pck soweit geändert, dass ich eine Erzmine kopiert hab und die dann in SS_FAC_A_ORE_MG umbenannt hab.
Das ist evtl. der Grund, dass deine Mine nicht das richtige produziert.
Der Übersicht halber, würde ich die Nividiummine "SS_FAC_A_NIVIDIUM" nennen.
Zum festlegen der Produkte musst du dann zusätzlich noch einen neuen Eintrag in der WareTemplate.xml machen.
Etwa so:

Code: Select all

<o t="6" s="SS_FAC_A_NIVIDIUM" x="52500000" y="0" z="15000000" r="1" a="0" b="0" g="0">
 <o t="23" s="6">
  <o t="11" s="SS_WARE_ENERGY"/>
 </o>
 <o t="23" s="7">
  <o t="15" s="SS_WARE_NIVIDIUM2"/>
 </o>
</o>
Damit legst du Nividium als Produkt und Energiezellen als Ressource fest.

Dann sollte es eigentlich funktionieren.

MfG,
ScRaT
michathorcale
Posts: 51
Joined: Thu, 24. Apr 08, 21:47
x3tc

Post by michathorcale »

Danke, dass du dich meiner annimmst ScRaT. :)
Ich habs noch nicht ausprobiert, hab ich für morgen geplant.
Also t="23" s="6" markieren also die primäre Ressource während t="23" s="7" anscheinend das Produkt beschreibt, das dann mit t="15" s="SS_WARE_NIVIDIUM2" definiert wird, soweit korrekt?
Steht t="11" generell für Energiezellen? und t="15" für Nividium? Gibts da irgendwo so Listen, wo man das auf einen Blick nachschauen kann?
Warum steht bei s="SS_WARE_NIVIDIUM2" eine 2? Und was bedeuten x, y, z, r, a, b, g?
Ich weiß, Fragen über Fragen. Aber ich würd gern verstehen, was ich da eigtl tue.
Hab vielen Dank im Voraus für die Antwort (und mein Verständnis wenn du langsam genervt bist von meinen Fragen :) )
User avatar
ScRaT_GER
Posts: 1962
Joined: Tue, 8. Jan 08, 18:19
x3tc

Post by ScRaT_GER »

Das ganze ist etwas kryptisch. Jede Zahl verstehe ich auch nicht - aber ich kann's ja mal versuchen.

Die erste Zeile:

Code: Select all

o t="6" s="SS_FAC_A_NIVIDIUM" x="52500000" y="0" z="15000000" r="1" a="0" b="0" g="0"> 
t = "6" steht für den Maintype der Station. Eine Liste der Main- und Subtypen findest du hier.

s = "SS_FAC_A_NIVIDIUM" gibt natürlich die ID dieses Stationstyps an.

Was die restlichen Zahlen bedeuten, weiß ich auch nicht. x,y,z dürften Koordinaten im Raum sein - a,b,g dürfte für die Rotation stehen.

Die zweite Zeile:

Code: Select all

<o t="23" s="6"> 
Ich vermute, dass t = "23" angibt, dass es sich bei den folgenden Objekten um Waren handelt.
s = "6" gibt an, ob es sich bei den folgenden Waren um Produkte (7), Primärressourcen (6) oder Sekundärressourcen (8 ) handelt.

Die dritte Zeile:

Code: Select all

<o t="11" s="SS_WARE_ENERGY"/> 
t="11" gibt den Maintyp der Ware an. Um diesen zu ermitteln kannst du die o.g. Liste verwenden.
s="SS_WARE_ENERGY" gibt die ID der Ware an. Diese kannst du leicht mit dem X3 Editor 2 herausfinden, indem du die Ware markierst und dir den ersten Eintrag (ID) anschaust.
Damit wäre auch beantwortet wieso es SS_WARE_NIVIDIUM2 heißt.

Die restlichen Zeilen sind analog zu den bisher erklärten.
Danke, dass du dich meiner annimmst ScRaT.
Gerne. ;)

MfG,
ScRaT
Last edited by ScRaT_GER on Tue, 4. Aug 09, 22:50, edited 1 time in total.
UniTrader
Moderator (Script&Mod)
Moderator (Script&Mod)
Posts: 14571
Joined: Sun, 20. Nov 05, 22:45
x4

Post by UniTrader »

ScRaT_GER wrote:

Code: Select all

o t="6" s="SS_FAC_A_NIVIDIUM" x="52500000" y="0" z="15000000" r="1" a="0" b="0" g="0"> 
t = "6" steht für den Maintype der Station. Eine Liste der Main- und Subtypen findest du hier.

s = "SS_FAC_A_NIVIDIUM" gibt natürlich die ID dieses Stationstyps an.

Was die restlichen Zahlen bedeuten, weiß ich auch nicht. x,y,z dürften Koordinaten im Raum sein - a,b,g dürfte für die Rotation stehen.
ganz richtig... xyz und abg geben die Position und Rotation innerhalb des Sektors an - und wenn du dich fragst weshalb das in der Datei steht wo die Waren festgelegt werden: das liegt daran, dass sämtliche default-Produkte und Ressourcen in einer seperaten Karte definiert sind, die nur einen Sektor hat in welchem sich eine Station jedes Typs befindet.. kA weshalb EGO das sorum gemacht hat aber ich schätze mal die wollten auf ihren Karteneditor zurückgreifen um die default-Produkte und Ressourcen anzupassen ^^
if not stated otherwise everything i post is licensed under WTFPL

Ich mache keine S&M-Auftragsarbeiten, aber wenn es fragen gibt wie man etwas umsetzen kann helfe ich gerne weiter ;)

I wont do Script&Mod Request work, but if there are questions how to do something i will GLaDly help ;)
michathorcale
Posts: 51
Joined: Thu, 24. Apr 08, 21:47
x3tc

Post by michathorcale »

Also ich habs jetzt eingegeben in die WareTemplate.pck
Hier ein Ausschnitt:
<o t="6" s="SS_FAC_S_AMMO" x="-67500000" y="0" z="7500000" r="1" a="0" b="0" g="0">
<o t="23" s="6">
...
</o>
<o t="6" s="SS_FAC_A_Nividium" x="52500000" y="0" z="15000000" r="1" a="0" b="0" g="0">
<o t="23" s="6">
<o t="11" s="SS_WARE_ENERGY" />
</o>
<o t="23" s="7">
<o t="16" s="SS_WARE_NIVIDIUM2" />
</o>
</o>
<o t="6" s="SS_FAC_X_SHIP" x="-60000000" y="0" z="7500000" r="1" a="0" b="0" g="0">
<o t="23" s="7">
<o t="7" s="SS_SH_X_M1" />
...
</o>
</o>
Dann das ganze natürlich brav in die cat im mod-Ordner. Es läuft leider nicht. Dasselbe Problem wie vorher. Beim Entladen der Station auf den Asteroiden wirds eine Erzmine. Ich glaub ich gebs auf so langsam :shock: und trag meine Ideen für Scripte und mods in das entsprechende Forum ein, warte 3 Monate und lad mir das dann als patch... :)
User avatar
ScRaT_GER
Posts: 1962
Joined: Tue, 8. Jan 08, 18:19
x3tc

Post by ScRaT_GER »

Ich habe es gerade ausprobiert und es funktioniert einwandfrei. :?:

Mein Eintrag aus der WareTemplate stimmt auch mit deinem überein:

Code: Select all

    <o t="6" s="SS_FAC_A_NIVIDIUM" x="52500000" y="0" z="15000000" r="1" a="0" b="0" g="0">
      <o t="23" s="6">
        <o t="11" s="SS_WARE_ENERGY" />
      </o>
      <o t="23" s="7">
        <o t="15" s="SS_WARE_NIVIDIUM2" />
      </o>
    </o>
Ich bin folgendermaßen vorgegangen:

1. Erzminen - Eintrag in der TFactories kopieren und hinten neu einfügen
2. ID zu SS_FAC_A_NIVIDIUM ändern und Name ID setzen
3. WareTemplate.txt Eintrag (s.o.) einfügen

Im Spiel habe ich mir dann einen Nividium - Asteroiden gespawnt, eine Nividiummine in einen TL geladen und dann auf dem Asteroiden gebaut.
Hat alles wunderbar funktioniert. Die Mine hat Nividium produziert.

Verwendest du eigentlich immer noch dieses Skript, das die Fabrik umbenennt? Wenn ja, könnte da vllt. der Fehler liegen.
Ansonsten kann ich dir nur dazu raten, das Spiel komplett zu entpacken, sodass der Inhalt aller Cats direkt im Hauptverzeichnis liegt.
Dadurch wird es übersichtlicher, da du direkten Zugriff auf alle Dateien im "types" oder "maps" Verzeichnis hast und du weißt immer welche Dateien gerade "aktiv" sind, da die entpackten Dateien immer die Cats überschreiben.

Also, versuche es nochmal, denn aufgeben ist nicht der richtige Weg. ;)
Wenn du es gar nicht hinbekommst, schick mir deine "TFactories.txt" und deine "WareList.txt" und ich füge die Stationen ein.
Ich könnte dir meine geben, aber da habe ich schon so viel verändert... :)

MfG,
ScRaT

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