= 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; }; __ == 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]]