Bin richtig verzweifelt und vollkommen irritiert: Wo sind meine Scripts geblieben?
Moderators: Moderatoren für Deutsches X-Forum, Scripting / Modding Moderators
-
- Posts: 115
- Joined: Tue, 25. Apr 06, 12:40
Bin richtig verzweifelt und vollkommen irritiert: Wo sind meine Scripts geblieben?
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 .
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 . Die Scripte .... im Verzeichnis Scripts von X2 .... alle weg -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 . 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. Wenn sich das wiederholen sollte, brauche ich nichts mehr zu machen . 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?
Kann mir irgend jemand helfen?
Tschüß
Manfred
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 .
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 . Die Scripte .... im Verzeichnis Scripts von X2 .... alle weg -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 . 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. Wenn sich das wiederholen sollte, brauche ich nichts mehr zu machen . 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?
Kann mir irgend jemand helfen?
Tschüß
Manfred
-
- Posts: 960
- Joined: Wed, 20. Sep 06, 09:57
Ich kenne das Phänomen eigentlich nur, wenn man Sektoren, Stationen, oder Schiffe direkt anspricht.
Sprich:
statt
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?
Sprich:
Code: Select all
fly to sector Argon Prime
Code: Select all
$sector = get sector from universe index: x=1, y=3
fly to sector $sector
Kann es vielleicht so etwas sein?
-
- Posts: 115
- Joined: Tue, 25. Apr 06, 12:40
Danke
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.Chris Gi wrote:Ich kenne das Phänomen eigentlich nur, wenn man Sektoren, Stationen, oder Schiffe direkt anspricht.
Sprich:stattCode: Select all
fly to sector Argon Prime
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.Code: Select all
$sector = get sector from universe index: x=1, y=3 fly to sector $sector
Kann es vielleicht so etwas sein?
Tschüß
Manfred
-
- Posts: 960
- Joined: Wed, 20. Sep 06, 09:57
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 müssen schon etwas abstrakter geschrieben sein. Also wenn ein Scriptbefehl ein Argument besitzt vom Typ:
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:
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 enthielten nicht einmal Flugkommandos.
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>
-
- Posts: 115
- Joined: Tue, 25. Apr 06, 12:40
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.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.
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?
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:oder eine der Abwandlungen davon, darf niemals ein konkretes Objekt übergeben werden, damit die Scripte gespeichert werden, sondern es muss eine Variable sein.
- <Var/Sector>
<Var/Ship>
<Var/Station
<Var/Warpgate>
<Var/Environment>
<Var/Sector Position>
<Var/Asteroid>
Tschüß
Manfred
-
- Posts: 92
- Joined: Tue, 4. Jan 05, 14:24
-
- Posts: 92
- Joined: Tue, 4. Jan 05, 14:24
-
- Posts: 960
- Joined: Wed, 20. Sep 06, 09:57
-
- Posts: 2764
- Joined: Thu, 31. May 07, 18: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)
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)