Oblivion:If: Unterschied zwischen den Versionen
Keris (Diskussion | Beiträge) K (Die Seite wurde neu angelegt: [http://www.ei-der-zeit.com/LexikonCSIV/tesiv-cs/befehle/If.html If] If) |
Keris (Diskussion | Beiträge) K |
||
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | [ | + | Mit dem IF-Befehl kannst du Bedingungen festlegen, um bestimmte [[:Kategorie:Blocktypen|Blöcke]] (und dessen Script-Kommandos) auszuführen. Der IF-Befehl in Oblivion ist sehr stark und vergleichbar mit dem in "echten" Programmiersprachen. |
− | [[Kategorie:Befehle|If]] | + | |
+ | |||
+ | ---- | ||
+ | |||
+ | ='''Überblick'''= | ||
+ | |||
+ | |||
+ | |||
+ | Ein IF-Befehl benutzt die folgenden Anweisungen: | ||
+ | |||
+ | <code>if expressionA [comparison] expressionB | ||
+ | |||
+ | ; testet ob "expressionA [comparison] expressionB" passiert ist | ||
+ | |||
+ | elseif expressionB [comparison] expressionC | ||
+ | |||
+ | ; testet ob "expressionB [comparison] expressionC" passiert ist | ||
+ | |||
+ | else | ||
+ | |||
+ | ; Keines der obigen Tests wurden erfüllt | ||
+ | |||
+ | endif</code> | ||
+ | |||
+ | Die ELSE- und ELSEIF-Befehle sind optional. | ||
+ | IF = Wenn | ||
+ | |||
+ | ELSEIF = Ansonsten Wenn | ||
+ | |||
+ | ELSE = Andernfalls | ||
+ | |||
+ | |||
+ | ='''Vergleichs Operatoren'''= | ||
+ | |||
+ | |||
+ | Ein IF-Befehl kann einen oder mehrere Vergleichsoperatoren beinhalten. Unten ist eine Tabelle von erlaubten Vergleichs-Operatoren: | ||
+ | |||
+ | <div class=edztable> | ||
+ | {| | ||
+ | |- | ||
+ | !Operator||Beschreibung | ||
+ | |- | ||
+ | |== | ||
+ | |Exakt der selbe Wert wie | ||
+ | |- | ||
+ | |=! | ||
+ | |Nicht der selbe Wert wie | ||
+ | |- | ||
+ | |> | ||
+ | |Größer als | ||
+ | |- | ||
+ | |>= | ||
+ | |Größer oder gleich wie | ||
+ | |- | ||
+ | |< | ||
+ | |Kleiner als | ||
+ | |- | ||
+ | |<= | ||
+ | |Kleiner oder gleich wie | ||
+ | |} | ||
+ | </div> | ||
+ | |||
+ | |||
+ | Es ist wichtig zu wissen, dass es in der Oblivion Scriptsprache keinen Bit-weisen Vergleich gibt! | ||
+ | |||
+ | |||
+ | ='''Kombinierter Vergleich'''= | ||
+ | |||
+ | |||
+ | Vergleiche können auch mit den folgenden logischen Operatoren miteinander verlinkt werden: | ||
+ | |||
+ | <div class=edztable> | ||
+ | {| | ||
+ | |- | ||
+ | !Operator||Beschreibung||Beispiel | ||
+ | |- | ||
+ | |&& | ||
+ | |Logisches UND (AND) | ||
+ | |if x == 1 && y == 1 ; Gibt Wahr aus, wenn x und y genau 1 betragen | ||
+ | |- | ||
+ | |II | ||
+ | |Logisches ODER (OR) | ||
+ | |if x == 1 II y == 1 ; Gibt Wahr aus, es sei denn x oder y hat den Wert 0 | ||
+ | |} | ||
+ | </div> | ||
+ | |||
+ | Beachte, dass "||" vor "&&" ausgewertet wird, genauso wie "*" vor "+" in der normalen Algebra ausgewertet wird. | ||
+ | Wenn du willst, dass && als erstes ausgewertet wird, musst du diese in Klammern setzen. Als Beispiel: | ||
+ | |||
+ | <code>if myVar1 == 1 && myVar2 == 1 || myVar2 == 5</code> | ||
+ | |||
+ | Diese Bedingung ist WAHR, wenn MyVar1 =1 UND myVar2 entweder 1 oder 5 ist. | ||
+ | |||
+ | |||
+ | <code>if (myVar1 == 1 && myVar2 == 1) || myVar2 == 5</code> | ||
+ | |||
+ | Dieses ist WAHR, wenn entweder myVar2 5 ist ODER die beiden myVar1 und myVar2 1 ist. | ||
+ | |||
+ | |||
+ | ='''Vergleiche und Expression'''= | ||
+ | |||
+ | |||
+ | Der Vergleichs-Operator kann mit einer Expression ("Ausdruck") benutzt werden, um eine Zahl auswerten zu können. Vorausgesetzt dass "a=17", "b=20" und "c=a-b" ist, werden die folgenden Expressionen wie erwartet arbeiten. Klammern werden nur gebraucht, wenn es aus mathematischen Gründen erforderlich wird. | ||
+ | |||
+ | <code>IF c == -3 && b == 20 | ||
+ | IF c == -3 && b == 20 && a == 17 | ||
+ | IF c - 1 == -4 && b == 20 && a == 17 | ||
+ | IF a - 20 == 17 - b | ||
+ | IF a - 20 == 17 - b && c + 3 == 0 | ||
+ | IF a + 3 == b | ||
+ | IF a - b == c | ||
+ | IF a *4 - b * 4 == c * 4 | ||
+ | IF a * ( 5 + c ) - 14 == b | ||
+ | IF 2*(a*(5+c)-14)==b - -b</code> | ||
+ | |||
+ | Wenn eine Variable oder das Ergebnis einer Funktion 1 (oder einen Wert größer 1!) wiedergibt, brauchst du es nicht noch einmal mit "==1" zu testen. | ||
+ | |||
+ | <code>IF Done | ||
+ | IF Getisid MyNPC | ||
+ | IF IsActor && Flag | ||
+ | IF Flag</code> | ||
+ | |||
+ | Macht dasselbe wie: | ||
+ | |||
+ | <code>IF Done == 1 | ||
+ | IF Getisid MyNPC == 1 | ||
+ | IF IsActor == 1 && Flag == 1 | ||
+ | IF Flag >= 1</code> | ||
+ | |||
+ | |||
+ | |||
+ | [[Kategorie: Befehle|If]] |
Aktuelle Version vom 28. August 2008, 20:49 Uhr
Mit dem IF-Befehl kannst du Bedingungen festlegen, um bestimmte Blöcke (und dessen Script-Kommandos) auszuführen. Der IF-Befehl in Oblivion ist sehr stark und vergleichbar mit dem in "echten" Programmiersprachen.
Inhaltsverzeichnis
Überblick
Ein IF-Befehl benutzt die folgenden Anweisungen:
if expressionA [comparison] expressionB
- testet ob "expressionA [comparison] expressionB" passiert ist
elseif expressionB [comparison] expressionC
- testet ob "expressionB [comparison] expressionC" passiert ist
else
- Keines der obigen Tests wurden erfüllt
endif
Die ELSE- und ELSEIF-Befehle sind optional. IF = Wenn
ELSEIF = Ansonsten Wenn
ELSE = Andernfalls
Vergleichs Operatoren
Ein IF-Befehl kann einen oder mehrere Vergleichsoperatoren beinhalten. Unten ist eine Tabelle von erlaubten Vergleichs-Operatoren:
Operator | Beschreibung |
---|---|
== | Exakt der selbe Wert wie |
=! | Nicht der selbe Wert wie |
> | Größer als |
>= | Größer oder gleich wie |
< | Kleiner als |
<= | Kleiner oder gleich wie |
Es ist wichtig zu wissen, dass es in der Oblivion Scriptsprache keinen Bit-weisen Vergleich gibt!
Kombinierter Vergleich
Vergleiche können auch mit den folgenden logischen Operatoren miteinander verlinkt werden:
Operator | Beschreibung | Beispiel |
---|---|---|
&& | Logisches UND (AND) | if x == 1 && y == 1 ; Gibt Wahr aus, wenn x und y genau 1 betragen |
II | Logisches ODER (OR) | if x == 1 II y == 1 ; Gibt Wahr aus, es sei denn x oder y hat den Wert 0 |
Beachte, dass "||" vor "&&" ausgewertet wird, genauso wie "*" vor "+" in der normalen Algebra ausgewertet wird. Wenn du willst, dass && als erstes ausgewertet wird, musst du diese in Klammern setzen. Als Beispiel:
if myVar1 == 1 && myVar2 == 1 || myVar2 == 5
Diese Bedingung ist WAHR, wenn MyVar1 =1 UND myVar2 entweder 1 oder 5 ist.
if (myVar1 == 1 && myVar2 == 1) || myVar2 == 5
Dieses ist WAHR, wenn entweder myVar2 5 ist ODER die beiden myVar1 und myVar2 1 ist.
Vergleiche und Expression
Der Vergleichs-Operator kann mit einer Expression ("Ausdruck") benutzt werden, um eine Zahl auswerten zu können. Vorausgesetzt dass "a=17", "b=20" und "c=a-b" ist, werden die folgenden Expressionen wie erwartet arbeiten. Klammern werden nur gebraucht, wenn es aus mathematischen Gründen erforderlich wird.
IF c == -3 && b == 20
IF c == -3 && b == 20 && a == 17
IF c - 1 == -4 && b == 20 && a == 17
IF a - 20 == 17 - b
IF a - 20 == 17 - b && c + 3 == 0
IF a + 3 == b
IF a - b == c
IF a *4 - b * 4 == c * 4
IF a * ( 5 + c ) - 14 == b
IF 2*(a*(5+c)-14)==b - -b
Wenn eine Variable oder das Ergebnis einer Funktion 1 (oder einen Wert größer 1!) wiedergibt, brauchst du es nicht noch einmal mit "==1" zu testen.
IF Done
IF Getisid MyNPC
IF IsActor && Flag
IF Flag
Macht dasselbe wie:
IF Done == 1
IF Getisid MyNPC == 1
IF IsActor == 1 && Flag == 1
IF Flag >= 1