Construction Set Result Scripts in Quest Topics

Andy1967

Reisender
Die Frage kann hier sicher jemand leicht beantworten:

Wenn ich ein Script habe das im Hintergrund eine Variable definiert, kann ich die Variable dann im Result Script eines Topics verändern, in der Art von
Code:
set XYZ to XYZ+1

Es geht darum eine bestimmte Anzahl von Gesprächen durchlaufen zu müssen, bevor etwas neues passiert, z.B. eine neue Queststage ausgelöst wird.

Schon mal herzlichen Dank im Voraus für eure Antworten. :)
 
Um auf eine Variable eines Objekt-Skripts zugreifen zu können, muss das Skript auf einer persistenten Referenz liegen. Angenommen die Objektreferenz heißt MeinObjektRef und die Variable in dessen Skript Anzahl, dann kannst Du das von anderen Skripten, oder in den Results mit set MeinObjektRef.Anzahl to Wert ändern.
Zum Hochzählen der Variable dann eben set MeinObjektRef.Anzahl to MeinObjektRef.Anzahl + 1

Soll es kein Objektskript sein, kann auch ein Questskript benutzt werden. Dann eben die Quest abgeben, set MeineQuest.Anzahl to Wert

Um in Bedingungen eines Gesprächs, diese Variable wieder abzufragen, gibt es die Funktionen GetScriptVariable, bzw. GetQuestVariable
 
  • Like
Reaktionen: Andy1967
Ich dachte dran die Variable in ein Questscript zu packen in dem nichts anderes gemacht wird als eine Short "Anzahl" zu definieren. Das ganze dann an eine Queste "Anzahlcounter" die von Spielbeginn an läuft und als einzigen Eintrag den Verweis auf besagtes Questscript hat.

Die ganzen Gesprächsoptionen stecken dann in dem eigentlichen Quest das man spielt. Da gibt es jede Menge Gesprächsoptionen, da der NSC will, daß man alle möglichen Gegenstände beschafft. Dies kann man in beliebiger Riehenfolge tun, daher dachte ich es wäre sinnvoll am Ende der jeweiligen Gesprächsoption einen Counter hochzusetzen. Da bekannt ist wieviele Objekte gesucht werden müssen ist klar bei welchem Zählerstand ein "Ich habe alles gefunden" Ereignis ausgelöst werden muß. Daher noch mal zu meinem Verständnis: Kann ich bei einem Questscript auch anstelle des
Soll es kein Objektskript sein, kann auch ein Questskript benutzt werden. Dann eben die Quest abgeben, set MeineQuest.Anzahl to Wert
auch ein
Code:
set Anzahlcounter.Anzahl to Anzahl + 1
verwenden, oder muss da wirklich eine feste Wertangabe rein?

EDIT: Warte, ich glaub ich habs jetzt, nachdem mir wieder einfiel, daß ja auch in der Vanillaqueste mit dem Sammler der Ayleidenstatuen mitgezählt werden muß. Das wird jetzt erst mal gründlich analysiert, aber ich denke da dran kann ich mich langhangeln. :)
 
Zuletzt bearbeitet:
Nein, natürlich muss da kein fester Wert rein. Ich habe es ja oben so geschrieben. Ist ja wurscht, ob es sich um eine Quest-, oder Skriptvariable handelt

Code:
Zum Hochzählen der Variable dann eben set MeinObjektRef.Anzahl to MeinObjektRef.Anzahl + 1

In einem Questskript eben:

set MeineQuest.Anzahl to MeineQuest.Anzahl + 1



set Anzahlcounter.Anzahl to Anzahl + 1

Das würde sich niemals compilieren lassen. Die Syntax ist ObjektRef.Variable, oder QuestID.Variable. Nicht verwirren lassen, der Name des Skripts ist irrelevant. Man greift auf das Qbjekt, bzw. die Quest zu, auf dem es liegt.