Bin richtig verzweifelt und vollkommen irritiert: Wo sind meine Scripts geblieben?

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

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

ManfredP
Posts: 115
Joined: Tue, 25. Apr 06, 12:40

Bin richtig verzweifelt und vollkommen irritiert: Wo sind meine Scripts geblieben?

Post by ManfredP » Sat, 20. Mar 10, 11:50

Hallo,
ich benötige ganz dringend ein paar Antworten, da ich ansonsten alles vergessen kann. Die Spielsequenz (sprich Handlung) ist durch und ich wollte noch so ein bisschen weitermachen. Fabriken Bauen und so :) .

Das habe ich auch getan und um die zu vernetzen, auch ein paar Scripts geschrieben. Ein Versuch, dass von Anfang an universell zu gestalten, ist kläglich gescheitert -zu viele Fehler :evil: .

Also habe ich statt dessen eine Anzahl Scripts verfasst: Eins, das die EZ aus dem SK auf die anderen Fabriken verteilt. Eins, dass zum Beispiel die boronische Fabrik für Projektilkanonen-Munition mit Erz versorgt (läuft von der Erzmine aus). Eins für das Bofu (vom Chemielabor) zur Munitionsfabrik. Und wieder eins für das Bogas von der Anlage zum Bofu-Labor. Also schon einige.

Um die Scripten rund laufen zu lassen und trotzdem abbrechen zu können, hatte ich einen Mechanismus eingebaut, der auf einer zusätzlichen, sekundären Resource in den Quellen (den Stationen, die liefern) aufbaut. Die wird ja nie angetastet (es sei denn, man macht das selbst) und daher kann die Zahl der Einheiten davon als Schalter dienen (0 alles normal, 1 Abbruch oder so). Das musste natürlich auch alles gesteuert und beeinflusst werden (die Resource modden, die Einheiten rein -oder rausschaffen etc.).

Dafür hatte ich ca. ein halbes Dutzend Scripte inzwischen fertig und zum Teil auch schon laufen. Dann wurde es Zeit zum Schlafen und ich habe den Rechner ausgemacht.

Jetzt gerade vor einer halben Stunde will ich weitermachen ... und es sind alle weg :headbang: :headbang: :headbang: . Die Scripte .... im Verzeichnis Scripts von X2 .... alle weg :evil: -die Älteren allerdings sind unangetastet, ob die Originale oder von mir schon früher geschriebene. Der Papierkorb weis von nichts. Ein Rekonstruktionsprogramm für Dateien unter XP findet keine Überbleibsel :rant: . Als hätte ich nur geträumt, die Scripte geschrieben zu haben. Das habe ich aber nicht, die hat es gegeben.

Das Gleiche ist mir zuvor schon einmal mit einem einzelnen Script passiert, das hatte allerdings einen 'Amoklauf' (99% CPU-Last) des Programms mit der Notwendigkeit zur Verwendung des Task-Managers zum Abschießen des Programms verursacht. Da vermutete ich dann noch einen Zusammenhang.

Doch diesmal: Die Scripten hatten funktioniert. Keine erkennbaren Fehler. :heuldoch: Wenn sich das wiederholen sollte, brauche ich nichts mehr zu machen :tuichdoch: . Eintags-Scripte sind natürlich kein Weg, dann kann ich das Programm von der Platte putzen. Fänd ich nicht gut.

Was könnte das verursacht haben? Ich habe ein paar Ergänzungen wie den Mod-Manager auf der Platte. Kann es da einen Zusammenhang geben? Gibt es irgend etwas, was die Platte geputzt und einen älteren Sicherungszustand rekonstruiert haben könnte -automatisch?

:gruebel: Kann mir irgend jemand helfen?

Tschüß

Manfred

User avatar
Chris Gi
Posts: 960
Joined: Wed, 20. Sep 06, 09:57
x3tc

Post by Chris Gi » Sat, 20. Mar 10, 12:15

Ich kenne das Phänomen eigentlich nur, wenn man Sektoren, Stationen, oder Schiffe direkt anspricht.

Sprich:

Code: Select all

fly to sector Argon Prime
statt

Code: Select all

$sector = get sector from universe index: x=1, y=3
fly to sector $sector
Solche Scripte funktionieren zwar, sie scheinen auch gespeichert zu sein, aber nur solange man X2 nicht verlässt. Startet man X2 neu, sind die Scripte weg.
Kann es vielleicht so etwas sein?
--------------------------------

[ external image ]

ManfredP
Posts: 115
Joined: Tue, 25. Apr 06, 12:40

Danke

Post by ManfredP » Mon, 22. Mar 10, 14:19

Chris Gi wrote:Ich kenne das Phänomen eigentlich nur, wenn man Sektoren, Stationen, oder Schiffe direkt anspricht.

Sprich:

Code: Select all

fly to sector Argon Prime
statt

Code: Select all

