[-UPDATE-] Navigationssoftware ST1 - VERSION 7.01 14.04.2011

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

User avatar
SpaceTycoon
Posts: 1190
Joined: Wed, 6. Nov 02, 20:31
x4

Post by SpaceTycoon » Sat, 16. Apr 05, 11:27

Ariadne wrote:Nachdem ich mit NavSoftST1-V6.02 feststellen musste, dass mir bei Neubeginn von X2 nur so die Credits aus den Taschen gezogen worden sind, musste ich nach Abhilfe sinnen. Es kann nicht sein, dass ein so gutes Script anderen Anfängern vorenthalten bleiben muss, weil den fortgeschrittenen Spielern ein paar Millionen Credits weniger nicht jucken.
Einige Posts vorher in diesem Topic ist einem Spieler der Preis von 16 Cr. zu niedrig.
Und er hat das Script geändert, um ihn zu erhöhen... :lol:
Da unsignierte Scripte leicht zu ändern sind, kann es da ja jeder halten wie er will... .. so wie Du es nachfolgend beschrieben ja auch versucht hast, allerdings noch nicht erfolgreich
Ariadne wrote:Daher meine Vorgehensweise für Betroffene: Ich habe mir den Sourcecode der xml Dateien NavSoftST1 und SupplySoftST1 im Internetexplorer (ein geeigneter Browser kann xml interpretieren und als Sourcecode anzeigen) angesehen und bin fündig geworden in der Datei plugin.navsoftwareST1.jump.xml, dort finden sich die Übeltäter:

Code: Select all

