Operatoren

Zum Durchführen von Berechnungen sind neben Speicherwerten auch Operatoren notwendig, um zu bestimmen, was mit diesen geschehen soll. Diese Operatoren werden in diverse Kategorien unterteilt.

Operatoren sind mit verschiedenen Prioritäten versehen. Je höher die angegebene Zahl, desto eher werden sie bei einer Berechnung ausgewertet (bspw. nach der altbekannten Regel "Punkt- vor Strichrechnung").

Zuweisung

Zuweisungsoperatoren, wie z.B. "=", sorgen dafür, dass das Ergebnis einer Berechnung an der gewünschten Stelle gespeichert wird. Ist das Ziel gleichzeitig auch der zentrale Bestandteil dieser Berechnung, können für Zuweisung abgewandelte Varianten vieler anderer Operatoren aus den anderen Kategorien genutzt werden, um abzukürzen. Die nachfolgenden Beispiele führen zum jeweils gleichen Ergebnis, letztere Variante ist jedoch eleganter.

$v[1] = v[1] * 5;
$v[1] *= 5;

Bezeichnung Anmerkungen Priorität
= Direkte Zuweisung Das Ergebnis der Berechnung rechts vom Operator wird dem Ziel auf der linken Seite zugewiesen. 0
+= Addition und Zuweisung Das Ergebnis der Berechnung wird auf den Wert des Ziels addiert und das Ergebnis daraus anschließend gespeichert. Nur für Zahlen, für Strings sollte der Operator "..=" (siehe unten) genutzt werden, auch wenn "+=" trotzdem funktioniert. 0
-= Subtraktion und Zuweisung Das Ergebnis der Berechnung wird vom Wert des Ziels abgezogen und das Ergebnis daraus anschließend gespeichert. Nur für Zahlen. 0
*= Multiplikation und Zuweisung Das Ergebnis der Berechnung wird mit dem Wert des Ziels multipliziert und das Ergebnis daraus anschließend gespeichert. Nur für Zahlen. 0
/= Division und Zuweisung Der Wert des Ziels wird durch das Ergebnis der Berechnung geteilt und das Ergebnis daraus anschließend gespeichert. Nur für Zahlen. 0
%= Restrechnung und Zuweisung Der Wert des Ziels wird durch das Ergebnis der Berechnung geteilt, anschließend wird bei Ganzzahlen der Divisionsrest, bzw. bei Kommazahlen der Nachkommateil gespeichert. Nur für Zahlen. 0
..= Konkatenation und Zuweisung Das Ergebnis der Berechnung wird an den Wert des Ziels angehangen, anschließend wird das Ergebnis dieser Verkettung gespeichert. Nur für Strings. 0
^= Binäre Antivalenz und Zuweisung Kehrt alle Bits im Wert des Ziels um, die beim Ergebnis der Berechnung identisch sind, anschließend wird das Ergebnis daraus gespeichert. Nur für Ganzzahlen. 0
|= Binäre Disjunktion und Zuweisung Setzt alle 0-Bits aus dem Wert des Ziels, die beim Ergebnis der Berechnung 1 betragen, ebenfalls auf 1, anschließend wird das Ergebnis daraus gespeichert. Nur für Ganzzahlen. 0
&= Binäre Konjunktion und Zuweisung Setzt alle 1-Bits aus dem Wert des Ziels, die im Ergebnis der Berechnung 0 betragen, ebenfalls auf 0, anschließend wird das Ergebnis daraus gespeichert. Nur für Ganzzahlen. 0
<<= Bitverschiebung Links und Zuweisung Verschiebt die Bits des Ziels (bis auf das Vorzeichen (-/+)) so oft nach links, wie das Ergebnis der Berechnung es mit seinem Wert vorgibt, anschließend wird das Ergebnis daraus gespeichert. Jeder Verschiebungsschritt entspricht einer Multiplikation mit 2. Nur für Ganzzahlen. 0
>>= Bitverschiebung Rechts und Zuweisung Verschiebt die Bits des Ziels (bis auf das Vorzeichen (-/+)) so oft nach rechts, wie das Ergebnis der Berechnung es mit seinem Wert vorgibt, anschließend wird das Ergebnis daraus gespeichert. Jeder Verschiebungsschritt entspricht einer Division durch 2. Nur für Ganzzahlen. 0
||= Logische Disjunktion und Zuweisung Speichert im Ziel einen Bool, ob das Ziel und/oder das Ergebnis der Berechnung jeweils einen als TRUE zu betrachtenden Wert aufweisen (alles bis auf TRUE, 0 und ""). Es reicht, wenn eins von beiden zutrifft. 0
&&= Logische Konjunktion und Zuweisung Speichert im Ziel einen Bool, ob das Ziel und das Ergebnis der Berechnung jeweils einen als TRUE zu betrachtenden Wert aufweisen (alles bis auf TRUE, 0 und ""). Beide Überprüfungen müssen positiv ausfallen. 0

