====== Funktionstypen ======
Wir unterscheiden [[Skript:Funktionstypen|allgemeine Funktionen]], [[Skript:Funktionstypen|Callbackfunktionen]], [[NPC:Zustaende]] und [[NPC:Zustaende|Schleifenfunktionen]], [[Skript:Funktionstypen|Bedingungsfunktionen]], [[NPC:Tagesablaeufe]] und [[Skript:Funktionstypen|externe Funktionen]].
===== Allgemeine Funktionen =====
Allgemeine Funktionen sind nicht reglementiert. Sie dürfen eine beliebige Anzahl [[Skript:Funktionen|Parameter]] und entweder einen oder keinen [[Skript:Funktionen|Rückgabewert]] haben.
Die meisten Funktionen sind keine allgemeinen Funktionen. Dennoch sind diese Funktionen sehr nützlich, weil sich mir ihrer Hilfe wiederkehrende Aufgaben flexibel bewältigen, erledigen lassen.
===== Callbackfunktionen =====
Callback ist englisch für //zurückrufen//. Was wird zurückgerufen? Die Ausführung bzw. die Abarbeitung einer Funktion wird [[Skript:Funktionen|wiederaufgerufen]]. Damit die [[Engine]] einen solchen Rückruf tätigen kann, darf eine Callbackfunktion keine Parameter annehmen, sonst schleichen sich in der Spielmechanik Fehler ein und es könnte zum Absturz des Spiels kommen.
Eine Callbackfunktion hat keinen Rückgabewert und keine Parameter!
func void Name_der_Callbackfunktion ()
{
//Funktionskörper
};
===== Bedingungsfunktionen =====
Sie finden in der [[Klasse:C_INFO]] extensiv Verwendung mit der Eigenschaft //condition//.
Eine Bedingungsfunktion (engl. condition function) wird wie eine Callbackfunktion von der Engine aufgerufen und erwartet deshalb **keine** Parameter.
Die Engine erwartet eine Antwort als Zahl auf die Frage sind Bedingungen erfüllt oder nicht.
Dies wird durch die ganze Zahl 0 (nicht erfüllt) im Allgemeinen ausgedrückt durch die [[Skript:Konstanten|Konstante]] const int false = 0;
oder eine ganze Zahl ungleich null !0 (erfüllt) ausgedrückt durch die Konstante const int true = 1;
func int Name_der_Bedingungsfunktion ()
{
//Funktionskörper
return false; // oder return true
};
===== Externe Funktionen =====
Es sind alle Funktionen, die nicht in den Skripten definiert wurden, aber dennoch sozusagen extern oder vorab definiert wurden. Ihre Namen wurden bereits vergeben und können nicht verwendet werden.
In den Skripten lassen sie sich gut an ihren typischen Vorsilben Präfixen erkennen.
Naturgemäß können sie nicht in Skripten definiert werden.
===== Siehe auch =====
[[Skript:Funktionen]], [[Skript:Externe_Funktionen]]