[Modding] Setzen und Checken von Variablen innerhalb eines Dialoges

Acifer

Senior Member
Registriert
27.04.2019
Beiträge
1.138
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. :)
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
9.862
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.
 

Acifer

Senior Member
Registriert
27.04.2019
Beiträge
1.138
Postest Du mal den Dialog oder lässt ihn mir anderweitig zukommen?
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.
Denn drei States später sollte wirklich kein Problem sein,
Danke! Das war nämlich meine ganz große Befürchtung, dass es dort manchmal zu hängern kommen könnte.
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
9.862
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.
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
9.862
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:

Acifer

Senior Member
Registriert
27.04.2019
Beiträge
1.138
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.
Oh, das ist auch ein guter Hinweis! Das wusste ich bisher noch nicht.
ist nicht Dein Problem, aber vielleicht trotzdem hilfreich, nochmal darauf hinzuweisen.
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.
Varablenamen dürfen eine bestimmte Anzahl an Zeichen nicht übersteigen. Bei den lokalen Variablen waren das glaube ich 27, bei den globalen 32 oder 36? Ich weiß es nicht mehr genau.
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.
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
9.862
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:

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
9.862
Mich hatte damals CamDawg gerettet. Bin wirklich genau daran verzweifelt.
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
9.862
Ich habe die Längenangaben im obigen Post korrigiert, ich glaube es waren 26 und 32 (32 weiß ich für DV).
 

Acifer

Senior Member
Registriert
27.04.2019
Beiträge
1.138
Ich habe die Längenangaben im obigen Post korrigiert, ich glaube es waren 26 und 32 (32 weiß ich für DV).
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.
 

Jastey

Matron Modderholic
Registriert
16.05.2004
Beiträge
9.862
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.
 

Dabus

Senior Member
Registriert
18.11.2007
Beiträge
5.086
@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:
Oben