====== Daedalus ====== Nach dem bekannt ist, was [[Skript|Skripte]] sind, wird sich nun mit der Skriptsprache auseinander gesetzt. Die Skriptsprache Daedalus gibt es exklusiv für die Entwicklung von Modifikationen für Gothic. Sie ist von der Syntax her an JavaScript angelehnt, aber das nutzt Neulingen nichts, da sie das Schreiben von Code erst noch lernen müssen. Ein Skript besteht aus Anweisungen und Kommentaren, die gemäß der Regeln der Skriptsprache aufgeschrieben werden müssen. Die Regeln bestimmen den Satzbau aus [[Skript:Daedalus|Symbolen]], Schlüsselworten, Werten und Ausdrücken, wie in deutsch. **Allerdings** gibt es bei Skriptsprachen //keine laxe Handhabung der Rechschreibregeln oder der Stellung der Wörter im Satz und Satzzeichen!// Wenn ihr in Daedalus ein Skript verfasst sind zunächst einmal nur Kommentare und Deklarationen zulässig. ===== Kommentare ===== Kommentare sind dazu da, zu beschreiben, was das Skript - in einem kleineren Abschnitt, der Code - bewirken soll. Dies ist wichtig, da nicht immer direkt aus dem Skript hervorgeht, was im Spiel gerade passiert. Falls etwas nicht so läuft wie erwartet fällt die Fehlersuche ohne Kommentare noch schwerer. Außerdem kann man Kommentare dazu benutzen, sich mit anderen Programmierern (die auch auf die Dateien zugreifen) abzusprechen. Kommentare gibt es **einzeilig** und **mehrzeilig**. //Einzeilige Kommentare// beginnen mit dem //Doppelslash-Symbol// ''%%//%%''. Code oder Text der in der selben Zeile danach steht, wird **nicht** mehr vom [[Skript:Parser]] ausgewertet. //Mehrzeilige Kommentare// beginnen mit dem //Slashstern-Symbol// ''%%/*%%'' und enden unabhängig von einem oder mehreren Zeilenwechseln mit einem //Sternslash-Symbol// ''%%*/%%''. Was zwischen diesen beiden Symbolen steht wird vom Parser **nicht** interpretiert. Eine Verschachtelung wie bei Klammern ist daher nicht möglich. Dafür ist es möglich in deutsch (oder englisch, polnisch, russisch, französisch, ...) zu schreiben, statt in Daedalus, ohne Fehler bei der Auswertung zu provozieren. ===== Deklarationen ===== Deklarationen ordnen [[Skript:Bezeichner|Bezeichnern]] eine //Bedeutung// zu. Deklariert werden müssen [[Skript:Klassen]], [[Skript:Funktionen]], [[Skript:Instanzen]], [[Skript:Variablen]] und [[Skript:Konstanten]]. Mit der Deklaration eines Bezeichners bzw. Namens wird sein Werttyp festgelegt, bei Funktionen der [[Skript:Funktionen|Antwortwerttyp]]. Anschließend kann der Name nur noch als //Referenz// und nicht mehr in einer Deklaration benutzt werden. *Konstanten können [[Skript:Daedalus|einfache Werttypen]] und [[Skript:Funktionstypen]] haben *Variablen und Funktionen können auch [[Skript:Daedalus|nicht-einfache Typen]] haben. *Instanzen sind **Werte** eines Klassentyps. *Klassen **sind** Klassentypen. ===== Werttypen ===== Werttypen sind zu unterscheiden in //einfache// und //nicht-einfache//, höhere, komplexe oder strukturierte Typen. Werte von einfachen Typen lassen sich im Allgemeinen im Satz, innerhalb einer Anweisung aufschreiben. ==== Einfache Typen ==== Zu den einfachen Typen gehören *Ganze Zahlen ''const int Beispiel_int = 10;'' *Dezimalzahlen ''const float Beispiel_float = 0.201e-5;'' *Zeichenketten ''const string Beispiel_string = "Hallo Welt!";'' ==== Zahlen ==== Ganze Zahlen und Dezimalzahlen sind nicht zuweisungskompatibel, können aber über [[Skript:Externe_Funktionen_ohne_Praefix|Externe Funktionen]] in den jeweils anderen Typ umgewandelt werden. In Daedalus lässt es sich nur mit ganzen Zahlen rechnen. ==== Zeichenketten ==== In Daedalus lassen sich Zeichenketten (engl. Strings) miteinander verknüpfen. Dabei wird der //zweite// String an den //Ersten// angehängt. Man nutzt dazu die [[Funktion:ConcatStrings]]. ==== Nicht-einfache Typen ==== Werte von nicht-einfachen Typen sind [[Skript:Funktionen]] ''func'' und [[Skript:Instanzen]]. Für eine Instanz muss dazu der Klassentyp also der Name der Klasse angegeben werden. **Beispiel:** var func Beispiel_func; Beispiel_func = Eine_Funktion; instance NpcInstanz (C_NPC) {}; var C_NPC Beispiel_Instanz_C_NPC; Beispiel_Instanz_C_NPC = Hlp_GetNpc(NpcInstanz); Siehe dazu auch [[Skript:Funktionstypen]] ===== Schlüsselworte ===== ===== Siehe auch =====