007   * Special capability if boost extension is installed in ship 
008   $EnergyPrice = -16 
009   $BoostJumpPrice = 0 
010   $BoostDrive = [THIS] -> get true amount of ware Boost Erweiterung in cargo bay 
011   skip if not $BoostDrive 
012    $BoostJumpPrice = -120 
Damit muss der geneigte Leser nur noch die Werte für $EnergyPrice und für $BoostJumpPrice ändern und schon kann man ohne finanziellen Ruin die Skripte sinnvoll weiter verwenden.
Richtig, man braucht nur die minus 16 (-16) und/oder minus 120 (-120) in einen gewünschten anderen negativen Wert zu ändern und das Script zu speichern. Allerdings muß dies im Scripteditor gemacht werden (siehe unten)! Falls der Wert in eine positive Zahl geändert wird, verdient man sogar bei jedem Sprung Geld!
Ariadne wrote:Immerhin nicht hardcoded irgendwo im Sourcecode sondern als Variable deklariert mit Wertzuweisung. Trotzdem gehört es zu einer stukturierten Programmierung, dass man Deklarationen vor Beginn von Ablaufstatements plaziert, das gilt auch für modulübergreifende Wertzuweisungen. Zum anderen steht da immer noch Version 6, obwohl es Version 6.02 ist. Zur Dokumentation gehört auch dass Änderungen protokolliert werden, weil man nach zwei Wochen nicht mehr weiss, was man alles geändert hat.
Der X2 Scriptinterpreter arbeitet nur mit Ganzzahlen. Weder bei der Versionsnummer, noch im Rahmen vor Variablenzuweisungen können Dezimalzahlen mit Punkt oder Komma verwendet werden. Wenn Berechnungen ungerade Zahlen ergeben, rundet der Scriptinterpreter diese auf oder ab zur nächsten Ganzzahl.
Ariadne wrote:Für Änderungen kann der eingebaute X2-ScriptEditor verwendet werden - wer allerdings weiss wie mühsam die Tipperei mit dem Editor sein kann, wird verstehen dass ich mir das bei 450 MHz CPU nicht antun will. Ich habe daher eine geeignete Zeichenfolge im Umfeld der Änderung im Internetexplorer herausgesucht und als Suchbegriff in NotePad verwendet, um die Position aufzufinden, und dort die Änderung durchgeführt und anschliessend noch mal im Internetexplorer kontrolliert. Das war gar nicht so schwierig, hat den gewünschten Erfolg gebracht und man kann so den lieben Skriptern auch mal auf die Finger sehen.
Nein, das funktioniert nicht! Ein abgespeichertes Script besteht aus zwei Teilen, einem im xml-fähigen Browser lesbaren Quellcode (Sourcecode) und einem dort nicht sichtbaren eigentlichen Programmcode (Codearray). Schaut man im Browser den Quellcode der xml-Datei an (oder in einem beliebigen Texteditor), kann man das Codearray am Ende der Seite sehen. Änderungen eines Scriptes in einem externen Editor (xml-Editor oder einfacher Texteditor) ändern nicht das Codearray - das heißt, das eigentliche Script (= Codearray) bleibt völlig unverändert. Ändert man so ein Script, kann es im ungünstigsten Fall gar nicht mehr in den Scripteditor geladen werden und/oder funktioniert nicht mehr.
Der Scripteditor von X2 kompiliert beim Speichern eines Scriptes die Klartext-Befehle in einen alphanumerischen Code. Ausschließlich dieser wird vom Scriptinterpreter abgearbeitet. Das Codearray und der Quellcode sollten übereinstimmen. Daher können Änderungen nur im X2-Scripteditor gemacht werden.
Es gab bereits Ansätze, einen externen Editor zu entwickeln. Darüber gibt es hier auch irgendwo im Forum ein Topic. Da aber die Codes für das Codearray nicht vollständig entschlüsselt werden konnten, kam das Projekt nicht zum Abschluß.
Ariadne wrote:Apropos auf die Finger sehen: nachdem ich neugierig geworden bin fand ich bei signierten Skripten teilweise abenteuerliche Konstruktionen um EZ herbeizubeamen, Schiffe aus dem Nichts herbeizuzaubern und viele Wunder mehr. Dinge die man nach offiziellen Regeln eigentlich als Cheaten einzuordnen hat. Auch wenn der Spieler Wunder oftmals teuer bezahlen muss, so bleiben sie doch Wunder ... da habe ich mich dann auch gewundert. Nun denn, solange es der Spielfreude dient ...
Tja, so ist es. Grundsätzlich ist X2 ein Spiel und nichts anderes. Daher sollte man Dinge grundsätzlich auch nicht so genau nehmen ("zaubern", Dinge, die nicht ganz konform der Realität sind, etc). Leider werden diese Angelegenheiten mit zweierlei Maß gemessen.
Last edited by SpaceTycoon on Sat, 16. Apr 05, 12:17, edited 1 time in total.

User avatar
SpaceTycoon
Posts: 1190
Joined: Wed, 6. Nov 02, 20:31
x4

Post by SpaceTycoon » Sun, 17. Apr 05, 03:30

Neues in der Navigationssoftware ab 17.04.2005:

Im Hauptscript wird zu Beginn das aktuelle Command des Schiffes in einer Variablen gesichert. Dann ein vom Scriptargument abhängiges neues Command (Sprungbefehl) gesetzt, den man in der Eigentumsübersicht oder in der Fabrikschiffübersicht, etc. sehen kann. Vor Ende des Scriptes wird das Command wieder auf das vorher gesicherte zurückgesetzt. Sinnvoll für den Aufruf des Hauptscriptes von anderen Scripten aus.

Damit gingen einige weitere Codeänderungen einher und zudem habe ich noch die Wait-Zeiten etwas verringert

Ariadne
Posts: 35
Joined: Wed, 9. Feb 05, 15:00
x2

Post by Ariadne » Mon, 18. Apr 05, 21:02

@ SpaceTycoon

Oha, danke schön, dass ich da auf dem Glatteis ausgerutscht bin und Du die Dinge wieder richtig gestellt hast :oops:

