Code schreiben

Aus X-Lexikon
Wechseln zu: Navigation, Suche


Der Code, der im internen Scripteditor von X² und X³ verwendet wird, ähnelt in seinem Aufbau (Syntax) stark der Programmiersprache C++, in der die gesamten Spiele X² und X³ geschrieben sind. Durch die vorgegebenen Scripteditor-Befehle muss man jedoch die Commands nicht mehr auswendig kennen, sondern kann sich aus der gegebenen Liste den passenden Befehl aussuchen. Dadurch wird der Scripting-Prozess für Neulinge stark vereinfacht, aber auch durch die vielen Eingabefenster umständlicher gemacht. Die meisten Befehle enthalten Anweisungen für Schiffe und Stationen oder Schritte, die Grundlage für diese Anweisungen zu erhalten.

Der grundsätzliche Aufbau eines Scripts sieht folgende Schritte vor:

Codeeingabe

Im Scripteditor gibt es Menüs, in denen man den Grundaufbau jeder Codezeile findet, die dann nur noch mit Argumenten gefüllt werden muss.

  • Mit Einfg und Entf füllt man neue Zeilen ein der löscht sie,
  • c kopiert eine Zeile,
  • x schneidet sie aus,
  • v fügt sie ein.
  • Die auf-/ab-Pfeiltasten dienen der Navigation zwischen den Zeilen,
  • rechts-/links-Pfeiltasten helfen, Argumente zu benennen.
  • Code ist weiß, Argumente grün dargestellt.
  • In der aktiven Zeile ist Code gelb, das aktive Argument rot dargestellt.
  • Enter öffnet die Arguments/Codebefehl-Liste,
  • Esc öffnet das Speichern/Beenden-Menü.

Codeabfolge

Informationen einholen

Innerhalb eines Scripts werden Informationen in Variablen gespeichert. Im Editor werden die Variablen implizit deklariert, indem ihnen ein Wert zugewiesen wird. So weist etwa der Befehl <RetVar/IF> <RefObj> get homebase mit dem Input <RefObj> = [THIS] und der Variablen <RetVar> = $Homebase1 (also $Homebase1 = [THIS] -> get homebase) der Variablen $Homebase1 diejenige Station zu, die das Schiff ([THIS]), auf dem das Script läuft, als Heimatbasis hat. So können über die verschiedensten Objekte Informationen eingeholt und in Variablen gespeichert werden. Ist eine Variable erst einmal eingeholt, kann sie nach Belieben verarbeitet werden.

Auch Variablen können in Befehle eingesetzt werden. Will man etwa den Kontostand der Heimatbasis des Schiffes [THIS] wissen, kann man das folgendermaßen tun: Der Befehl <RetVar/IF> <RefObj> get money ermöglicht es, von einem beliebigen Objekt den Kontostand abzufragen. Setzt man die Heimatbasis $Homebase1 des Schiffes [THIS] ein, kann man im Code $Money1 = $Homebase1 -> get money gleich noch den Kontostand einholen.

Hinweis: Einige grundlegende Informationen sind schon von vornherein als Konstanten festgelegt. Sie sind in der Liste der Argumente mit eckigen Klammern gekennzeichnet, etwa [THIS], aber auch das oben anders abgefragte [HOMEBASE].

Informationen verarbeiten

Die Variablen können nun verändert oder weiterverarbeitet werden. So kann man etwa dem Kontostand $Money1 mit dem fast überall benutzten Befehl <RetVar/IF><Expression> Geld hinzufügen. Das sieht dann so aus:
$Money1 = $Money1 + 2000

Informationen in Befehle umwandeln

Das Geld kann nun dem Konto der Station wieder gutgeschrieben werden:
<RefObj> add money: <Var/Number> wird zu $Homebase1 -> add money: $Money1.
Außerdem können Kommandos gegeben werden, die nur unter bestimmten Bedingungen zutreffen: Mit den Befehlen <RetVar/IF><Expression>, <RetVar/IF> <RefObj> fly to home base und end conditional ist es möglich, Kommandos nur unter bestimmten Bedingungen zuzulassen:
if $money > 100000
[THIS] -> fly to home base
end
schickt das Schiff zurück, wenn der Kontostand über 100.000 Cr liegt.

Siehe auch