Construction Set Problem mit Questvariablen

Saurons Auge

Reisender
Ich habe ein Problem mit einer Nebenquest, die ich gerade mache. Es geht darum, drei Gegenstände zu sammeln, dabei soll die Reihenfolge frei sein. Dieses Problem ist schon gelöst, ich habe es gleich gemacht wie in der Nebenquest MS05, "Düster durch einen Albtraum" (Da gibt es einen Abschnitt, wo man für Henantier die vier Elemente der Traumwelt sammeln soll).

Das Questscript meiner Quest sieht folgendermaßen aus:
Code:
Scriptname 00E01QuestScript

short SteinGelbDoOnce
short SteinRotDoOnce
short SteinGruenDoOnce
short FoundElement
float fQuestDelayTime

begin gamemode

if ( Player.GetItemCount 00SteinGelb == 1 ) && ( SteinGelbDoOnce == 0 )
	set FoundElement to ( FoundElement + 1 )
	set SteinGelbDoOnce to 1
endif

if ( Player.GetItemCount 00SteinRot == 1 ) && ( SteinRotDoOnce == 0 )
	set FoundElement to ( FoundElement + 1 )
	set SteinRotDoOnce to 1
endif

if ( Player.GetItemCount 00SteinGruen == 1 ) && ( SteinGruenDoOnce == 0 )
	set FoundElement to ( FoundElement + 1 )
	set SteinGruenDoOnce to 1
endif



if ( FoundElement < 4 )
	if ( FoundElement == 1 )
		SetStage 00E01 2
	endif
	if ( FoundElement == 2 )
		SetStage 00E01 4
	endif
	if ( FoundElement == 3 )
		SetStage 00E01 6
		Set FoundElement to 4
	Set fQuestDelayTime to 0
	endif
endif

end
"00E01" ist der Questname. Das Script sollte so auch stimmen, jedenfalls reklamiert das CS nicht.
Nun habe ich die Queststages erstellt, nämlich drei Stufen mit jeweils drei möglichen Tagebucheinträgen, einen für jeden Stein. Jeder Eintrag hat die Bedingung, dass die jeweilige DoOnce-Variable auf 1 ist. Auch das funktioniert.

Nun sollte ich allerdings als ResultScript jedes Tagebucheintrags die zum Stein gehörige Variable, also bspw. für den roten Stein die Variable "SteinRotDoOnce", auf 2 setzen, damit man nicht denselben Stein zweimal finden kann. Für den roten Stein sähe das Script so aus:
Code:
Set 00E01.SteinRotDoOnce to 2
An dieser Stelle kann ich aber das Script nicht abspeichern, da eine Fehlermeldung kommt, die mir sagt, dass die angegebene Variable unbekannt ist. Das ist mir ein Rätsel, schließlich habe ich sie erstens im Questscript deklariert, zweitens funktioniert es bei den Bedingungen für die Queststages auch einwandfrei.

Ich habe mich für die Quest an der Nebenquest "MS05" orientiert, kann aber keine Unterschiede erkennen, was dieses Problem betrifft. Nur, dass es bei dieser Quest eben klappt und bei meiner nicht. Was habe ich falsch gemacht? Muss man solche Variablen noch woanders deklarieren, nicht nur im QuestScript? :huh:

Bitte helft mir...

Mfg
 
Zahlen am Anfang von IDs können zu seltsamen Problemen führen. Probier das ganze mal mit IDs, die nicht mit Zahlen anfangen.
 
Kurze, aber richtige Antwort^^
Es lag tatsächlich daran, dabei dachte ich, das sei nur bei ReferenceIDs problematisch...

Na gut, ich habe daraus gelernt. QuestIDs auch nie mehr mit Zahlen beginnen. ;)

Vielen Dank. :)
 
Ich habe mehr oder weniger ein ähnliches Problem.

Ich will eine Quest machen und sie soll so aussehen: Der Spieler muss dem Auftraggeber (in meinem Fall heisst er Dardarion) 5 Pfeilwurzeln bringen. Diese muss er zuerst in der Natur sammeln.

Mein Problem: Sobald ich die Quest starte und die Wurzeln sammle, startet er das falsche Greeting. Also ich meine das sollte so aussehen:

1tes Greeting: Wenn <=4 Pfeilwurzeln (also 4 oder weniger Wurzeln), soll er sagen dass er wiederkommen soll wenn er die Wurzeln hat.

2tes Greeting: Wenn >=5 (Also 5 oder mehr Wurzeln) soll er sagen dass er daraus Tränke brauen wird.

Wenn ich allerdings die 5 Wurzeln habe und ihn anspreche, startet er immer wieder das erste Greeting. Was mache ich falsch?

Hier noch zwei Screens zu meinen Einstellungen:

http://www.bilderload.com/bild/124441/unbenannt1FYRC3.png

http://www.bilderload.com/bild/124442/unbenannt2Z500C.png

Danke für eure Bemühungen.

LG

black Hawk
 
Technisch sehe ich da keinen Fehler.
Aber packe mal den Text mit den fünf Teilen über den mit vier (per Links-/Rechts-Pfeiltaste, wenn ich mich nicht irre).
Wenn es dann geht, führt vermutlich die Tatsache, dass der Text mit vier oder weniger Teilen mit dem Goodbye-Flag versehen ist und als erster in der Tabelle kommt, zu dem Problem.

Ich habe gelernt:
Der Text, der als letztes kommen soll, kommt in der Liste ganz nach oben.
Dann überprüft Oblivion, ob es diesen anzeigen soll. Passt es von den Bedingungen her nicht, wird der nächste Text in der Liste geprüft, bis Oblivion die Liste durch ist.
So sollte sich dein Problem eigentlich beheben lassen.
 
Es funktioniert leider nicht.

Muss ich vielleicht ein Script schreiben damit das funktioniert oder die Wurzeln als Questobjekt setzen? Das habe ich nämlich nicht gemacht.
 
Du kannst beide Varianten nutzen, nötig sein dürfte es eigentlich nicht.
Bleibt Stage 10 der Quest trank tatsächlich so? Oder setzt Du eventuell einen höheren Wert, wenn Du genug Teile hast? Das wäre dann nämlich der einzige logische Fehler.
 
also ich habe es so gemacht, dass wenn man den Auftraggeber das erste Mal anspricht ein normales Gespräch beginnt. Am Ende habe ich den Befehl "setstage trank 10" gegeben. Bis dahin geht auch alles. Anschliessend folgen je nachdem eines dieser Greetings, besser gesagt es sollten.
 
Dann erstelle am besten ein Skript, welches die Queststage af 15 setzt, sobald Du genug Items im Inventar hast und frage beim zweiten Dialog dann eben Queststage 15 ab.
 
Hey, ich habe herausgefunden woran es lag! Ich musste nur bei den Conditions "Run on target" bei den GetItemCount anschalten und schon funktioniert es.

Das hat mich jetzt ein paar Nerven gekostet, aber endlich funktioniert es so wie es soll.