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:
"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:
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
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
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
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