Das liegt daran, dass ich mit dem ScriptEditor noch nicht allzu viel Erfahrung habe, wenn auch ich mit Programmlogik und
ScriptInterpretern vertraut bin. Mein faux pas liegt an der Vernachlässigung des schon merkwürdigen Codearrays ... merkwürdige Art zu programmieren oder zu skripten, wie lustig muss da der Parser des SkriptEditors aussehen.

Das Codearray gibt's nur aus Performancegründen? Der ScriptEditor nimmt als Interpreter wohl eher eine Hybridstellung ein einmal als runtime environment und zweitens als editor, ohne den ScriptEditor läuft daher wohl nichts (modified hin oder her und Freischaltung bedeutet nur Zugriff durch den User) ... (guckt dem EgonTeam verwundert hinterher, sieht so eine allgemein übliche Syntax eines ScriptInterpreters aus?). Na gut, immerhin es läuft :wink:

Übrigens stammte meine Vorgehensweise von irgendeinem poster, die ich wohl zu arglos übernommen habe, naja, selbst reingefallen :roll:

Gruss Ariadne

Ariadne
Posts: 35
Joined: Wed, 9. Feb 05, 15:00
x2

Post by Ariadne » Mon, 18. Apr 05, 23:20

Im Internet Explorer wird eine xml Datei nur als Source dargestellt ohne CodeArray. Per Ansicht / Quelltext wird nur der ASCII-Text im Editor ohne Formatierung angezeigt. Für Anzeige und Editieren von konformen XML-Dateien empfehle ich den freien open source editor Notepad++ v2.8 unter http://notepad-plus.sourceforge.net Da sieht man auch besser das formatierte Codearray.

Gruss Ariadne

Ariadne
Posts: 35
Joined: Wed, 9. Feb 05, 15:00
x2

Post by Ariadne » Thu, 21. Apr 05, 09:36

@ SpaceTycoon

Wenn ich mit dem X2 internen Script-Editor numerische Werte beim jump-Script verändere, wann werden die veränderten Werte aktiv?

(1) Genügt hierzu Reinit Script Caches
(2) Game saven, damit auch die Save-Datei die veränderten Werte der editierten Script-Datei enthält.
(3) Müssen alle Versorgungsschiffe einen neuen Versorgungsbefehl erhalten?

Insbesondere (3) wäre bei vielen Versorgungsschiffen mit einem Riesenaufwand verbunden. Schritt (3) ist wann erforderlich (etwa nach Editieren von Versorgungsskript)?

Gruss Ariadne

User avatar
SpaceTycoon
Posts: 1190
Joined: Wed, 6. Nov 02, 20:31
x4

Post by SpaceTycoon » Thu, 21. Apr 05, 12:10

Ariadne wrote:@ SpaceTycoon
Wenn ich mit dem X2 internen Script-Editor numerische Werte beim jump-Script verändere, wann werden die veränderten Werte aktiv?
(1) Genügt hierzu Reinit Script Caches
Ja, das genügt. Allerdings muß es beim Script-Editor noch einen Bug geben: Ich habe schon Scripte geändert und gespeichert. Dann wieder geladen, nochmal geändert, wieder gespeichert. Und mußte zum Schluß (nach Beenden und Neustarten von X2) feststellen, daß die gespeicherten Scripte nicht auf der Festplatte gelandet sind! Insbesondere bei Scripten mit dem Prefix "init." ist mir das schon häufiger passiert.
Ariadne wrote:(2) Game saven, damit auch die Save-Datei die veränderten Werte der editierten Script-Datei enthält.
Das wäre bei Änderung des jump-Scriptes nicht nötig. Wenn das Script just in dem Moment ausgeführt würde, während man speichert, so würde es beim nächsten Ladevorgang noch zu Ende ausgeführt und danach das neue Script verwendet. Ein Script wie das Jump-Script, das nicht in einem Endlos-Loop läuft und daher immer wieder neu gestartet wird, macht da sehr wenig Probleme. Da muß man auch nicht zwingend das Game speichern.
Ariadne wrote:(3) Müssen alle Versorgungsschiffe einen neuen Versorgungsbefehl erhalten?
Insbesondere (3) wäre bei vielen Versorgungsschiffen mit einem Riesenaufwand verbunden. Schritt (3) ist wann erforderlich (etwa nach Editieren von Versorgungsskript)?
Nein, grundsätzlich muß bei Änderung des Jump-Scriptes kein Versorgungsbefehl neu gegeben werden, da wie bereits gesagt, das Jump-Script vom Versorgungsscript aus immer neu gestartet wird. Davon gibt es aber auch Ausnahmen. Und zwar bei Änderungen im Jump-Script, die erzwingen, auch das Versorgungsscript zu ändern (z.Bsp. Änderung der Argumente des Jumpscriptes für den Scriptaufruf).

