Galaxy
Aus Starcraft II Map-Editor Wiki
Galaxy ist die Scriptsprache zu Starcraft II. Die Sprache ist nicht objektorientiert und ihre Syntax orientiert sich an der von C. Ein weiteres Merkmal der Sprache ist das Vorhandensein eines automatischen Garbage-Collectors.
Inhaltsverzeichnis |
Datentypen
Standard Datentypen
- bool
- Ein Wahrheitswert
- int
- Eine ganze Zahl.
- fixed
- Wahrscheinlich eine Zahl mit einer festen Zahl an Nachkommastellen oder eine Fließkommazahl
- string
- Zeichenketten
- text
- Wahrscheinlich lange Zeichenketten
spezielle Datentypen
- abilcmd
- actor
- actorscope
- aifilter
- animtarget
- bank
- byte
- camerainfo
- char
- color
- doodad
- handle
- marker
- order
- Ein Befehl
- playergroup
- point
- Ein Punkt
- region
- Ein Gebiet
- revealer
- sound
- soundlink
- timer
- transmissionsource
- trigger
- Ein Auslöser
- unit
- Eine Einheit
- unitfilter
- unitgroup
- Eine Einheitengruppe
- unitref
- wave
- waveinfo
- wavetarget
Sprachelemente
Kommentare
Kommentare starten mit zwei Schrägstrichen und enden am Ende der Zeile.
Operatoren
arithmetische Operatoren
- +
- Addition
- -
- Subtraktion
- *
- Multiplikation
- /
- Division. Wenn linkes und rechter Wert vom Typ int sind, wird eine ganzzahlige Division verwendet.
- %
- Modulo (der Rest einer ganzzahligen Division)
logische Operatoren
- !
- Negation ("nicht")
- &&
- Konjunktion ("und")
- ||
- Disjunktion ("oder")
Bit Operatoren
- &
- Bitweises Und
- |
- Bitweises Oder
Funktionen
Syntax:
<Rückgabewert> <Funktionsname> (<ParameterTyp> <Parametername>, <ParameterTyp> <Parametername>, ...) {
<Funktionskörper>
}
Beispiel:
fixed AIRangeThor (int player, unit aiUnit) {
return AIAbilityFixed(player, c_AB_250mmStrikeCannons, c_fieldRange0) + 1;
}
Mit Hilfe von return wird die Funktion verlassen und das Ergebnis der Funktion festgelegt.
lokale Variablen
Syntax:
<Typname> <Variablenname>;
oder:
<Typname> <Variablenname> = <Wert>;
Lokale Variablen können nur am Funktionsanfang deklariert werden.
Beispiele:
unit obs;
string msg = "Reached end of script for player " + IntToString(player) + "-" +
PlayerRace(player) + " : More AI code coming soon.";
Wertzuweisung
Syntax:
<Variablenname> = <neuer Wert>;
Beispiel:
x = x * 2.0;
Funktionsaufruf
Syntax:
<Funktionsname> ( <Parameterliste> );
Beispiel:
ProtossInit(player);
Globale Variablen
Globale Variablen werden an einer beliebigen Position außerhalb von anderen Funktionen deklariert.
Syntax:
<Typname> <Variablenname>;
Beispiel:
trigger gt_MeleeInitialization;
Konstanten
Syntax:
const <Typname> <Konstantenname> = <Wert>;
Beispiel:
const int c_maxPlayers = 32;
include
Syntax:
include "<Pfad>"
Der Pfad wird ohne Endung angegeben. Der Befehl wird in Gegensatz zu anderen Befehlen nicht durch ein Semikolon beendet.
Beispiel:
include "TriggerLibs/BuildAI"
Kontrollfluss
If
Syntax:
if (<Bedingung>) {
<Anweisungen>
} else {
<Anweisungen>
}
Beispiel:
if (mainSubState == e_mainSubState_GndA) { TerranMidGndA(player); }
else if (mainSubState == e_mainSubState_GndB) { TerranMidGndB(player); }
else if (mainSubState == e_mainSubState_AirA) { TerranMidAirA(player); }
else if (mainSubState == e_mainSubState_AirB) { TerranMidAirB(player); }
else { ErrorMeleeScript(player, "Invalid Mid mainSubState"); }
while
Syntax:
while (<Bedingung>) {
<Aktionen>
}
Beispiel:
if (onGround > 0) {
cliffLevel = CliffLevel(here);
// Only switch if there is a ground target on the same or lower cliff level so that
// we are guaranteed to be able to navigate to it.
//
while (onGround > 0) {
there = UnitGetPosition(UnitGroupUnit(scanGroup, onGround));
testCliffLevel = CliffLevel(there);
if (cliffLevel >= testCliffLevel) {
return there;
}
onGround = onGround - 1;
}
}
break
Mit dem Befehl break; kann man aus einer Schleife springen.
continue
Mit dem Befehl continue; kann man den Rest des aktuellen Schleifendurchlaufs überspringen und direkt mit dem nächsten Durchlauf fortfahren.
