Globale und lokale Variablen

Aus X-Lexikon
Zur Navigation springenZur Suche springen


Im vorherigen Abschnitt dieses Tutorials haben wir etwas über Variablen gelernt. Doch die in Scripts benutzten Variablen sind nur auf dieses eine Script beschränkt. Es kann jedoch sein, dass auch mehrere Scripts auf ein und die selbe Variable zugreifen müssen, oder aber, dass eine bestimmte Variable auch nach der Beendigung eines bestimmten Scripts noch verfügbar ist.

Globale Variablen

Dies wird durch globale Variablen erreicht. Sie sind von jedem Script abrufbar.

Obiger Befehl dient dazu, eine globale Variable auf einen bestimmten Wert zu setzen. Er hat 2 Parameter, einmal <Var/String> und einmal <Value>.

<Var/String> repräsentiert den Namen der globalen Variable. Dieser muss einmalig sein, denn ansonsten überschreibt ihr eine eventuell bestehende globale Variable. Allgemeine Namen wie "Nummer" oder "Anzahl" oder "Ziel" sind dabei äußerst ungünstig, daher hat sich folgendes Namensschema weit verbreitet: "ScripterKürzel.Modulname.FunktionDerGlobalenVariable". Ich selbst könnte zum Beispiel eine globale Variable namens "s304.militaerischer.angriff.Schiffszahl" setzen. Scripter-Kürzel wäre hier also "s304", "militaerischer.angriff" wäre der Name meines Modules und "Schiffszahl" wäre dann die Funktion der globalen Variable.


<Value> ist hier der Wert, auf den wir die globale Variable setzen wollen. Bei meiner Beispielvariable könnte das zum Beispiel eine andere Variable namens "$errechnete.schiffszahl" sein.

Bei meiner Beispielvariable sähe dieser Befehl nun also folgendermaßen aus:


Man kann die globalen Variablen natürlich auch abrufen. So sieht der dazu nötige Befehl aus:


Dieser hat wieder 2 Parameter. Einmal <RetVar/IF> und einmal <Var/String>.

<Var/String> dient wieder dazu, den Namen der globalen Variable abzurufen.

<RetVar/IF> ist der sogenannte "Returnvalue", zu Deutsch "Rückgabewert". Das ganze funktioniert so, dass zunächst der eigentliche Befehl abgearbeitet wird, hier ist das halt das Auslesen der globalen Variable. Anschließend wird das Ergebnis des Befehls, also hier der ausgelesene Wert der GVar, im Returnvalue gespeichert.
Als Beispiel wollen wir hier mal die Variable "Schiffe" nehmen und die oben genutzte globale Variable:

Nun wird der Wert der globalen Variable also in der Variable "$Schiffe" gespeichert.

Lokale Variablen

Manchmal möchte man aber auch nur Variablen haben, die auf einem bestimmten Objekt gespeichert sind, und die nur so lange verfügbar sind, wie das Objekt existiert.
Eine mögliche Verwendung wäre zum Beispiel, dass man die Anzahl der geladenen Raketen aller Objekte erfasst. Würde man dafür globale Variablen erstellen, so würden sie ewig weiterexistieren, obwohl es die zugehörigen Objekte vielleicht gar nicht mehr gibt. Deswegen speichert man diese Variablen lokal auf dem jeweiligen Objekt.

Folgende Befehle sind für die lokalen Variablen zuständig:

und

Man sieht sofort, dass die Befehle sehr ähnlich zu denen der globalen Variablen sind. Im Grunde sind sie sogar gleich, jedoch gibt es hier einen Parameter mehr, und zwar <RefObj>.

Dieser Parameter dient lediglich dazu, das Bezugsobjekt festzulegen, auf dem die lokale Variable gespeichert ist oder gespeichert werden soll.

Beispiel:


Dieser Code dient dazu, auf dem unter "$Zielschiff" angegebenen Objekt die lokale Variable namens "s304.militearischer.angriff.Schiffszahl" auf den unter "$schiffsanzahl" gespeicherten Wert zu setzen.