Ressourcen Verbrauch für Fabriken ?

Hier ist der ideale Ort um über Scripts und Mods für X²: Die Bedrohung zu diskutieren.

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

HadesHaido
Posts: 6
Joined: Fri, 14. Jan 05, 15:48
x2

Ressourcen Verbrauch für Fabriken ?

Post by HadesHaido »

Hallo

Gibt es im Script Editor eine Möglichkeit an die Menge der pro Zyklus verbauchten Ressourcen zu kommen ? Die Daten stehen auf der einen oder anderen Internet Seite nur ingame nützt mir das nicht so viel (und alles per Hand in ein eigenes Script zu schreiben ist etwas viel bei der Menga an verschiedenen Fabriken) :wink:



Danke vorab
HadesHaido
CCC_Maverick
Posts: 87
Joined: Thu, 1. Apr 04, 09:27
x3

Post by CCC_Maverick »

willst du den Verbrauch ändern? dann wüsste ich jetzt mal nix
andererseits, wenn du Patch 1.4 drauf hast dann wird dir in der Station der Verbrauch pro Zykluss doch angegeben? in den Stationsdetails, die Zahl in Klammern unter der was du gerade an Recoursen in der Station hast.
HadesHaido
Posts: 6
Joined: Fri, 14. Jan 05, 15:48
x2

Post by HadesHaido »

Danke erstmal für die Antwort.

Hab mich schlecht ausgedrückt. Ich brauche den Verbrauch pro Zyklus in einem Script was ich für mich schreibe. Soll nen Script für Fabriken sein und da jede Fabriksorte einen anderen Verbrauch hat muss ich das ich Script an sich wissen

Den Verbrauch per Hand einzugeben ist nicht so elegant :wink:
Deleted User

Post by Deleted User »

Geht nicht per Script.

Die Zykluszeit berechnet sich automatisch nach den vorhanden Ressourcen. Man sollte also bei Fabriken ebenfalls darauf achten, das man noch Gewinne erwirtschaftet (je nachdem was man als Ressource einbaut).
mischka
Posts: 17
Joined: Tue, 30. Nov 04, 21:38
x3

Post by mischka »

-Yogi- wrote:Geht nicht per Script.

Die Zykluszeit berechnet sich automatisch nach den vorhanden Ressourcen. Man sollte also bei Fabriken ebenfalls darauf achten, das man noch Gewinne erwirtschaftet (je nachdem was man als Ressource einbaut).
Ich glaube es war nicht die Rede von der Zykluszeit an sich, sondern von den Ressourcen, die in einer Zykluszeit benötigt werden. Beispiel: Ein Agrazentrum braucht für einen Zyklus 15 Energiezellen, die Frage ist, ob man diesen Energiezellenverbrauch (die 15) per Script abfragen kann. Das würde mich auch sehr stark interessieren.

Mischka
HadesHaido
Posts: 6
Joined: Fri, 14. Jan 05, 15:48
x2

Post by HadesHaido »

@mischka
Genau das meinte ich.


Ich bin jetzt dazu übergegangen ein Script zu schreiben welches den Verbrauch errechnet:
Dazu lese ich den aktuellen Warenstand ein und lasse eine Schleife laufen (mit Pause von momentan 500 ms). Für den Warenbestand benutze ich zwei Variablen: Eine mit dem aktuellen Wert und eine für Vergleichszwecke.

Es wird nun geprüft, ob sich der Bestand verringert oder erhöht hat.
Bestand > Alter Bestand: Den alten Bestand auf den neuen Wert setzen (Rohstofflieferung o.ä. ist erfolgt)
Bestand < Alter Bestand: Die Differenz ist der Verbrauch (es sei denn man hat manuell Waren entfernt was man natürlich in diesem Fall unterlassen sollte :wink: )
mischka
Posts: 17
Joined: Tue, 30. Nov 04, 21:38
x3

Post by mischka »

Find ich gar nicht mal schlecht, wie Du das gelöst hast, kannst Du mir das irgendwie zukommen lassen ? Dann brauch ich das Rad nicht ein zweites Mal erfinden !

