Grundlegende Befehle

Aus X-Lexikon
Zur Navigation springenZur Suche springen



So, hier kommen wir nun zu den Grundlagen. Im Spiel haben wir den Script-Editor geöffnet und ein neues Script erstellt. Dies werden wir nun spielerisch mit Code füllen.
Eine neue Zeile erstellt man mit "New Line", was ganz am Ende des Codes zu finden ist. Dann öffnet sich die Befehlsliste, und wir suchen uns dort den entsprechenden Befehl heraus.

Geld

Zunächst kommen wir zur wohl einfachsten Sache, dem Ändern des Spielerkontos. Dies wird mit folgendem Befehl gemacht (zu finden in den Trade Commands):

Hier haben wir einmal den festen Code, und zwar den Block "add money to player:". Daran können wir nichts ändern.
Trotzdem, hier treffen wir nun auf unseren ersten Parameter, nämlich "<Var/Number>". Diesen können und müssen wir verändern.
Über "New Line" fügen wir also nun diesen Befehl unserem Code hinzu. Dann öffnet sich sofort ein Fenster namens "Script input". Dort wird alles aufgelistet, was wir anstelle von "<Var/Number>" einsetzen können.

Bei dieser Gelegenheit kommen wir direkt einmal zu einer Variablen. In der Liste scrollen wir dazu nun nach ganz unten, und wählen den Punkt "<Variable>" aus. Nun öffnet sich ein Fenster, in dem wir den Namen der Variable eingeben müssen. Nennen wir sie einfach mal "Betrag".

Daraufhin seht Ihr Euren Script-Code, in dem nun Euer Befehl eingetragen wurde. So sieht der gesamte Code bis jetzt aus:


Damit kommen wir dann zum nächsten Punkt, und zwar den Variablen.

Variablen

Variablen sind mit das Wichtigste beim Scripten. Eine Variable kann alles sein, ein Schiff, ein Sektor, ein Planet, eine Zahl, ein String, sogar ganze Gruppen von Objekten, sog. Arrays, und so weiter und so weiter.
Wichtig ist aber, dass eine Variable ganz zum Anfang auf den Wert 'null' gesetzt wird. Sprich also, sie beinhaltet erst einmal ganz genau gar nichts.
Daher müssen wir ihr einen Wert zuweisen. Dies machen wir mit folgendem Befehl, der unter den "General Commands" zu finden ist:

Den fügen wir nun mittels "New Line" unserem Code hinzu. Wieder öffnet sich das Fenster "Script Input".
Und hier offenbart sich einer der größten Vorteile des internen Script-Editors: Ganz oben, unter "Available Variables", finden wir eine Liste mit den bisher in diesem Script genutzten Variablen.
Wir haben bisher genau eine genutzt, nämlich "Betrag", und die finden wir auch in der Liste wieder. Also wählen wir sie aus. Der Befehl nimmt danach schon eine konkrete Form an, er sieht dann folgendermaßen aus:

Die Punkte ("...") stehen hier dafür, dass man den Code noch erweitern kann, man könnte theoretisch noch viel mehr Sachen in dieser Zeile erledigen.
Uns interessiert aber viel mehr das "<?>", denn dort können wir jetzt der Variable einen Wert zuweisen. Also markieren wir es und drücken "Enter".

Erneut öffnet sich nun das Fenster "Script Input". Wie Ihr seht, ist die Liste nun weitaus länger, denn es können hier weitaus mehr Dinge eingesetzt werden. Wir wollen hier jetzt eine Nummer haben, also klicken wir auf <Number>.
Es öffnet sich nun ein Fenster, wo wir die Nummer eingeben müssen. Diese Nummer gibt ja den Geldbetrag an, den der Spieler erhalten soll, daher müssen wir den auch hier angeben. Als Test geben wir mal 1.000.000 ein. Versucht nicht, Punkte einzugeben - das klappt sowieso nicht - sondern nur die Zahl, also 1000000. Achtet darauf, dass Ihr wirklich alle Nullen habt - X³ lässt doppelte Buchstaben und Zahlen gerne mal aus. Mit Enter bestätigen wir das Ganze.

Unser Code schaut jetzt so aus:

