Datentypen

DestinyScript unterteilt Daten, wie z.B. Zahlen oder Zeichenketten (Strings), in verschiedene Typen. Etwas Ähnliches ist man unter Umständen vom RPG Maker bereits gewohnt, der Switches zum Speichern von einem aus zwei möglichen Werten (meist "OFF" und "ON" genannt) und Variablen für Ganzzahlen in einem je nach Version verschieden definierten Bereich bietet.

RPG Maker

Switches vom RPG Maker entsprechen bei DestinyScript und vielen anderen Sprachen einem sogenannten "Bool", nur dass die möglichen Werte andere Fachbezeichnungen haben. "OFF" entspricht einem false oder der 0, "ON" hingegen true, bzw. einer 1.

Die Variablen des RPG Makers sind ein Datentyp, der normalerweise als "Dword" bezeichnet wird. In dieser Dokumentation werden hin und wieder "Variable" und "Dword" in verschiedenen Kontexten als nicht dieselben Dinge erwähnt, auch wenn sie technisch gesehen identisch sind.

Zahlengrößen

Speichergröße Wertebereich Anmerkungen
Byte 1 0
255
Die kleinste Größenordnung für Ganzzahlen. Wird bspw. für Paletteneintrags-Angaben in den Pixeln von Pictures verwendet.
Word 2 -32768
32767
Die mittlere Größenordnung für Ganzzahlen. Findet selten Anwendung, kann jedoch zum Kleinhalten von Netzwerk-Datenverkehr genutzt werden, wenn eine Vielzahl eher mittelgroß geratener Werte übertragen werden soll (siehe "Client[]" und "Server").
Dword 4 -2147483648
2147483647
Der größte Wertebereich für Ganzzahlen, den RPG_RT.exe und Destiny.dll bieten können. Wird von DestinyScript sehr häufig genutzt, auch die Variablen des RPG Makers sind technisch gesehen Dwords.
Float 8 -1.7E+308
1.7E+308

-5.0E-324
5.0E-324
Speichert bis zu 15 Ziffern einer (Gleit-)Kommazahl, das Komma selbst kann an einer beliebigen Stelle platziert werden. Je mehr Ziffern vor ihm stehen, desto weniger haben dahinter noch Platz (und andersherum).

Andere Datentypen

Speichergröße Wertebereich Anmerkungen
Bool 1 0
1
Entspricht in DestinyScript einem Byte, beschränkt sich jedoch auf nur zwei mögliche Werte. Entspricht technisch den Switches vom RPG Maker.
String 4+N 0 bis 2147483647
Zeichen
Das Format für Zeichenketten, das bei allem, was Text ist, Anwendung findet.
Handle N/A N/A Nur zum Identifizieren von Grafiken gedacht, Speichern nicht möglich.

Datenspeicherbereiche

Damit gelesene Werte und sonstige Ergebnisse von Abfragen und Aufrufen gespeichert werden können, müssen passende Speicherbereiche existieren. Diese sind in der nachfolgenden Tabelle aufgelistet. Wieviele Werte diese in sich aufnehmen können, variiert je nach Destiny-Version und manuellen Anpassungen.

Datentyp Herkunft Anmerkungen
a[] String Destiny.dll "A" steht für "ANSI", das Format aller verwendeten Strings.
d[] Dword Destiny.dll "D" steht für "Dword".
f[] Float Destiny.dll "F" steht für "Floating Point Number", die englische Bezeichnung für "Gleitkommazahl".
s[] Bool RPG_RT.exe "S" steht für "Switch" (deutsch auch "Schalter", im Weiteren immer "Switch" betitelt).
v[] Dword RPG_RT.exe "V" steht für "Variable".

Ausgabe und Konvertierung

Von Eigenschaften sowie jenen Methoden, die im Objekte-Bereich dieser Dokumentation den Block für einen "OUTPUT"-Typ unter der Beschreibung stehen haben, kann der jeweilige Wert, der dabei herauskommt, in einer typenpassenden Speicherstelle abgelegt werden.

$
// Destiny-ANSI-String #1 wird zur Kopie vom Namen des ersten Helden.
a[1] = Actor[1].Name;
// Destiny-Dword #1 speichert den Level des ersten Helden.
d[1] = Actor[1].Level;
// Switch #1 soll die Erfahrung des ersten Helden speichern, dies wird scheitern.
s[1] = Actor[1].EXP;
// Variable #1 speichert die Waffen-ID des ersten Helden. Eigentlich ein Word, jedoch kompatibel.
v[1] = Actor[1].Weapon;

Das letzte der soeben genannten Beispiele weist die Besonderheit auf, dass "Actor[].Weapon" einen geringeren Zahlen-Datentyp verwendet (Word) als den, dem eine Variable angehört (Dword). In solchen und selbst in umgekehrten Fällen werden Zahlen automatisch in das passende Format geändert, sofern es sich bei Quelle und Ziel jeweils um ein Byte, Word, Dword (bzw. eine Variable) oder Float handelt.

Der Switch aus dem dritten Beispiel wiederum wird durch seine Beschaffenheit als Bool daran scheitern, die gewünschte Information der Größe eines Dwords zu speichern, anschließend wird es zu einer Fehlermeldung kommen. Sollen Zahlen, Bools und/oder Strings untereinander in ein passendes Format geändert werden, muss DestinyScript explizit dazu angewiesen werden (siehe Objekt "Convert").

Indirektes Adressieren

Die Angabe, auf welchen Teil eines Datenspeicherbereiches (z.B. "d[5]") oder eines Listenobjektes (z.B. "Actor[3]") zugegriffen wird, muss nicht direkt erfolgen. Diese kann auch über die Datenausgabe anderer Werte, Eigenschaften und/oder Methodenaufrufe geregelt werden, wichtig ist nur, dass ein passender Wert dabei herauskommt.

$
// Der Wert von Variable #13 wird 20 sein.
v[7] = 13;
v[v[7]] = 20;
// Der Wert von Destiny-Dword #8 wird dem Level von Held #20 entsprechen.
d[8] = Actor[v[v[7]]].Level;
// Der Switch auf der ID, die dem Level von Held #20 entspricht, wird auf ON gesetzt.
s[Actor[v[v[7]]].Level] = true;
// Die Variablenliste wird keinen Index empfangen, wo 1234 gespeichert werden soll, da "Screen.ShakeStop()" keinen Wert ausgibt. Fehlermeldung.
v[Screen.ShakeStop()] = 1234;