Schritt 3 ist immer nach Änderung des Versorgungsscriptes nötig. Da dieses Script auf jedem TS, wo es gestartet ist, in einer Endlos-Schleife läuft. Eine Script -Änderung wird insofern von diesen Schiffen gar nicht wahrgenommen. Ein Script wird von jedem Objekt, auf dem es läuft, separat geladen und wenn es sich nicht vom Ablauf her selbst beendet, läuft dieses Script unverändert auf diesem Objekt ewig. 5 TS mit laufendem Versorgungsscript bedeutet 5x unabhängiger Lauf dieses Scriptes. X2 läßt sich mit einem Terminal-Server mit Clients vergleichen. Angenommen man startet in zwei verschiedenen Terminal-Client Sitzungen Word, so sind dies zwei völlig unabhängig laufende Word-Programme, auch wenn genau dieselbe EXE-Datei gestartet wurde.

Old Man II
Posts: 1913
Joined: Wed, 6. Nov 02, 20:31
x3ap

Post by Old Man II » Fri, 22. Apr 05, 08:14

Moin,

SpaceTycon

sach mal....... ich hab dein letztes Update installiert. Seither klappt der Sprung innerhalb eines Sektors nicht mehr wenn es sich um das Schiff handelt in dem ich sitze !
Ich muß den Befehl mehrmals wiederholen und dann funktioniert es.

Hmmmm, ne Idee?

Noch was, stammt der Read Text 2010-503 von dir?

CU Tom

User avatar
SpaceTycoon
Posts: 1190
Joined: Wed, 6. Nov 02, 20:31
x4

Post by SpaceTycoon » Sat, 1. Oct 05, 16:27

Geändert in Version 6.06 vom 01.10.2005

1. Sprachausgabe und Sound
Das Timing für die Geräuschausgabe in der '.sound'-Datei wurde noch etwas geändert, damit das besser paßt.
Die Freigabe der Schiffssteuerung beim Befehl "Sprung an Position" wurde verkürzt. Das Schiff ist jetzt bereits wieder lenkbar, obwohl die Sprachausgabe noch läuft.
Kleiner Bug gefixt: Beim Abbruch eines Sprungbefehles (Taste 'u') wurde trotzdem der Sound und die Sprachausgabe für den Sektor-interen Sprung ausgegeben. Gefixt - das Zusatz-Script für den Sound wird in dem Fall jetzt ebenfalls abgebrochen.

Neu in Version 6.05 vom 28.08.2005

1. Sprachausgabe und Sound
Beim Sektor internen Sprung wird ein Sound abgespielt. Die Sprachausgabe wurde geändert/verbessert. Um das Timing für Bordcomputer-Nachrichten und den Sound im Zusammenhang mit einem echten Sprung anders/besser hinzubekommen, mußte ich ein zusätzliches Script schreiben, das während der Sprungsequenz als zusätzlicher Task läuft. Gar nicht so einfach, das Timing bei Audio-Geschichten :mrgreen: Daher habe ich die Version 6.04 gar nicht erst rausgebracht.

Neu in Version 6.03 vom 14.05.2005