$sector = get sector from universe index: x=1, y=3
fly to sector $sector
Solche Scripte funktionieren zwar, sie scheinen auch gespeichert zu sein, aber nur solange man X2 nicht verlässt. Startet man X2 neu, sind die Scripte weg.
Kann es vielleicht so etwas sein?
Ja, das ist es tatsächlich (nicht für Sektoren, da bin ich eben auf den Code reingefallen und habe es erst hinterher bemerkt), aber die Stationen sind tatsächlich direkt im Code benannt worden. Demnach muss ich die Scripte also überarbeiten.

Tschüß

Manfred

User avatar
Chris Gi
Posts: 960
Joined: Wed, 20. Sep 06, 09:57
x3tc

Post by Chris Gi » Mon, 22. Mar 10, 14:37

Ja, den Exscriptor.

Ich hatte mit der vorherigen Version Probleme, aber laut Aussage von mmbecker funktioniert die neueste Version wieder für X2.

Nur, damit wir uns hier richtig verstehen:
Die Scripte enthielten nicht einmal Flugkommandos.
Das Problem an meinem Beispiel sind ja nicht die Flugkommandos. Sondern dass hier ein Sektor/eine Station/ein Schiff direkt angesprochen wird. Wenn ich einen Mod spiele, mag der Sektor Argon Prime überhaupt nicht existieren!
Die Scripte müssen schon etwas abstrakter geschrieben sein. Also wenn ein Scriptbefehl ein Argument besitzt vom Typ:
  • <Var/Sector>
    <Var/Ship>
    <Var/Station
    <Var/Warpgate>
    <Var/Environment>
    <Var/Sector Position>
    <Var/Asteroid>
oder eine der Abwandlungen davon, darf niemals ein konkretes Objekt übergeben werden, damit die Scripte gespeichert werden, sondern es muss eine Variable sein.
--------------------------------

[ external image ]

ManfredP
Posts: 115
Joined: Tue, 25. Apr 06, 12:40

Post by ManfredP » Mon, 22. Mar 10, 23:43

Chris Gi wrote:Ja, den Exscriptor.

Ich hatte mit der vorherigen Version Probleme, aber laut Aussage von mmbecker funktioniert die neueste Version wieder für X2.

Nur, damit wir uns hier richtig verstehen:
Die Scripte enthielten nicht einmal Flugkommandos.
Ich hab's ja gemerkt und korrigiert. Anmerkung für alle Anderen:Dieses Zitat stammt von einem Text, den ich kurz darauf, als ich einen Denkfehler bemerkt habe, komplett überarbeitet habe. Ich hatte nicht mit so schnellen Antworten gerechnet.

Das Problem an meinem Beispiel sind ja nicht die Flugkommandos. Sondern dass hier ein Sektor/eine Station/ein Schiff direkt angesprochen wird. Wenn ich einen Mod spiele, mag der Sektor Argon Prime überhaupt nicht existieren!
Die Scripte müssen schon etwas abstrakter geschrieben sein. Also wenn ein Scriptbefehl ein Argument besitzt vom Typ:
  • <Var/Sector>
    <Var/Ship>
    <Var/Station
    <Var/Warpgate>
    <Var/Environment>
    <Var/Sector Position>
    <Var/Asteroid>
oder eine der Abwandlungen davon, darf niemals ein konkretes Objekt übergeben werden, damit die Scripte gespeichert werden, sondern es muss eine Variable sein.
Und wie bekomme ich die Station in die Variable? Darf ich da eine konkrete Wahl treffen oder wird es dann auch wieder verworfen? Ist das bekannt?

Tschüß

Manfred

mmbecker
Posts: 92
Joined: Tue, 4. Jan 05, 14:24
x4

Post by mmbecker » Tue, 23. Mar 10, 01:12

Nein, eine direkte Wahl ist meines Wissens nicht möglich, weil das Uni sich ja jederzeit ändern kann.
Bei einer Station z.B. musst du nach der Station suchen und mit dem Ergebnis die Variable "füttern" (z.B. suche nach Handelsstation...).

mmbecker

mmbecker
Posts: 92
Joined: Tue, 4. Jan 05, 14:24
x4

Post by mmbecker » Tue, 23. Mar 10, 01:14

Nein, eine direkte Wahl ist meines Wissens nicht möglich, weil das Uni sich ja jederzeit ändern kann.
Bei einer Station z.B. musst du nach der Station suchen und mit dem Ergebnis die Variable "füttern" (z.B. suche nach Handelsstation...).

mmbecker

User avatar
Chris Gi
Posts: 960
Joined: Wed, 20. Sep 06, 09:57
x3tc

Post by Chris Gi » Tue, 23. Mar 10, 08:28

Eine einfache Variante insbesondere für die Tests ist auch, die Station/das Schiff als Argument dem Script mitzugeben.
Das ist nicht immer sinnvoll, oftmals muss man doch über die "find station", "find station in galaxy" oder "find ship" Instruktionen suchen.
--------------------------------

[ external image ]

User avatar
Generalwest
Posts: 2764
Joined: Thu, 31. May 07, 18:07
x4

Post by Generalwest » Sat, 29. May 10, 19:07

als ich mir letzes Jahr X² zugelegt habe hat mich das auch immer wahnsinnig gestört das es kein Komplex gab oder ich es nich gefunden habe.

