Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Nächste Überarbeitung | Vorherige Überarbeitung | ||
|
quickstart:skripte:logs [2015/08/18 20:15] 127.0.0.1 Externe Bearbeitung |
quickstart:skripte:logs [2026/03/26 23:59] (aktuell) nemora Formatierung |
||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | == Tagebucheinträge == | + | ====== Tagebucheinträge |
| Eine Quest besteht aus vielen Teilen. Aus Dialogen, Erfahrungsvergabe usw., aber ohne die Tagebucheinträge gibt es eigentlich gar keine Quests. Darum habe ich dieses Tutorial geschrieben. | Eine Quest besteht aus vielen Teilen. Aus Dialogen, Erfahrungsvergabe usw., aber ohne die Tagebucheinträge gibt es eigentlich gar keine Quests. Darum habe ich dieses Tutorial geschrieben. | ||
| Zeile 5: | Zeile 5: | ||
| Die Tagebucheinträge bestehen eigentlich aus zwei Teilen. Einmal setzt man den Status des Auftrags (Aktuell, Erfüllt...) und einmal schreibt man die Tagebucheinträge dazu. | Die Tagebucheinträge bestehen eigentlich aus zwei Teilen. Einmal setzt man den Status des Auftrags (Aktuell, Erfüllt...) und einmal schreibt man die Tagebucheinträge dazu. | ||
| - | == Vorarbeiten == | + | ===== Vorarbeiten |
| Bevor wir mit den Tagebucheinträgen wirklich beginnen können, müssen wir ein bisschen Vorarbeit leisten. Dazu gehört natürlich, die ganzen Dialoge schon zu schreiben. Dazu müssen einige (konstante) Variablen definiert werden. | Bevor wir mit den Tagebucheinträgen wirklich beginnen können, müssen wir ein bisschen Vorarbeit leisten. Dazu gehört natürlich, die ganzen Dialoge schon zu schreiben. Dazu müssen einige (konstante) Variablen definiert werden. | ||
| - | Am besten macht ihr dazu zwei ganz neue Skripts. Das erste Skript heißt LOG_Constants_TESTNAME.d und das zweite B_CloseTopics_TESTNAME.d. Beide Skripts solltet ihr in [Gothic II-Verzeichnis]\\_work\\Data\\Scripts\\Content\\Story\\Log_Entries speichern. TESTNAME könnt ihr durch euren Namen ersetzen, dort schreibt ihr dann im Laufe eurer Skripter-Karriere alle Tagebuchvariablen rein. | + | Am besten macht ihr dazu zwei ganz neue Skripts. Das erste Skript heißt LOG_Constants_TESTNAME.d und das zweite |
| - | Zuerst machen wir die LOG_Constants_TESTNAME.d: | + | Zuerst machen wir die '' |
| - | + | ||
| - | ------- | + | |
| + | <code C> | ||
| // *************************** | // *************************** | ||
| // LOG_Constants für Missionen | // LOG_Constants für Missionen | ||
| Zeile 23: | Zeile 22: | ||
| const string TOPIC_TESTTAGEBUCHNAME = " | const string TOPIC_TESTTAGEBUCHNAME = " | ||
| var int MIS_TESTTAGEBUCHNAME; | var int MIS_TESTTAGEBUCHNAME; | ||
| + | </ | ||
| ------- | ------- | ||
| + | <code C> | ||
| const string TOPIC_TESTTAGEBUCHNAME = " | const string TOPIC_TESTTAGEBUCHNAME = " | ||
| + | </ | ||
| - | Das "const string" | + | Das '' |
| Das was in den Anführungszeichen steht, ist dafür umso interessanter. Das ist nämlich der Name, der nachher im Tagebuch erscheint - diesen kann der Spieler also sehen und sollte darum ein aussagekräftiger Questname sein. | Das was in den Anführungszeichen steht, ist dafür umso interessanter. Das ist nämlich der Name, der nachher im Tagebuch erscheint - diesen kann der Spieler also sehen und sollte darum ein aussagekräftiger Questname sein. | ||
| Zeile 35: | Zeile 36: | ||
| ------- | ------- | ||
| + | <code C> | ||
| var int MIS_TESTTAGEBUCHNAME; | var int MIS_TESTTAGEBUCHNAME; | ||
| + | </ | ||
| - | Das var int ist prinzipiell wie das const string - es zeigt, dass das folgende der Name für eine Variable ist. TESTTAGEBUCHNAME ist der Name für die Variable und dieser Name ist intern (siehe TOPIC_TESTTAGEBUCHNAME). | + | Das '' |
| ------- | ------- | ||
| Zeile 48: | Zeile 51: | ||
| Nun schauen wir uns mal die B_CloseTopics_TESTNAME.d an: | Nun schauen wir uns mal die B_CloseTopics_TESTNAME.d an: | ||
| - | ------- | + | <code C> |
| // *************************************************** | // *************************************************** | ||
| // B_CloseTopics_TESTNAME () (verschiebt Topics in den zugehörigen Log-Ordner bei FAILED oder SUCCESS) | // B_CloseTopics_TESTNAME () (verschiebt Topics in den zugehörigen Log-Ordner bei FAILED oder SUCCESS) | ||
| Zeile 58: | Zeile 60: | ||
| B_CloseTopic (TOPIC_TESTTAGEBUCHNAME, | B_CloseTopic (TOPIC_TESTTAGEBUCHNAME, | ||
| }; | }; | ||
| + | </ | ||
| ------- | ------- | ||
| + | <code C> | ||
| func void B_CloseTopics_TESTNAME () | func void B_CloseTopics_TESTNAME () | ||
| + | </ | ||
| - | Das func void und das () kennt ihr ja nun schon zur Genüge und ihr könnt euch auch sicher denken, dass das B_CloseTopics_TESTNAME der Name der Funktion ist. Der sollte übrigens mit dem Skriptnamen übereinstimmen und darf nur einmal in allen Gothic-Skripten vorhanden sein. Ihr könnt TESTNAMEN darum durch euren Namen ersetzen und dieses Skript für all eure Tagebucheinträge nutzen. | + | Das '' |
| ------- | ------- | ||
| + | <code C> | ||
| B_CloseTopic (TOPIC_TESTTAGEBUCHNAME, | B_CloseTopic (TOPIC_TESTTAGEBUCHNAME, | ||
| + | </ | ||
| - | Das sieht vielleicht kompliziert aus - aber das ist es (mal wieder) kaum. Ein gutes Auge hat bemerkt, dass TOPIC_TESTTAGEBUCHNAME und MIS_TESTTAGEBUCHNAME bereits in der LOG_Constants_TESTNAME.d vorkam - und es müssen auch genau die gleichen Namen sein. B_CloseTopic ist nachher der Befehl, um den Auftrag zu beenden - ansonsten wäre der Auftrag immer bei den aktuellen Tagebucheinträgen... | + | Das sieht vielleicht kompliziert aus - aber das ist es (mal wieder) kaum. Ein gutes Auge hat bemerkt, dass '' |
| - | Nun bleibt nur noch zu erklären, was du 0 und die 6 am Ende sollen. Wer Gothic schon öfter gespielt hat, weiß, dass Gothic 6 Kapitel hat. Also ist die erste Zahl das Kapitel, in dem man den Auftrag anfangen kann und die zweite Zahl ist das Kapitel, wo man den Auftrag spätestens beendet haben muss. Würde | + | Nun bleibt nur noch zu erklären, was du 0 und die 6 am Ende sollen. Wer Gothic schon öfter gespielt hat, weiß, dass Gothic 6 Kapitel hat. Also ist die zweite Zahl ist das Kapitel, wo man den Auftrag spätestens beendet haben muss. Die erste Zahl sollte immer 0 sein, denn wenn man die Funktion B_CloseTopic aufruft und dort eine 1 steht, wird die Quest automatisch auf LOG_Success (Quest erfüllt) gesetzt. Auch wenn man die Funktion bei einer ganz anderen Quest aufruft. |
| ------- | ------- | ||
| Zeile 77: | Zeile 84: | ||
| Das war an sich schon vorerst das ganze Skript, nachher kommen natürlich mehr Quests zusammen. | Das war an sich schon vorerst das ganze Skript, nachher kommen natürlich mehr Quests zusammen. | ||
| - | == Tagebucheinträge in den Dialogen == | + | ===== Tagebucheinträge in den Dialogen |
| Jetzt haben wir schon die ganze Vorarbeit geleistet und müssen diese nur noch in unseren Dialogen einbauen. Dazu nutzen wir mal einen Beispieldialog: | Jetzt haben wir schon die ganze Vorarbeit geleistet und müssen diese nur noch in unseren Dialogen einbauen. Dazu nutzen wir mal einen Beispieldialog: | ||
| Zeile 83: | Zeile 90: | ||
| ------- | ------- | ||
| + | <code C> | ||
| instance PAL_555_Reiner_Testdialog01 (C_INFO) | instance PAL_555_Reiner_Testdialog01 (C_INFO) | ||
| { | { | ||
| Zeile 139: | Zeile 147: | ||
| B_CheckLog(); | B_CheckLog(); | ||
| }; | }; | ||
| + | </ | ||
| ------- | ------- | ||
| Zeile 146: | Zeile 155: | ||
| ------- | ------- | ||
| + | <code C> | ||
| Log_CreateTopic (TOPIC_TESTTAGEBUCHNAME, | Log_CreateTopic (TOPIC_TESTTAGEBUCHNAME, | ||
| Log_SetTopicStatus(TOPIC_TESTTAGEBUCHNAME, | Log_SetTopicStatus(TOPIC_TESTTAGEBUCHNAME, | ||
| B_LogEntry (TOPIC_TESTTAGEBUCHNAME," | B_LogEntry (TOPIC_TESTTAGEBUCHNAME," | ||
| + | </ | ||
| Das sieht sehr kompliziert aus - aber ihr wisst schon... | Das sieht sehr kompliziert aus - aber ihr wisst schon... | ||
| Zeile 154: | Zeile 165: | ||
| Die ersten zwei Befehle sind eigentlich recht simpel und dort müsst ihr nur TESTTAGEBUCHNAME durch euren internen Tagebuchnamen ersetzen. Diese drei Befehle sagen Gothic, dass dieser Auftrag nun aktuell ist und gelöst werden kann. | Die ersten zwei Befehle sind eigentlich recht simpel und dort müsst ihr nur TESTTAGEBUCHNAME durch euren internen Tagebuchnamen ersetzen. Diese drei Befehle sagen Gothic, dass dieser Auftrag nun aktuell ist und gelöst werden kann. | ||
| - | B_LogEntry (TOPIC_TESTTAGEBUCHNAME," | + | '' |
| ------- | ------- | ||
| + | <code C> | ||
| if (Npc_KnowsInfo (hero, PAL_555_Reiner_Testdialog01)) | if (Npc_KnowsInfo (hero, PAL_555_Reiner_Testdialog01)) | ||
| { | { | ||
| return TRUE; | return TRUE; | ||
| }; | }; | ||
| + | </ | ||
| Das könntet ihr schon verstehen. Der erste Dialog heißt ja PAL_555_Reiner_Testdialog01, | Das könntet ihr schon verstehen. Der erste Dialog heißt ja PAL_555_Reiner_Testdialog01, | ||
| Zeile 167: | Zeile 180: | ||
| ------- | ------- | ||
| | | ||
| + | <code C> | ||
| MIS_TESTTAGEBUCHNAME = LOG_SUCCESS; | MIS_TESTTAGEBUCHNAME = LOG_SUCCESS; | ||
| Log_SetTopicStatus(TOPIC_TESTTAGEBUCHNAME, | Log_SetTopicStatus(TOPIC_TESTTAGEBUCHNAME, | ||
| B_CheckLog(); | B_CheckLog(); | ||
| + | </ | ||
| - | TESTTAGEBUCHNAME müsst ihr wieder ersetzen. Der Befehl MIS_TESTTAGEBUCHNAME = LOG_SUCCESS; | + | '' |
| - | Das gleiche gilt eigentlich auch für Log_SetTopicStatus(TOPIC_TESTTAGEBUCHNAME, | + | Das gleiche gilt eigentlich auch für '' |
| - | B_CheckLog(); | + | '' |
| Zeile 183: | Zeile 198: | ||
| In dem Sinne, an die Arbeit. ;) | In dem Sinne, an die Arbeit. ;) | ||
| - | |||
| - | Bei Kritik, Verbesserungsvorschläge usw, bitte bei [http:// | ||