Mischka
HadesHaido
Posts: 6
Joined: Fri, 14. Jan 05, 15:48
x2

Post by HadesHaido »

Klar !

Ich werd versuchen das Ding hier zu posten nachdem ich das in eine halbwegs saubere Form gepresst habe.
mischka
Posts: 17
Joined: Tue, 30. Nov 04, 21:38
x3

Post by mischka »

HadesHaido wrote:Klar !

Ich werd versuchen das Ding hier zu posten nachdem ich das in eine halbwegs saubere Form gepresst habe.
Gut. Wie machst Du das im Detail ? Ich stell mir das zum Beispiel problematisch vor, wenn die entsprechende Fabrik grad nicht produziert, weil nicht genug Ressourcen zur Verfügung stehen. Und speicherst Du den ermittelten Verbrauch zwischen, damit der Wert beim nächsten Mal gleich zur Verfügung steht. Wenn Du magst helf ich dir beim entwickeln und testen.

Mischka
HadesHaido
Posts: 6
Joined: Fri, 14. Jan 05, 15:48
x2

Post by HadesHaido »

Hier ist der Code. Als Parameter wird die zu prüfende Ware und die zu prüfende basis verlangt. Der Verbrauch ist dann der Rückgabewert.

Code: Select all


<?xml version="1.0" standalone="yes" ?>
<?xml-stylesheet href="x2script.xsl" type="text/xsl" ?>
<script>
<name>hades.transport.getUsedWares</name>
<version>1</version>
<engineversion>25</engineversion>
<description>Ermittelt den Rohstoffverbrauch einer Fabrik pro Zyklus</description>
<arguments>
<argument index="1" name="ware" type="Var/Ware" desc="Zu pruefende Ware" />
<argument index="2" name="base" type="Var/Station" desc="Zu pruefende Station" />
</arguments>
<sourcetext>
<line linenr="001" indent=""><comment><text>* </text><var>Anzahl der aktuellen Waren auf der Station</var></comment></line>
<line linenr="002" indent=""><var>$wareAmount = </var><var>$base -></var><text> get amount of ware </text><var>$ware</var><text> in cargo bay</text></line>
<line linenr="003" indent=""><comment><text>* </text><var>Alter Stand der Rohstoffe</var></comment></line>
<line linenr="004" indent=""><var>$tempAmount = </var><var>$wareAmount</var></line>
<line linenr="005" indent=""></line>
<line linenr="006" indent=""><var>BEGIN</var><text>:</text></line>
<line linenr="007" indent=""><comment><text>* </text><var>Anzahl der aktuellen Waren auf der Station</var></comment></line>
<line linenr="008" indent=""><var>$wareAmount = </var><var>$base -></var><text> get amount of ware </text><var>$ware</var><text> in cargo bay</text></line>
<line linenr="009" indent=""></line>
<line linenr="010" indent=""><comment><text>* </text><var>Warenlieferung angekommen </var></comment></line>
<line linenr="011" indent=""><var>if </var><var>$wareAmount</var><text> </text><var>></var><text> </text><var>$tempAmount</var></line>
<line linenr="012" indent=" "><var>$tempAmount = </var><var>$wareAmount</var></line>
<line linenr="013" indent=""><comment><text>* </text><var>Waren wurden verbraucht</var></comment></line>
<line linenr="014" indent=""><var>else if </var><var>$wareAmount</var><text> </text><var><</var><text> </text><var>$tempAmount</var></line>
<line linenr="015" indent=" "><var>$verbrauch = </var><var>$tempAmount</var><text> </text><var>-</var><text> </text><var>$wareAmount</var></line>
<line linenr="016" indent=""><text>end</text></line>
<line linenr="017" indent=""></line>
<line linenr="018" indent=""><comment><text>* </text><var>500 ms warten</var></comment></line>
<line linenr="019" interruptable="@" indent=""><var>= </var><text>wait </text><var>500</var><text> ms</text></line>
<line linenr="020" indent=""></line>
<line linenr="021" indent=""><comment><text>* </text><var>Solange kein Verbrauch ermittelt wurde die Schleife wiederholen</var></comment></line>
<line linenr="022" indent=""><var>skip if </var><var>$verbrauch</var><text> </text><var>!=</var><text> </text><var>null</var></line>
<line linenr="023" indent=" "><text>goto label </text><var>BEGIN</var></line>
<line linenr="024" indent=""></line>
<line linenr="025" indent=""><text>return </text><var>$verbrauch</var></line>
</sourcetext>
<codearray>
<sval type="array" size="10"><sval type="string" val="hades.transport.getUsedWares" /><sval type="int" val="25" /><sval type="string" val="Ermittelt den Rohstoffverbrauch einer Fabrik pro Zyklus" /><sval type="int" val="1" /><sval type="int" val="0" /><sval type="array" size="5"><sval type="string" val="ware" /><sval type="string" val="base" /><sval type="string" val="wareAmount" /><sval type="string" val="tempAmount" /><sval type="string" val="verbrauch" /></sval><sval type="array" size="13"><sval type="array" size="6"><sval type="int" val="618" /><sval type="int" val="131074" /><sval type="int" val="1" /><sval type="int" val="2" /><sval type="int" val="131074" /><sval type="int" val="0" /></sval><sval type="array" size="7"><sval type="int" val="104" /><sval type="int" val="3" /><sval type="int" val="1" /><sval type="int" val="131074" /><sval type="int" val="2" /><sval type="int" val="1" /><sval type="int" val="-1" /></sval><sval type="array" size="2"><sval type="int" val="101" /><sval type="string" val="BEGIN" /></sval><sval type="array" size="6"><sval type="int" val="618" /><sval type="int" val="131074" /><sval type="int" val="1" /><sval type="int" val="2" /><sval type="int" val="131074" /><sval type="int" val="0" /></sval><sval type="array" size="13"><sval type="int" val="104" /><sval type="int" val="-1610610941" /><sval type="int" val="3" /><sval type="int" val="131074" /><sval type="int" val="2" /><sval type="int" val="131074" /><sval type="int" val="3" /><sval type="int" val="15" /><sval type="int" val="2" /><sval type="int" val="3" /><sval type="int" val="-1" /><sval type="int" val="2" /><sval type="int" val="-2" /></sval><sval type="array" size="7"><sval type="int" val="104" /><sval type="int" val="3" /><sval type="int" val="1" /><sval type="int" val="131074" /><sval type="int" val="2" /><sval type="int" val="1" /><sval type="int" val="-1" /></sval><sval type="array" size="2"><sval type="int" val="112" /><sval type="int" val="9" /></sval><sval type="array" size="13"><sval type="int" val="104" /><sval type="int" val="-1610610427" /><sval type="int" val="3" /><sval type="int" val="131074" /><sval type="int" val="2" /><sval type="int" val="131074" /><sval type="int" val="3" /><sval type="int" val="15" /><sval type="int" val="3" /><sval type="int" val="3" /><sval type="int" val="-1" /><sval type="int" val="3" /><sval type="int" val="-2" /></sval><sval type="array" size="13"><sval type="int" val="104" /><sval type="int" val="4" /><sval type="int" val="3" /><sval type="int" val="131074" /><sval type="int" val="3" /><sval type="int" val="131074" /><sval type="int" val="2" /><sval type="int" val="15" /><sval type="int" val="12" /><sval type="int" val="3" /><sval type="int" val="-1" /><sval type="int" val="12" /><sval type="int" val="-2" /></sval><sval type="array" size="4"><sval type="int" val="105" /><sval type="int" val="-2147483647" /><sval type="int" val="4" /><sval type="int" val="500" /></sval><sval type="array" size="13"><sval type="int" val="104" /><sval type="int" val="-536867833" /><sval type="int" val="3" /><sval type="int" val="131074" /><sval type="int" val="4" /><sval type="int" val="0" /><sval type="int" val="0" /><sval type="int" val="15" /><sval type="int" val="1" /><sval type="int" val="3" /><sval type="int" val="-1" /><sval type="int" val="1" /><sval type="int" val="-2" /></sval><sval type="array" size="2"><sval type="int" val="100" /><sval type="int" val="2" /></sval><sval type="array" size="3"><sval type="int" val="103" /><sval type="int" val="131074" /><sval type="int" val="4" /></sval></sval><sval type="array" size="2"><sval type="array" size="2"><sval type="int" val="13" /><sval type="string" val="Zu pruefende Ware" /></sval><sval type="array" size="2"><sval type="int" val="12" /><sval type="string" val="Zu pruefende Station" /></sval></sval><sval type="array" size="13"><sval type="array" size="3"><sval type="int" val="0" /><sval type="int" val="1" /><sval type="string" val="Anzahl der aktuellen Waren auf der Station" /></sval><sval type="array" size="3"><sval type="int" val="1" /><sval type="int" val="1" /><sval type="string" val="Alter Stand der Rohstoffe" /></sval><sval type="array" size="2"><sval type="int" val="2" /><sval type="int" val="2" /></sval><sval type="array" size="3"><sval type="int" val="3" /><sval type="int" val="1" /><sval type="string" val="Anzahl der aktuellen Waren auf der Station" /></sval><sval type="array" size="2"><sval type="int" val="4" /><sval type="int" val="2" /></sval><sval type="array" size="3"><sval type="int" val="4" /><sval type="int" val="1" /><sval type="string" val="Warenlieferung angekommen " /></sval><sval type="array" size="3"><sval type="int" val="6" /><sval type="int" val="1" /><sval type="string" val="Waren wurden verbraucht" /></sval><sval type="array" size="2"><sval type="int" val="9" /><sval type="int" val="4" /></sval><sval type="array" size="2"><sval type="int" val="9" /><sval type="int" val="2" /></sval><sval type="array" size="3"><sval type="int" val="9" /><sval type="int" val="1" /><sval type="string" val="500 ms warten" /></sval><sval type="array" size="2"><sval type="int" val="10" /><sval type="int" val="2" /></sval><sval type="array" size="3"><sval type="int" val="10" /><sval type="int" val="1" /><sval type="string" val="Solange kein Verbrauch ermittelt wurde die Schleife wiederholen" /></sval><sval type="array" size="2"><sval type="int" val="12" /><sval type="int" val="2" /></sval></sval><sval type="int" val="0" /></sval>
</codearray>
</script>