1. Sprachausgabe
Der Bordcomputer spricht (nur wenn das Schiff jumpt, in dem der Spieler sitzt) zusätzliche Texte. Das bringt wieder etwas mehr Leben ins Spiel.
Je nachdem, ob im Schiff der Boostantrieb für den Sektor-Kurzsprung installiert ist oder nicht, sind die Texte etwas anders. Der (vergebliche) Versuch, den Sektor-Kurzsprung ohne Boosterweiterung auszuführen, wird auch mit einer Sprachausgabe quittiert.
Den Script-Befehl zur Sprachausgabe gibt es erst in X2 Version 1.4! Daher funktioniert das nicht unter X2 1.3.
2. Änderung der Sprach-xml Datei
Zum Ausschalten von Konflikten unter verschiedenen Versionen meiner Scripte nutzt jede Funktion nun eine eigene Sprachdatei. Die Navigationssoftware ST1 hier verwendet nun 4x7776.xml anstelle 4x7777 wie zuvor. Die 4x7777 wird in Zukunft nur noch von der Versorgungssoftware ST1 benutzt. Auch dort gibt es demnächst Sprachausgabe - aber in einer anderen Form.
3. Hauptscript umprogrammiert
Das Hauptscript mußte ich etwas umschreiben. Es muß ein Bug sein, daß der Scriptbefehl "use jumpdrive" manchmal erst nach vielen Minuten des Wartens ausgeführt wird, wenn direkt vor diesem ein "skip if" als Script-Befehl benutzt wird. Ohne Einfluß auf die Funktionalität habe ich daher den Programmablauf etwas verändert.
4. Manual überarbeitet
Die der ZIP beigefügte README wurde ebenfalls angepaßt/überarbeitet.

User avatar
SpaceTycoon
Posts: 1190
Joined: Wed, 6. Nov 02, 20:31
x4

Post by SpaceTycoon » Thu, 14. Apr 11, 20:40

Version 7.01 releast.

Näheres dazu im ersten Beitrag auf der Hauptseite.

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

Post by Ghostrider[FVP] » Mon, 25. Apr 11, 14:38

Ha das ist ja ne coole Sache ein Update :)

ich habs schon früher geliebt, ist ein super Script für X2 nur schade das es das nicht auch für X3R/TC gibt.

Gruss
:)
Föderation Vereinter Planeten -=)FVP(=-
Since 1998... join the future! X3-The Sonen
Image
Ghostrider's X-Universum [INDEX]Lucikes Scripts & Mods

User avatar
SpaceTycoon
Posts: 1190
Joined: Wed, 6. Nov 02, 20:31
x4

Post by SpaceTycoon » Mon, 25. Apr 11, 16:03

Doch gibts jetzt! :x3:

Ich bin grade dabei, die Version für X3-TC zu veröffentlichen.
Und eine für X3-Reunion folgt dann auch noch.

In meiner Handelserweiterung ST1 für X3-TC (die hab ich grade veröffentlicht) ist die Navisoftware auch enthalten.

dv.underworld
Posts: 8
Joined: Sun, 2. Oct 11, 20:23
xr

Post by dv.underworld » Sat, 27. Jul 13, 13:54

SpaceTycoon wrote:Doch gibts jetzt! :x3:

Ich bin grade dabei, die Version für X3-TC zu veröffentlichen.
Und eine für X3-Reunion folgt dann auch noch.

In meiner Handelserweiterung ST1 für X3-TC (die hab ich grade veröffentlicht) ist die Navisoftware auch enthalten.

Hallo SpaceTycoon,

Wie sieht es aus mit dem Script für X3:R bitte?
Danke im Voraus für deine Arbeit und Antwort.

User avatar
SpaceTycoon
Posts: 1190
Joined: Wed, 6. Nov 02, 20:31
x4

Post by SpaceTycoon » Sat, 27. Jul 13, 16:32

Hi, X3:Reunion habe ich aus Zeitgründen bisher zurückgestellt.
Ich weiss auch nicht wann ich da nochmal dazu komme.

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