Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
|
daedalus [2015/08/24 19:50] milky-way |
daedalus [2016/02/09 12:37] (aktuell) milgo |
||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | Siehe Unterseiten | + | ====== Daedalus ====== |
| + | |||
| + | Daedalus ist die Skriptsprache die in Gothic verwendet wird, um die Welt mit Leben zu füllen. | ||
| + | |||
| + | Diese Dokumentation soll einen kurzen Überblick über die bei Gothic verwendeten Skripte liefern, mit Augenmerk auf die Gothic-MOD-Erstellung. Die Grundfunktionalitäten werden kurz erläutert und auf Besonderheiten der Skriptsprache hingewiesen. Diese Dokumentation soll allerdings nicht den kompletten Umfang und alle Möglichkeiten der Skriptsprache umfassen, sondern den Einstieg erleichtern und auf einige Kniffe hinweisen. Viele Kleinigkeiten, | ||
| + | ===== Wofür wird die Skriptsprache verwendet? ===== | ||
| + | |||
| + | Die Skriptsprache | ||
| + | |||
| + | *Eigenschaften von Gegenständen und Nichtspielercharakteren (NSCs) festlegen. | ||
| + | *Festlegen der NSC - AI. Das Verhalten bei bestimmten Spieleraktionen (durch Wahrnehmungen werden Skripte ausgeführt). | ||
| + | *Definieren der NSC - Tagesabläufe. | ||
| + | *Dialoge mit NSCs steuern. | ||
| + | *Auswirkungen von Magie definieren. | ||
| + | *Kameraverhalten in bestimmten Situationen. | ||
| + | *Aussehen der Partikeleffekte festlegen. | ||
| + | *Eigenschaften von Soundeffekten festelegen. | ||
| + | *Menüdarstellung | ||
| + | *etc... | ||
| + | |||
| + | Die einzelnen Skriptfiles besitzen die Endung " | ||
| + | ===== Aufbau der Skriptsprache ===== | ||
| + | |||
| + | Die Skriptsprache benutzt sogenannte " | ||
| + | |||
| + | Solche Klassen beginnen mit dem Schlüsselwort CLASS und dürfen nicht verändert werden. Sie bilden die Schnittstelle zwischen dem Skript und dem eigentlichen Programm (Gothic) und müssen deshalb exakt übereinstimmen. Sollten trotzdem die Variablentypen oder die Reihenfolge der Variablen verändert werden, wird sich Gothic unverhersehbar verhalten oder im schlimmsten Fall abstürzen, da Gothic die benötigten Werte an die falsche Stelle schreibt... | ||
| + | |||
| + | Die einzelnen Klassen sind im " | ||
| + | |||
| + | Wichtige Klassen sind: | ||
| + | |||
| + | *C_NPC (Welche Eigenschaften eines NSCs kann man in den Skripten verändern) | ||
| + | *C_ITEM (Welche Eigenschaften von Gegenständen kann man in den Skripten verändern) | ||
| + | *C_INFO (Eine Information, | ||
| + | |||
| + | Klassen sind natürlich wertlos ohne die Instanzen der jeweiligen Klassen. Instanzen sind im Spiel vorkommende Objekte dieser Klasse, z.B. ist ein NSC im Spiel eine Instanz der Klasse " | ||
| + | |||
| + | Instanzen werden mit den Schlüsselwort INSTANCE eingeleitet. Hier werden dann die Eigenschaften des Objektes festgelegt, indem die einzelnen Variablen, die in der Klasse festgelegt wurden, mit Werten initialisiert werden. Jedes D-File im Ordner " | ||
| + | ===== Einschränkungen der Skriptsprache ===== | ||
| + | |||
| + | Die Gothic Skriptsprache besitzt einige Einschränkungen und Besonderheiten, | ||
| + | |||
| + | *Es gibt keine FOR- oder WHILE- Schleifen, man kann aber Rekursion verwenden. | ||
| + | *Die Operatorenpriorität stimmt mit der von C++ überein. | ||
| + | *Einige Zuweisungsoperatoren für Integer-Typen sind nicht vorhanden (+=, -=,..). | ||
| + | *Auf einzelne Arrayelemente kann nur mit einer Konstante als Index zugegriffen werden : erlaubt ist " | ||
| + | Arrays können nicht als Funktionensparameter übergeben werden. | ||
| + | *Es gibt nur den Zuweisungsoperator bei den Fliesskommazahlen (keine Rechnungen mit FLOATs möglich). | ||
| + | *Alle globalen Variablen oder in den Funktionen definierten lokalen Variablen sind automatisch mit Null initialisiert. Dies gilt auch für nichtbelegte Variablen bei den meisten Instanzen. | ||
| + | *Lokale Variablen in Funktionen werden wie globale Variablen behandelt und behalten ihren Wert bei Verlassen der Funktion. Sie werden also nicht temporär erzeugt und anschliessend wieder gelöscht, wie es bei C++ der Fall ist. | ||
| + | |||
| + | ===== Die Externals ===== | ||
| + | |||
| + | Die " | ||