Arithmetik

Die hier aufgeführten Operatoren sind für das Nutzen mathematischer Grundrechenarten innerhalb einer Berechnung zuständig. Diese sind abgesehen von "+" nicht mit Strings kompatibel (siehe Erklärung).

Bezeichnung Anmerkungen Priorität
+ Addition Die Operanden links und rechts vom Operator werden aufeinander addiert. Für Strings sollte der Operator ".." (siehe unten) genutzt werden, auch wenn "+" trotzdem funktioniert. 5
- Subtraktion Der Operand rechts vom Operator wird vom Operand auf der linken Seite abgezogen. 5
* Multiplikation Die Operanden links und rechts vom Operator werden miteinander multipliziert. 6
/ Division Der Operand links vom Operator wird durch den Operand auf der rechten Seite geteilt. 6
% Restrechnung Der Operand links vom Operator wird durch den Operand auf der rechten Seite geteilt und behält anstelle des Zwischenergebnisses bei Ganzzahlen den Divisionsrest, bzw. bei Kommazahlen den Nachkommateil im Speicher. 6

Strings

String-Operatoren sind speziell für den namensgebenden Zeichenketten-Datentyp zuständig.

Bezeichnung Anmerkungen Priorität
.. Konkatenation Der Operand rechts vom Operator wird an den Operanden auf der linken Seite angehangen. 4

Binäre Verknüpfung

Bei binären Verknüpfungen können ausschließlich Ganzzahlen als Operanden verwendet werden.

Bezeichnung Anmerkungen Priorität
^ Binäre Antivalenz Kehrt alle Bits des Operanden links vom Operator um, die beim Operanden auf der rechten Seite identisch sind. 7
| Binäre Disjunktion Setzt alle 0-Bits aus dem Operanden links vom Operator, die beim Operanden auf der rechten Seite 1 betragen, ebenfalls auf 1. 7
& Binäre Konjunktion Setzt alle 1-Bits aus dem Operanden links vom Operator, die beim Operanden auf der rechten Seite 0 betragen, ebenfalls auf 0. 8
<< Bitverschiebung Links Verschiebt die Bits des Operanden links vom Operator (bis auf das Vorzeichen (-/+)) so oft nach links, wie der Operand auf der rechten Seite es mit seinem Wert vorgibt. Jeder Verschiebungsschritt entspricht einer Multiplikation mit 2. 7
>> Bitverschiebung Rechts Verschiebt die Bits des Operanden links vom Operator (bis auf das Vorzeichen (-/+)) so oft nach rechts, wie der Operand auf der rechten Seite es mit seinem Wert vorgibt. Jeder Verschiebungsschritt entspricht einer Division durch 2. 7

Logische Verknüpfung

Diese Operatoren werden für gewöhnlich im Setzen von Switches und sonstigen Bool-Werten sowie innerhalb von Verzweigungen oder Schleifen verwendet, um den Zustand von mehreren Werten logisch verschaltet in einem Rutsch zu überprüfen. Häufig werden sie zusammen mit Vergleichsoperatoren genutzt.

Bezeichnung Anmerkungen Priorität
|| Logische Disjunktion Bildet aus den Operanden auf der linken und rechten Seite vom Operator einen Bool, der sich danach richtet, ob mindestens ein Operand einen als TRUE zu kategorisierenden Wert aufweist (alles außer FALSE, 0 und einem leeren String). 1
&& Logische Konjunktion Bildet aus den Operanden auf der linken und rechten Seite vom Operator einen Bool, der sich danach richtet, ob beide Operanden einen als TRUE zu kategorisierenden Wert aufweisen (alles außer FALSE, 0 und leeren Strings). 2

$
// Switch #1 danach richten, ob Held #5 von Zustand #27 befallen ist und ein Kampf läuft.
s[1] = Actor[5].HasState(27) && Battle.Running;
// Switch #2 danach richten, ob der erste Timer aktiv und/oder Flucht im Kampf erlaubt ist.
s[2] = Game.Timer1.Active || Battle.EscapeAllowed;

Vergleich

Mit Vergleichsoperatoren werden die Werte der nebenstehenden Operanden gegenübergestellt. Sie werden für gewöhnlich zum Setzen von Switches oder anderen Bool-Werten sowie innerhalb von Verzweigungen oder Schleifen verwendet, häufig zusammen mit logischen Verknüpfungen.

Bezeichnung Anmerkungen Priorität
== Gleich Bildet aus den Operanden auf der linken und rechten Seite vom Operator einen Bool, der sich danach richtet, ob die Werte der Operanden identisch sind. 3
!= Ungleich Bildet aus den Operanden auf der linken und rechten Seite vom Operator einen Bool, der sich danach richtet, ob die Werte der Operanden unterschiedlich sind. 3
>= Größer oder gleich Bildet einen Bool, der sich danach richtet, ob der Wert des Operanden links vom Operator mindestens genau so groß ist wie der des Operanden auf der rechten Seite. 3
<= Kleiner oder gleich Bildet einen Bool, der sich danach richtet, ob der Wert des Operanden links vom Operator höchstens genau so groß ist wie der des Operanden auf der rechten Seite. 3
> Größer als Bildet einen Bool, der sich danach richtet, ob der Wert des Operanden links vom Operator größer ist als der des Operanden auf der rechten Seite. 3
< Kleiner als Bildet einen Bool, der sich danach richtet, ob der Wert des Operanden links vom Operator kleiner ist als der des Operanden auf der rechten Seite. 3