Der Code sieht schön aus, aber er ist leider falsch...
Wir schauen uns einmal den Ablauf an: Zuerst wird dem Spielerkonto ein Creditwert in Höhe von "$Betrag" hinzugefügt, und erst danach wird festgelegt, wie hoch der Betrag werden soll. Das geht ja nicht, denn wir müssen erst die Größe des Betrages kennen, um ihn dann dem Spielerkonto hinzuzufügen. Dazu macht Ihr jetzt folgendes: Ihr markiert die zweite Zeile, also die, wo wir der Variable "$Betrag" den Wert 1000000 zuweisen, und drückt die Taste x. Damit schneidet Ihr die Zeile aus. Nun markiert Ihr die Zeile, vor der Ihr es einfügen wollt, also hier die erste Zeile. Nun drückt Ihr die Taste v, um den Code davor einzufügen.

Nun sollte das Ganze so aussehen:


Kommentare

Insbesondere bei langen, komplexen Scripts sind Kommentare sehr sinnvoll. Ein Kommentar ist dabei ein selbstgewählter Text, der von der Script-Engine selbst jedoch ignoriert wird.
Einen Kommentar fügt Ihr mit folgenden Befehl hinzu, der in den General Commands zu finden ist:

Den wählt Ihr nun aus, und des öffnet sich ein Fenster, wo Ihr den Text, der im Kommentar steht, eingeben müsst. Hier gebe ich nun also an, was unser Script macht, also gebe ich z.B. ein "Fügt 1000000 Credits auf das Spielerkonto hinzu."
Nun steht dieser Code aber noch am Ende, ich will ihn aber als eine Art Überschrift am Anfang haben. Dazu mache ich das selbe wie vorhin, nämlich Ausschneiden und Einfügen.
So sieht der Code jetzt aus:

Zwecks Formatierung und Übersicht habe ich hier den Kommentar mal in Kursiv geschrieben; im Script-Editor ist er in grauer Schriftfarbe dargestellt.

Wichtig

Nutze niemals das Zeichen "<" oder das Zeichen ">" in einem Kommentar! Diese zerstören das Script.

Auskommentieren

Wie Ihr ja jetzt wisst, werden Kommentare ja vom Script-Code ignoriert. Man kann jetzt zu Testzwecken einzelne Befehle zu einem Kommentar machen, sodass sie ignoriert werden.
Nutzt die Tasten ; beziehungsweise :, um einen Befehl zum Kommentar zu machen und umgekehrt.


Die while-Schleife

Die sogenannte while-Schleife ist im Grunde genommen eine Wiederholung. "While" heißt übersetzt so viel wie "solange wie", und genau so funktioniert die Schleife auch. Solange wie die Bedingung erfüllt ist, wird die Schleife wiederholt.

Erstellt wird sie mit dem Befehl:

Den wählt Ihr aus, und dann müsst Ihr ja einen Wert anstelle des Parameters "<RetVar/IF>" einsetzen. Nun wählt Ihr aber nicht eine Variable aus, sondern den Wert "while". Dann habt Ihr dort stehen:

Anstelle des Fragezeichens könnt Ihr nun eine Bedingung erstellen.

Einfache Zählschleife

Die Zählschleife macht eine bestimmte Anzahl von Wiederholungen. Um diese Anzahl festzulegen, nutzt Ihr eine Variable.
Znächst erstellen wir die Basis für eine Schleife, also wie eben gelernt die Zeile:

Anschließend gehen wir unter "General Commands"->"Flow Control" und wählen dort "End Conditional" aus. Damit legen wir das Ende der Schleife fest. Nun sieht der Code so aus:

Nun fügen wir des Designs wegen dazwischen ein paar leere Zeilen ein, die wir nachher füllen können. Dafür markieren wir die Zeile mit dem end, und drücken dann ein paar mal auf die Taste Einfg, je nachdem, wie viele Zeilen wir haben wollen. Das ganze sieht dann etwa so aus:

Jetzt können wir den Code füllen.

Zielsetzung: Wir wollen eine Schleife haben, die genau 10 Mal durchläuft, und bei jedem Mal dem Spieler 1.000.000 Credits auf das Konto packt.