auf alle hab ich mir n simples Script dafür geschrieben also fals jemand intresse hat an einer "Blaupause" um sich da n paar Anregungen zu holen stell ich den Code mal hier rein.

001 while [TRUE]
002 skip if [THIS] -> exists
003 ║║return null
004
005 $station.1.array = $sek -> get player owned station array from sector
006 $station.2.array = $sek -> get player owned station array from sector
007
008 $station.1.size = size of array $station.1.array
009 while $station.1.size > 0
010 ║║dec $station.1.size =
011 ║║$station.1 = $station.1.array[$ns.1]
012 ║║$ware.array = $station.1 -> get tradeable ware array from station
013 ║║$ware.size = size of array $ware.array
014 ║║$nw.1 = 0
015 ║║while $ware.size > 0
016 ║║║dec $ware.size =
017 ║║║$ware = $ware.array[$nw.1]
018 ║║║$station.2.size = size of array $station.2.array
019 ║║║while $station.2.size > 0
020 ║║║║dec $station.2.size =
021 ║║║║$station.2 = $station.2.array[$station.2.size]
022 ║║║║
023 ║║║║$ifnotuse = $station.1 -> uses ware $ware as primary resource
024 ║║║║$ifuse = $station.2 -> uses ware $ware as primary resource
025 ║║║║
026 ║║║║if not $ifuse != [TRUE] AND $ifnotuse == [TRUE]
027 ║║║║║
028 ║║║║║$amount.1 = $station.1 -> get amount of ware $ware in cargo bay
029 ║║║║║$amount.2 = $station.2 -> get free amount of ware $ware in cargo bay
030 ║║║║║$amount.3 = [THIS] -> get free amount of ware $ware in cargo bay
031 ║║║║║$amount.4 = $amount.2 / 2
032 ║║║║║
033 ║║║║║if $amount.1 >= $amount.4
034 *$flyer = [THIS] -> call script !move.movetostation : station=$station.1
035 ║║║║║║@ while [THIS] -> fly to station $station.1
036 ║║║║║║║@ = wait 1000 ms
037 ║║║║║║║if [THIS] -> is docked
038 ║║║║║║║║if $amount.3 >= $amount.4
039 ║║║║║║║║║= [THIS] -> load $amount.4 units of $ware
040 ║║║║║║║║║$load.out = $amount.4
041 ║║║║║║║║║@ = wait 10000 ms
042 ║║║║║║║║║break
043 ║║║║║║║║end
044 ║║║║║║║║
045 ║║║║║║║║if $amount.3 < $amount.4
046 ║║║║║║║║║= [THIS] -> load $amount.3 units of $ware
047 ║║║║║║║║║$load.out = $amount.3
048 ║║║║║║║║║@ = wait 10000 ms
049 ║║║║║║║║║break
050 ║║║║║║║║end
051 ║║║║║║║end
052 ║║║║║║end
053 ║║║║║║
054 *write to player logbook $station.1
055 *write to player logbook $station.2
056 *write to player logbook $amount.1
057 *write to player logbook $amount.2
058 *write to player logbook $amount.3
059 *write to player logbook $amount.4
060 *write to player logbook $load.out
061 *write to player logbook $ware
062 ║║║║║║
063 ║║║║║║
064 *$flyer = [THIS] -> call script !move.movetostation : station=$station.2
065 ║║║║║║@ while [THIS] -> fly to station $station.2
066 ║║║║║║║@ = wait 1000 ms
067 ║║║║║║║if [THIS] -> is docked
068 ║║║║║║║║$load.out = [THIS] -> get amount of ware $ware in cargo bay
069 ║║║║║║║║= [THIS] -> unload $load.out units of $ware
070 ║║║║║║║║@ = wait 2000 ms
071 ║║║║║║║║break
072 ║║║║║║║end
073 ║║║║║║end
074 ║║║║║║
075 ║║║║║║
076 ║║║║║end
077 ║║║║end
078 ║║║end
079 ║║end
080 end
081 @ = wait 20 ms
082 end
083 return null
‌‍‌‍


wenn man in Zeile 34 oder 35 ne abfrage bzw ein local variable speichert mit nem Array der waren und diese dann mit dem vergleicht was das Script transportieren will, könnte man erreichen das die schiffe sich untereinander absprechen sprich wenn 20 Frachter die Player Stationen miteinander Verbinden, würde jeder TS vor dem los fliegen checken ob die Ware bereits von nem Kollegen geliefert wird. Die local muss man auch wieder austragen in Zeile 70 vor dem brake. Allerdings müsste man etwas probieren um die waren aus dem Array raus zu bekommen das hab ich nie versucht. Wolltsch nur mal dazu Posten falls sowas ähnliches je wieder einer brauchen sollte.

Möglich wäre es auch das Script etwas abzuändern in dem Man einen TL dazwischen baut der als Großraum Transe ganze Sektoren verbindet. Sprich Argon Prime zum beispiel mit Janmus Zura. Wäre auch so ähnlich wie das Script von ScaTr mit seinem Mod mit denen Ausrüstungsdockverbindungdingens für TC. (Sry wenn ich den nick nich richtig getippt oder den Autor verwechselt hab)

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