HadesHaido
Posts: 6
Joined: Fri, 14. Jan 05, 15:48
x2

Post by HadesHaido »

Hilfe nehme ich gerne an

Das Script wird bei mir (irgendwann mal wenn ich mein eigentliches Script soweit habe :wink: ) als Unterscript aufgerufen. Pro Aufruf kann nur eine einzige Ware ermittelt werden. Ist imho allgemeiner einsetzbar und nicht nur auf mein Script beschränkt. Zur Not muss man halt zuerst ermitteln wieviele verschiedene primäre Rohstoffe benutzt werden und dann per Schleife für jeden Rohstoff einzeln das Script aufrufen.

Das mit den Waren ist in der Tat ein Problem. Das Script sollte meiner Meinung nach solange in der Schleife laufen bis ein Wert ermittelt werden konnte.
Eine Lösung wäre vielleicht wenn man der Fabrik Rohstoffe per Befehl hinzufügt, abwartet bis der Zyklus durchgelaufen ist und diese Gewinne usw. wieder abzieht. Falls doch mal eine Rohstofflieferung zwischenzeitlich ankommt könnte man die vom Script eingefügte Anzahl abziehen damit es nicht beim cheaten bleibt.
Bin mir da aber noch nicht so sicher wegen der cheat Problematik ...
mischka
Posts: 17
Joined: Tue, 30. Nov 04, 21:38
x3

Post by mischka »

Herzlichen Dank für das Script. Ich werd das ganze in den nächsten Tagen testen, obwohl es ja net so kompliziert ausschaut :)

Mischka

Return to “X²: Die Bedrohung - Scripts und Modding”