Dazu werden wir erst einmal eine neue Zeile erstellen, in der wir die Variable "Zaehler" auf den Wert 10 setzen. Das haben wir vorhin gelernt, und so können wir es direkt auch anwenden. Anschließend packen wir die Zeile ganz an den Anfang unseres Codes.
Wenn Ihr nicht wisst, wie Ihr das macht, dann schaut Euch noch mal den Abschnitt "Variablen" an.
Haben wir alles gemacht, so schaut unser Code jetzt so aus:


Jetzt wollen wir den Parameter "<?>" durch eine Bedingung ersetzen. Die Bedingung soll lauten: Solange der Zähler größer ist als 0 soll der Code wiederholt werden.
Das können wir jetzt wörtlich in die Scriptsprache übersetzen, d.h. die Bedingung sieht dann folgendermaßen aus:

Das "<?>" habe ich hier durch die Variable "$Zaehler" ersetzt, und die weiteren Teile habe ich durch Klicken auf das "..." am Ende des Befehls erstellt.
Dieser Code funktioniert zwar, aber es geht noch kürzer. Und zwar indem wir einfach nur schreiben:

Dieser Code hat hier genau die selbe Funktion, ist aber kürzer.

Also sieht das ganze insgesamt jetzt so aus:


Jetzt haben wir schon fast das Grundgerüst der Schleife fertig. Leider wird in der while-Schleife die Variable "Zaehler" nicht automatisch um 1 verkleinert. Somit würde bei unserem Code hier die Schleife ewig durchlaufen, da die Variable "Zaehler" immer auf dem Wert 10 bleibt.
Wir müssen sie daher bei jedem Schleifendurchlauf manuell um 1 verkleinern. Dies machen wir mit dem Befehl (aus den "General Commands"):

Dieser Befehl senkt die Variable in "<RetVar>" um 1, d.h. sie wird dann z.B. von 10 auf 9 verkleinert. Anstelle von <RetVar> kommt jetzt also unsere Variable "$Zaehler" dorthin. Diese Zeile kommt dann direkt unter den Schleifenbeginn, also direkt unter das while. So sieht das Ganze dann aus:

Bei Euch ist die Zeile mit "dec $Zaehler =" nun eingerückt. Ich habe zwecks Formatierung einen senkrechten Strich ("|") davor gesetzt, der ist bei Euch nicht da.

Jetzt haben wir das Grundgerüst fertig.

Nun kommt noch unser Code in die Schleife hinein - den haben wir aus dem Abschnitt "Variablen" einfach übernommen - und wir löschen die überflüssigen leeren Zeilen. Das Ganze sieht dann so aus:

Damit wäre unsere Schleife fertig.


Wait

Eine Schleife nutzt die volle Rechenleistung des Computers aus. Wird sie also beispielsweise 5 Mio. Mal wiederholt, so kann man in dieser Zeit gar nichts machen, das Spiel friert dann ein.
Um dem entgegenzuwirken nutzt man in einer Schleife den Befehl:

Den sollte man möglichst am Anfang der Schleife unterbringen, also direkt unter dem "while". Dies hat den Vorteil, dass wirklich immer der Wait auch ausgeführt wird; nutzt man ihn am Ende, kann es u.U. sein, dass er übersprungen wird (durch den "Continue"-Befehl).

Der Wait-Befehl ist selbsterklärend: Für die angegebene Zeitspanne wird einfach gewartet, die Ausführung des Codes wird unterbrochen. So wird keine Rechenleistung während dieser Wartezeit benötigt, das Spiel läuft also ganz normal weiter.
Je länger der Code in der while-Schleife ist, desto länger sollte auch das wait sein. Bei unserem Code reicht daher auch 1 ms (Eine Millisekunde).

So sieht unser Code dann mit Wait aus:



Das wärs

Fertig ist Euer erstes Script! Geht nun auf ESC, und klickt bei der Meldung "Save Script..." auf "Ja". Nun seid Ihr in der Script-Liste, wo Ihr jetzt Euer Script sucht und markiert, dann auf r und schließlich 2 Mal auf Enter drückt.
Nun habt Ihr 10.000.000 Credits mehr auf dem Konto.

Probieren, Probieren, Probieren

Probiert die einzelnen Scriptbefehle aus! Die meisten sind von sich aus selbsterklärend, und ansonsten schaut in die EGOSOFT MSCI-Befehlsreferenz, denn dort sind die Befehle alle noch einmal erklärt.