[Modding] Setzen und Checken von Variablen innerhalb eines Dialoges

Dieses Thema im Forum "Modding Forum" wurde erstellt von Acifer, 10. April 2020.

  1. Acifer

    Acifer Senior Member

    Registriert seit:
    Apr. 2019
    Beiträge:
    763
    Zustimmungen:
    52
    Für den Dialog in einer Quest sollte innerhalb eines Dialoges eine Variable gesetzt werden, wenn ein Gegenstand übergeben wurde. Nach drei weiteren Sätzen (Dialogstates) sollte diese Variable wieder abgefragt werden und je nach Wert der weitere Verlauf des Gespräches unterschiedliche Optionen bieten.
    Leider funktioniert das nicht. Ich bin mir sicher, keinen Fehler im Scripting o.ä. begangen zu haben und freue mich auf Hilfe. :)
     
  2. Jastey

    Jastey Matron Modderholic

    Registriert seit:
    Mai 2004
    Beiträge:
    7.767
    Zustimmungen:
    185
    Postest Du mal den Dialog oder lässt ihn mir anderweitig zukommen? Denn drei States später sollte wirklich kein Problem sein, in der alten Engine reichte ein Zwischenstate, bis eine im Dialog gesetzte Variable gesetzt und entsprechend erkennt wird.
     
  3. Acifer

    Acifer Senior Member

    Registriert seit:
    Apr. 2019
    Beiträge:
    763
    Zustimmungen:
    52
    Vielen Dank für das Angebot!
    Ich habe nur mittlerweile in einem Anflug von Verzweiflung den Dialog komplett umgeschrieben. Jetzt wird der Gegenstand genommen und nicht mehr nach einer Variable gefragt, sondern nach den drei States der Trigger HasItem(ResRef, Myself) abgefragt.
    Damit klappt es.

    Da ich noch mehrere weitere Dialoge in gleichem Muster in Arbeit habe, würde ich gerne diese dann hier hochladen, wenn die gleichen Probleme auftauchen.
    Danke! Das war nämlich meine ganz große Befürchtung, dass es dort manchmal zu hängern kommen könnte.
     
  4. Jastey

    Jastey Matron Modderholic

    Registriert seit:
    Mai 2004
    Beiträge:
    7.767
    Zustimmungen:
    185
    Nur der Vollständigkeit halber: ich hatte Probleme, dass das "GiveItemCreate" nicht ausgeführt wurde, wenn es in der Reihenfolge ganz hinten steht. Die Reihenfolge ~GiveItemCreate() SetGlobal" hat bei mir aber immer geklappt. Hier hatte ich das nochmal aufgeschrieben, ist nicht Dein Problem, aber vielleicht trotzdem hilfreich, nochmal darauf hinzuweisen.
     
  5. Jastey

    Jastey Matron Modderholic

    Registriert seit:
    Mai 2004
    Beiträge:
    7.767
    Zustimmungen:
    185
    in anderer Gedanke: Varablenamen dürfen eine bestimmte Anzahl an Zeichen nicht übersteigen. Bei den lokalen Variablen waren das glaube ich 26, bei den globalen 32 oder 36? Ich weiß es nicht mehr genau. Falls Dein Variablenname also zu lang war, dann klappt die Abfrage nicht mehr. Das war bei mir mal der Fehler gewesen.
     
    Zuletzt bearbeitet: 11. April 2020
  6. Acifer

    Acifer Senior Member

    Registriert seit:
    Apr. 2019
    Beiträge:
    763
    Zustimmungen:
    52
    Oh, das ist auch ein guter Hinweis! Das wusste ich bisher noch nicht.
    Es könnte ja noch andere solcher "Ausrutscher" in der Engine geben. Bevor man - wie ich gestern- den ganzen Dialogblock umschreibt, hätte ich einmal versuchen können, die Reihenfolge zu ändern.
    Das ist ein wertvoller Hinweis! Da ich ständig an der gerade höchstmöglichen Variablenlänge vorbeischramme, sollte ich da stärker darauf achten.
     
  7. Jastey

    Jastey Matron Modderholic

    Registriert seit:
    Mai 2004
    Beiträge:
    7.767
    Zustimmungen:
    185
    Es gibt auch Actions, die imer hinten stehen müssen, da sie nachfolgenden blockieren, ich hatte hier dazu was geschrieben. Der Klassiker ist JoinParty() und das Setzen der Variable dahinter und dann wundern, dass der NPC nicht weiß, dass er in der Gruppe ist, wenn man ihn wieder rausschmeißt.
    EDIT: hab das mit der Zeichenlänge hier nochmal zusammengestellt.
     
    Zuletzt bearbeitet: 11. April 2020
  8. Acifer

    Acifer Senior Member

    Registriert seit:
    Apr. 2019
    Beiträge:
    763
    Zustimmungen:
    52
    Das war wahrscheinlich der Grund.
    Der Unterschied in der Länge LOCALS / GLOBAL war mir nicht bekannt. Ich versuchte immer, nur bis 30 Zeichen zu gehen. Damit lag ich bei der lokalen Variable sicher drüber.
    Danke! :)
     
  9. Jastey

    Jastey Matron Modderholic

    Registriert seit:
    Mai 2004
    Beiträge:
    7.767
    Zustimmungen:
    185
    Mich hatte damals CamDawg gerettet. Bin wirklich genau daran verzweifelt.
     
  10. Jastey

    Jastey Matron Modderholic

    Registriert seit:
    Mai 2004
    Beiträge:
    7.767
    Zustimmungen:
    185
    Ich habe die Längenangaben im obigen Post korrigiert, ich glaube es waren 26 und 32 (32 weiß ich für DV).
     
  11. Acifer

    Acifer Senior Member

    Registriert seit:
    Apr. 2019
    Beiträge:
    763
    Zustimmungen:
    52
    Danke! Das mit der DV wusste ich auch nicht. Ich bin bisher davon ausgegangen, dass man den Cre-Namen o.ä. mit 8 Zeichen als DV nehmen sollte. Dass dort so viel mehr möglich ist, ist gut zu wissen. :)
    Eine Frage: Gibt es eigentlich in Notepad ++ eigentlich auch einen Zeichenzähler? In Context steht das ja ganz unten ("32 Chars selected"), aber in Notepad ++ habe ich das noch nie gesehen.
    Ich benutze daher manchmal den Zeichenzähler: https://xn--zeichenzhler-ncb.de/de/
    Das brachte mir nur nichts, weil die Länge für die Lokale Variable zu lang war.
     
  12. Jastey

    Jastey Matron Modderholic

    Registriert seit:
    Mai 2004
    Beiträge:
    7.767
    Zustimmungen:
    185
    Keine Ahnung, leider.

    Was ich für meine NPCs nehme: die cre ist irgendwas mit einem eindeutigen verlängerten Präfix und nicht länger als 8 Zeichen, z.B. c#ajan16.cre, c#bran01.cre, da ich bei neu gestarteten SoD oder BGII- Spielen gerne höherlevelige cres spawne (abhängig von der NPC-Mod, ich glaub bei Brage nicht). Die DV ist aber dann der NPC-Name mit meinem Präfix, also C#Ajantis, C#Brandock etc.
     
  13. Dabus

    Dabus Senior Member

    Registriert seit:
    Nov. 2007
    Beiträge:
    5.054
    Zustimmungen:
    4
    @Acifer: Schau auf die Statuszeile, in der Mitte bzw. etwas nach rechts. Da gibt es die Länge des Dokuments, daneben die Lage des Cursors und daneben Länge / Zeile der Selektion.
    TextFX (nur als 32-Bit Addin verfügbar) hat sonst unter Tools noch eine WordCount mit und ohne Space usw. Das zählt dann z.B. auch kein CRLF als zwei Zeichen...
     
    Zuletzt bearbeitet: 11. April 2020
  14. Acifer

    Acifer Senior Member

    Registriert seit:
    Apr. 2019
    Beiträge:
    763
    Zustimmungen:
    52
    Ah, jetzt habe ich es gefunden: Das ist das "Sel. 0 /0"
    Super, Danke! :)
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden