Quests selber gestalten

    • Official Post

    So, heute mal ein Tutorial zu der Basisgestaltung von Quests.
    Dazu gebe ich nun erstmal einen Überblich über Quets, Trigger und Conversations.


    Quests:


    Definiert werden Quests in der Quest.lst im "Conversations"-Dir. Der Syntax ist folgender:

    Code
    Questname=Questbeschreibung


    Die Questbeschreibung ist das, was nachher im Spiel im Aufgabenbuch auftaucht, der Name dient nur dazu das ganze ins Spiel zu integrieren.
    Die Scriptsyntax um einen Quest zum Questlog hinzuzufügen oder zu Entfernen ist folgende:

    Code
    AddQuest=QUESTNAME;RemoveQuest=QUESTNAME;


    Trigger (Title):


    Trigger sind die eigendlich wichtigen Elemente beim Questen. Mit ihnen ist es möglich Abhängigkeiten und Bedingungen zu schaffen. So ist es bspw. möglich Dialogoptionen erst dann verfügbar zu machen, wenn ein anderer Dialog zuvohr geführt wurde. Auch entscheidungen in verschiedene richtung (á la Gut/Böse) lassen sich so realisieren.
    Die Anzahl der Trigger ist unbegrenzt. Sie müssen auch nicht in irgendeiner Datei definiert werden wie es bei den Quests der fall ist. Trigger funktionieren wie Boolsche operatoren. Es gibt nur True und False, oder in diesem Falle: Es gibt den Trigger oder es gibt ihne nicht.


    Trigger werden wie folgt definiert:

    Code
    player.AddTitle(TRIGGERNAME);player.RemoveTitle(TRIGGERNAME);


    Das entfernen klappt leider in der Praxis in meinen Versuchen nicht.



    Abhängigkeiten:


    Abhängigkeiten sind jetzt der Wer trigger zu benutzen. Sie funktionieren wie if-operatoren. Die Syntax ist folgende:


    Code
    All(ttl(TRIGGERNAME));All(ttl(!TRIGGERNAME));All(ttl(TRIGGERNAME,!TRIGGERNAME2));


    Das ! bedeutet das für die Bedingung der Trigger nicht vorhanden sein darf. Ohne ! heißt es das der Trigger für die Bedingung vorhanden sein muss.




    CNVEditor


    Der Editor ist ein mächtiges Werkzeug, wenn es um das bearbeiten von CNV's geht. Zu beginn fragt es euch, nach der Position der Items.db und nach dem Conversations Ordner. Dann geht es los.
    Unten links findet ihr eine Liste aller CNV die sich in eurem Conversations Ordner befinden. So sieht das dann aus:
    [Blocked Image: http://img264.imageshack.us/img264/8297/cnv1kv6.th.jpg]
    Hier wird der Dialog dargestellt, wie er stattfinden würde.
    [Blocked Image: http://img230.imageshack.us/img230/2500/cnv2yj3.th.jpg]
    Hier könnt ihr euer Script debuggen. Es werden alle If-Abfragen dargestellt, wie das ergebnis war und was es bewirkt hat.


    Die nächsten 3 Karteikarten sind weniger interessant. Sie zeigen wann ein Quest, Trigger etc. Eingefügt oder entfernt wird.


    [Blocked Image: http://img299.imageshack.us/img299/3716/cnv6vd6.th.jpg]
    Das hier ist hingegen schon interessanter. CNVEdit simuliert einen Spieler. Das heißt, wenn ihr in CNV Edit durch eine Dialogoption einen Trigger aktiviert habt oder ein Item erhalten habt, so wird es hier gespeichert und wirkt sich entsprechend auf alle anderen Dialogoptionen aus. Das ermöglicht es, im CNVEditor Dialoge komplett durchzugehen ohne das Spiel auch nur einmal starten zu müssen.


    [Blocked Image: http://img150.imageshack.us/img150/7190/cnv7ap0.th.jpg]
    Die letzte Seite ist der eigentliche CNVEditor. Er besitzt einen Syntax Check (2. Symbol oben von rechts) und hebt einzelne Elemente farblich hervor. Wenn man seine CNV hier speichert wird auch automatisch der Dateiheader aktualisiert.


    -------------------------------------------------------------


    Mit dem Triggern und CNVEdit erstellen wir nun einen Simplen Trigger in einer CNV:



    Was passiert: Wir sprechen den NCP an, er fragt und ob wir ihn mögen oder nicht. Wenn wir ihn das nächste mal ansprechen reagiert er abhängig von unserer antwort.


    Das ist die Basis um Quests zu bauen. Eine aneinanderreihung von triggern. Überprüfen kann man das alles anhand des CNVEditors.
    Und nun wünsche ich viel spaß.



    Ahja, abhängigkeiten lassen sich auch mit Gegenständen machen, dazu vllt später mal was :D

  • Quote

    All(ttl(TRIGGERNAME));
    All(ttl(!TRIGGERNAME));
    All(ttl(TRIGGERNAME,!TRIGGERNAME2));


    Interessant auch in diesem zusammenhang der Befehl "One".


    All(ttl(TRIGGERNAME,!TRIGGERNAME2)); -> Alle der Bedingunegn müssen erfüllt sein
    One(ttl(TRIGGERNAME,!TRIGGERNAME2)); -> nur eine der Bedingungen muss erfüllt sein

  • Wow... Ne lange Liste, schätze ich muss einiges Nachholen bzw. Aufrischen o.O?


    Das mit dem Trigger (Auslöser) erinnert mich an den RPG-Maker... :P


    Quote

    Was passiert: Wir sprechen den NCP an, er fragt und ob wir ihn mögen oder nicht. Wenn wir ihn das nächste mal ansprechen reagiert er abhängig von unserer antwort.


    Ansonsten alles gut :D



    Wie auch immer, ich versuche mal was neues mit der Anleitung ^^ *10-KG Kaffee hol*


    PS: Was passiert, wenn man den "Author" oder "Version" Bereich ändern würde. Spielt das im Spiel ne Rolle oder is das "einfach nur so da"


    [FileID]
    Author= (Mir is übrigens aufgefallen, dass bei vielen Cnv Dateien "Tucker" steht)
    Coding
    Approved
    version=1

  • Ich habe jetzt mal für Taylor eine Quest gemacht, sie wird aber im spiele nicht angezeigt.
    Das Adventure funktioniert aber.
    kann mir mal jemand sagen, warum es nicht angezeigt wird.


    Und außersem hat CNV Edit bei mir irgendetwas von:
    [Quests]
    added= (joinedtaylo,addques(;


    in den Header geschrieben.