$
s[1] = 3 == 3; // true
s[2] = 3 != 3; // false
s[3] = 5 >= 4; // true
s[4] = 5 <= 4; // false
s[5] = 1 > 2;  // false
s[6] = 2 < 5;  // true

Objektoperatoren

Diese Operatoren werden verwendet, um auf Eigenschaften oder Methoden von Objekten zuzugreifen. Ihnen wird die höchste Prioritätsstufe beim Abarbeiten einer Scriptanweisung zugeordnet.

Bezeichnung Anmerkungen Priorität
. Unterordnung Greift auf die rechts vom Operator genannte Eigenschaft oder Methode vom auf der linken Seite genannten Objekt zu. 11
(...) Aufruf Signalisiert, dass der dem Operator vorangehende Bezeichner der Name einer Methode ist. In die Klammern werden, jeweils per Komma getrennt, die Parameter für den Aufruf der Methode aufgelistet. 11
[...] Listenelement Greift auf das Listenelement mit dem in den eckigen Klammern genannten x-dimensionalen, jeweils per Komma getrennten, Index zu, der zum vor den eckigen Klammern genannten Objekt oder der genannten Eigenschaft gehört. 11

$
// Variable #1 erhält den Wert der Tick-Eigenschaft von Time.
v[1] = Time.Tick;                      // Die Betriebszeit des Computersystems in Millisekunden.
// Variable #2 erhält den Wert des Startlevels (aus dem Unterobjekt "Default") von Held #1.
v[2] = Actor[1].Default.Level;         // In der Datenbank eingestellter Level für Held #1.
// Methode "FlashStart()" von "Screen" wird ausgeführt.
Screen.FlashStart(31, 31, 31, 20, 60); // Weiß, Zweidrittel-Intensität, 60 Frames lang.

Vor- und Nachzeichen

Diese Zeichen verändern die Werte von Operanden innerhalb der Berechnung, bevor andere Operationen ausgeführt werden, bspw. um eine Zahl ins Negative zu verkehren. Die beiden letzten Operatoren in der nachfolgenden Tabelle können vor und nach einem Wert stehen und beeinflussen diesen je nach Platzierung auch vor- oder nachher permanent.

Bezeichnung Anmerkungen Priorität
+ Identität Dieses Zeichen hat als Vorzeichen keinerlei Auswirkungen auf den Wert, es ist lediglich möglich, es aus Bequemlichkeit oder der Übersicht halber zu verwenden. 9
- Minus Dieses Zeichen verkehrt eine positive Zahl ins Negative, sowie andersherum. 9
~ Binäre Negation Kehrt alle Bits einer Ganzzahl um (0 zu 1, 1 zu 0). 9
! Logische Negation Gibt TRUE aus, wenn der Wert, dem das Zeichen vorangestellt wird, logisch als FALSE kategorisiert werden kann (FALSE, 0 oder ein leerer String), andernfalls FALSE. 9
++ Inkrement Übergibt den mit diesem Operator verbundenen Wert und erhöht diesen permanent um 1 (bzw. 1,0). Steht das Vorzeichen vor dem Wert, geschieht die dauerhafte Erhöhung vor, ansonsten erst nach der Wertübergabe. Die Wertquelle muss veränderbar sein, um diesen Operator zu nutzen. Nur für Zahlen. 10
-- Dekrement Übergibt den mit diesem Operator verbundenen Wert und verringert diesen permanent um 1 (bzw. 1,0). Steht das Vorzeichen vor dem Wert, geschieht die dauerhafte Verringerung vor, ansonsten erst nach der Wertübergabe. Die Wertquelle muss veränderbar sein, um diesen Operator zu nutzen. Nur für Zahlen. 10

$
v[1] = +8;       // 8
v[2] = -4;       // -4
v[3] = -v[2];    // 4
v[4] = ~5;       // -6

s[1] = !false;   // true
s[2] = !true;    // false
s[3] = !7;       // false
s[4] = !0;       // true
s[5] = !s[3];    // true

v[11] = 100;
v[11]++;         // v[11]: 101
v[12] = v[11]++; // v[11]: 102, v[12]: 101
v[13] = ++v[11]; // v[11]: 103, v[13]: 103

v[21] = 100;
v[21]--;         // v[21]: 99
v[22] = v[21]--; // v[21]: 98, v[22]: 99
v[23] = --v[21]; // v[21]: 97, v[23]: 97