Stranded


Scripting - IV. Bedingungen
Über Bedingungen kann man die Scripts (und somit das, was passiert) von bestimmten Umständen in der Spielwelt (welche über Befehle abgefragt werden können oder in Variablen gespeichert sind) abhängig machen.
Der essentielle Befehl dahinter lautet if.

• Der Befehl "if" in der Befehlsreferenz

Über ihn wird eine Bedingung formuliert, welche in runde Klammern hinter den Befehl zu schreiben ist. Wird diese erfüllt, so wird das in den darauf folgenden geschweiften Klammern stehende Script ausgeführt, ansonsten nicht.
Im Folgenden werden die Bedingungen stets mit Zahlen aufgebaut, aber wie gesagt können an deren Stelle genau so gut Variablen und Befehle mit Rückgabewert treten! Ein einfaches Beispiel:
on:start {
	if (5==5){
		msg "5 ist gleich 5!";
	}
}

Der msg-Befehl wird ausgeführt, denn 5 ist natürlich gleich 5. Zu beachten ist, dass für Vergleiche ein doppeltes Gleichheitszeichen verwendet werden muss statt nur einem. Neben Gleich ist auch z.B Ungleich, größer, kleiner etc. als Vergleichsoperator nutzbar. Wie dies funktioniert steht in der Befehlsreferenz bei if.
Ändert man nun eine der Zahlen, so dass die "Gleichung" nicht mehr stimmt, wird der Befehl in den geschweiften Klammern auch nicht mehr ausgeführt.
Aber es gibt auch eine Möglichkeit, alternative Scriptbefehle auszuführen, wenn die Bedingung nicht erfüllt ist. Hierfür nutzt man "else", um die Bedingung zu erweitern. Es wird einfach hinter die geschweiften Klammern des if-Befehls gehängt und hat wiederum eigene geschweifte Klammern, in welche die alternativen Befehle geschrieben werden können:
on:start {
	if (3==5){
		msg "3 ist gleich 5!";
	}else{
		msg "3 ist ungleich 5!";
	}
}

Hier wird "3 ist ungleich 5!" ausgegeben. Die Bedingung ist nämlich nicht erfüllt.
Aber hier ist noch nicht Ende Gelände. Das if-Gebilde lässt sich durch den elseif-Befehl nochmals beliebig erweitern. Elseif ist wie ein else, hat allerdings nochmal eine eigene Bedingung. Praktisch sieht das so aus:
on:start {
	if (3==5){
		msg "3 ist gleich 5!";
	}elseif (2==2){
		msg "3 ist ungleich 5 und 2 ist gleich 2";
	}else{
		msg "3 ist ungleich 5 und 2 ist ungleich 2";
	}
}

Statt dem else hätte auch ein weiteres "elseif" eingesetzt werden können. Diese Bedingungskette lässt sich beliebig lang fortsetzen.
Es gibt jedoch auch noch eine andere Möglichkeit für komplexe Bedingungen, nämlich Verknüpfungen mit "und","oder" etc. innerhalb der Bedingung selbst:
on:start {
	if ((3==5)&&(2==2)){
		msg "3 ist gleich 5 und 2 ist gleich 2";
	}else{
		msg "Ne, entweder ist 3 nicht gleich 5 oder 2 nicht gleich 2!";
	}
}

"&&" steht für "und" - ebenfalls nachzulesen in der Befehlsreferenz bei "if". Nur wenn 3 gleich 5 UND 2 gleich 2 ist, ist die Bedingung erfüllt. Das Ganze lässt sich mit vielen weiteren Verknüpfungen erweitern. Wichtig ist dabei, dass die einzelnen Teile stets in runde Klammern gesteckt werden.

Zusammenfassung

Bedingungen werden in der Form "if (Bedingung){Befehle}" aufgebaut. Über "else", "elseif" und Verknüpfungen innerhalb der Bedingungen (wie zB. "und" oder "oder") lassen sie sich erweitern.

• V. Scripts & Infos
Stranded I, Stranded II & Stranded III are games by Unreal Software 2003-2023 | Contact | Disclaimer