Oblivion:Variablen: Unterschied zwischen den Versionen
Keris (Diskussion | Beiträge) K (→Der Typ Ref) |
Keris (Diskussion | Beiträge) K |
||
Zeile 14: | Zeile 14: | ||
Der Typ Long speichert [[wikipedia:de:Integer_%28Datentyp%29|ganzzahlige ]]([[wikipedia:de:Integer_%28Datentyp%29|integer]]) Werte. Im [[ob:Construction Set|TESCS]] ist ein [[wikipedia:de:Integer_%28Datentyp%29|integer]]-Format, das 326 [[wikipedia:de:Bit|Bit]] also 4 [[wikipedia:de:Byte|Byte]] belegt). | Der Typ Long speichert [[wikipedia:de:Integer_%28Datentyp%29|ganzzahlige ]]([[wikipedia:de:Integer_%28Datentyp%29|integer]]) Werte. Im [[ob:Construction Set|TESCS]] ist ein [[wikipedia:de:Integer_%28Datentyp%29|integer]]-Format, das 326 [[wikipedia:de:Bit|Bit]] also 4 [[wikipedia:de:Byte|Byte]] belegt). | ||
Da ein [[wikipedia:de:Bit|Bit]] für die Darstellung des Vorzeichen benötigt wird, können die Variablen von -2<sup>31</sup> (-2147483647) bis 2<sup>31-1</sup> (+2147483647) reichen. | Da ein [[wikipedia:de:Bit|Bit]] für die Darstellung des Vorzeichen benötigt wird, können die Variablen von -2<sup>31</sup> (-2147483647) bis 2<sup>31-1</sup> (+2147483647) reichen. | ||
+ | |||
=== Der Typ Float === | === Der Typ Float === | ||
Zeile 26: | Zeile 27: | ||
=== Der Typ unsigned Integer === | === Der Typ unsigned Integer === | ||
− | Neben diesen | + | Neben diesen Datentypen, mit denen Variablen in der Scriptsprache deklariert und im Programm genutzt werden können, gibt es noch zwei weitere Datentypen, die im [[ob:Construction Set|TESIVCS]] in Gebrauch sind. Dies sind Unsigned Integer mit 8 (0 bis 255) bzw. 16 bit (0 bis 32.767) Länge. Sie werden hauptsächlich genutzt, um Attributs- und Fähigkeitswerte zu speichern. |
− | Da sie unsigned also vorzeichenlos sind, hat das einen auf den ersten Blick überraschenden Effekt, den sog. [[wikipedia:de:Ganzzahl%C3%BCberlauf|Ganzzahlüberlauf]], der dazu führt, dass zum Beispiel. ein x-wert von 255 durch Addition von 2 zu 1 statt zu 257 wird. Die häufig anzutreffende Bemerkung, dass "-1" unendlich viel sei, bedeutet also nur, dass "-1" den größtmöglichen Wert repräsentiert. | + | Da sie unsigned, also vorzeichenlos sind, hat das einen auf den ersten Blick überraschenden Effekt, den sog. [[wikipedia:de:Ganzzahl%C3%BCberlauf|Ganzzahlüberlauf]], der dazu führt, dass zum Beispiel. ein x-wert von 255 durch Addition von 2 zu 1 statt zu 257 wird. Die häufig anzutreffende Bemerkung, dass "-1" unendlich viel sei, bedeutet also nur, dass "-1" den größtmöglichen Wert repräsentiert. |
Zeile 52: | Zeile 53: | ||
Du kannst dir auch eigene Globale Variablen erstellen. Einfach in die eben erwähnte Liste rechtsklicken und "new" wählen. | Du kannst dir auch eigene Globale Variablen erstellen. Einfach in die eben erwähnte Liste rechtsklicken und "new" wählen. | ||
− | + | * EditorID - Der Name der Variable. Freizeichen oder Sonderzeichen sind nicht erlaubt | |
− | + | * Variable Type – Es sind die Typen Short, Long und Float möglich | |
− | + | * Value - Der Standard-Wert für die Globale Variable | |
Globale Variablen werden intern im Float-Format abgelegt, aber ansonsten dem angegebenen Typ entsprechend behandelt. | Globale Variablen werden intern im Float-Format abgelegt, aber ansonsten dem angegebenen Typ entsprechend behandelt. | ||
Da globale Variablen an [[ob:Oblivion|Oblivion]] bzw. an eine Mod gebunden sind, existieren sie "immer" bzw. so lange, wie die Mod aktiviert ist. | Da globale Variablen an [[ob:Oblivion|Oblivion]] bzw. an eine Mod gebunden sind, existieren sie "immer" bzw. so lange, wie die Mod aktiviert ist. | ||
+ | |||
+ | |||
+ | === Game Settings === | ||
+ | Game Settings sind keine Variablen im normalen Sinne so wie die Globalen und Script-Variablen. Sie können z.b. nicht als Ersatz für eine Zahl in einem Script verwandt werden. Auf sie kann nur mit einer Funktion [[ob:GetGameSetting |GetGameSetting ]] zugegriffen werden. | ||
+ | |||
+ | Diese Variablen existieren ebenso wie die Globalen und sind auch überall zugreifbar. | ||
+ | |||
+ | |||
== Besonderheiten == | == Besonderheiten == | ||
− | === | + | === Floatvariablen=== |
Die [[wikipedia:de:Gleitkommazahl#Eigenschaften_einer_Gleitkommaarithmetik|Gleitkommaarithmetik]] von Float-Zahlen (oder vereinfacht ausgedrückt, das Rechnen mit Float-Zahlen) ist ein wenig gewöhnungsbedürftig, da mit diesem für Computer entwickelten Datentyp reale Zahlen nicht exakt abgebildet werden können, zumeist werden sie gerundet. | Die [[wikipedia:de:Gleitkommazahl#Eigenschaften_einer_Gleitkommaarithmetik|Gleitkommaarithmetik]] von Float-Zahlen (oder vereinfacht ausgedrückt, das Rechnen mit Float-Zahlen) ist ein wenig gewöhnungsbedürftig, da mit diesem für Computer entwickelten Datentyp reale Zahlen nicht exakt abgebildet werden können, zumeist werden sie gerundet. | ||
− | === | + | === Referenzvariablen === |
Eine Referenzvariable kann immer dort eingesetzt werden, wo man auch eine Referenz (eines Objektes) nutzen würde. Mit Referenzvariablen kann man nicht rechnen, mit ihnen sind nur Zuweisungen und Vergleichsoperationen möglich. | Eine Referenzvariable kann immer dort eingesetzt werden, wo man auch eine Referenz (eines Objektes) nutzen würde. Mit Referenzvariablen kann man nicht rechnen, mit ihnen sind nur Zuweisungen und Vergleichsoperationen möglich. | ||
Referenzen von Objekten, die nicht [[ob:Persistenz| persistent]]sind, sind nicht zugreifbar, wenn das Objekt nicht im Spiel geladen ist (also sich nicht in der aktiven Zelle befindet). Auch Objekte, die in einen [[ob:Container| Container]] aufgenommen werden, sind nicht zugreifbar. | Referenzen von Objekten, die nicht [[ob:Persistenz| persistent]]sind, sind nicht zugreifbar, wenn das Objekt nicht im Spiel geladen ist (also sich nicht in der aktiven Zelle befindet). Auch Objekte, die in einen [[ob:Container| Container]] aufgenommen werden, sind nicht zugreifbar. | ||
+ | |||
== Weitere Hinweise == | == Weitere Hinweise == |
Version vom 24. August 2008, 21:43 Uhr
Inhaltsverzeichnis
Allgemeines zu Variablen im CS
Die Scriptsprache des TESIVCS enthält Variablen wie andere Programmiersprachen auch. Es gibt drei unterschiedliche Datentypen und zwei Gültigkeitsbereiche
Variablentypen
Der Typ Short
Der Typ Short speichert ganzzahlige (integer) Werte. Im TESCS ist ein Mitinteger-Format, das 16 Bit also 2 Byte belegt). Da ein Bit für die Darstellung des Vorzeichen benötigt wird, können die Variablen von -215 (-32768) bis 215-1 (+32767) reichen.
Der Typ Long
Der Typ Long speichert ganzzahlige (integer) Werte. Im TESCS ist ein integer-Format, das 326 Bit also 4 Byte belegt). Da ein Bit für die Darstellung des Vorzeichen benötigt wird, können die Variablen von -231 (-2147483647) bis 231-1 (+2147483647) reichen.
Der Typ Float
Der Typ float dient zur Speicherung von Gleitkommazahlenl, im englischen floating point numbers (kurz floats] genannt
Das IEEE-Format interpretiert eine bestimmte Anzahl von Bits als Dezimalzahl. Es gibt hier eine kleinere Variante mit 32 Bit und eine größere Variante mit 64 Bit. Im [[wikipedia:de:IEEE_754#Zahlenformate_und_andere_Festlegungen_des_IEEE_754-Standards|32 Bit Short-Format], was für das TESIVCS als Float genutzt wird, werden die Bits 0 bis 22 als Mantisse interpretiert, die Bits 23 bis 30 als Exponent und das wikipedia:de:Bit Bit 31 als Vorzeichen.
Der Typ Ref
Ref-Variablen werden als Hexadezimalzahl dargestellt. Sie verwalten Referenzen. Während die Objekte im TESIVCS Vorlagen sind, die mit Editor ID und Form ID eindeutig gekennzeichnet sind, sind Referenzen reale Dinge in der Oblivion-Welt. Sie haben weitere Eigenschaften, u.A. eine Position in der Welt.
Der Typ unsigned Integer
Neben diesen Datentypen, mit denen Variablen in der Scriptsprache deklariert und im Programm genutzt werden können, gibt es noch zwei weitere Datentypen, die im TESIVCS in Gebrauch sind. Dies sind Unsigned Integer mit 8 (0 bis 255) bzw. 16 bit (0 bis 32.767) Länge. Sie werden hauptsächlich genutzt, um Attributs- und Fähigkeitswerte zu speichern. Da sie unsigned, also vorzeichenlos sind, hat das einen auf den ersten Blick überraschenden Effekt, den sog. Ganzzahlüberlauf, der dazu führt, dass zum Beispiel. ein x-wert von 255 durch Addition von 2 zu 1 statt zu 257 wird. Die häufig anzutreffende Bemerkung, dass "-1" unendlich viel sei, bedeutet also nur, dass "-1" den größtmöglichen Wert repräsentiert.
Gültigkeitsbereiche und Lebensdauer von Variablen
Variablen sind nur in ihrem Gültigkeitsbereich bekannt und damit nutzbar. Das Bekanntmachen wird Deklaration genannt.
Scriptvariablen
Die Deklaration geschieht durch die Angabe des Variablentyps gefolgt von dem Variablennamen. <tesscript> short a long b float c ref d </tesscript>
Da ein Script nicht aus sich heraus existiert, sondern an ein (Object, Zauber oder Quest) gebunden sind, existieren die Variablen solange wie die in die Welt gesetzten Objekte (genauer die Referenzen), ausgesprochenen Zauber oder Quests existieren, da die Scriptvariblen Eigenschaften einer Referenz, einer Quest oder eines ausgesprochenen Zaubers ist..
Globale Variablen
Eine Globale Variable ist für jedes Script oder Bedingung einer Referenz benutzbar, ohne das es einen Bezug an eine einzelne Quest oder Objekt braucht. Um alle Globalen Variablen zu sehen, mit denen man im TESIVCS arbeiten kann, wähle im Haupt-Menü "GamePlay -> Globals" und eine Liste wird dir angezeigt.
Du kannst dir auch eigene Globale Variablen erstellen. Einfach in die eben erwähnte Liste rechtsklicken und "new" wählen.
- EditorID - Der Name der Variable. Freizeichen oder Sonderzeichen sind nicht erlaubt
- Variable Type – Es sind die Typen Short, Long und Float möglich
- Value - Der Standard-Wert für die Globale Variable
Globale Variablen werden intern im Float-Format abgelegt, aber ansonsten dem angegebenen Typ entsprechend behandelt.
Da globale Variablen an Oblivion bzw. an eine Mod gebunden sind, existieren sie "immer" bzw. so lange, wie die Mod aktiviert ist.
Game Settings
Game Settings sind keine Variablen im normalen Sinne so wie die Globalen und Script-Variablen. Sie können z.b. nicht als Ersatz für eine Zahl in einem Script verwandt werden. Auf sie kann nur mit einer Funktion GetGameSetting zugegriffen werden.
Diese Variablen existieren ebenso wie die Globalen und sind auch überall zugreifbar.
Besonderheiten
Floatvariablen
Die Gleitkommaarithmetik von Float-Zahlen (oder vereinfacht ausgedrückt, das Rechnen mit Float-Zahlen) ist ein wenig gewöhnungsbedürftig, da mit diesem für Computer entwickelten Datentyp reale Zahlen nicht exakt abgebildet werden können, zumeist werden sie gerundet.
Referenzvariablen
Eine Referenzvariable kann immer dort eingesetzt werden, wo man auch eine Referenz (eines Objektes) nutzen würde. Mit Referenzvariablen kann man nicht rechnen, mit ihnen sind nur Zuweisungen und Vergleichsoperationen möglich.
Referenzen von Objekten, die nicht persistentsind, sind nicht zugreifbar, wenn das Objekt nicht im Spiel geladen ist (also sich nicht in der aktiven Zelle befindet). Auch Objekte, die in einen Container aufgenommen werden, sind nicht zugreifbar.