Einige ungereimtheiten im Script
Da viele an der Verbesserung von Alba Interesse haben, hier mal ein Paar Ungereimtheiten. Geboren aus meinem Unverständnis für Scripte.
Wie kann das funktionieren? Dahinter Anmerkungen von mir.
PHP:
Begin OnActivate Player
if ( IsActionRef Player == 1 ) ; Wenn der Player sie anspricht
if TMSklavinRef.IsSneaking == 0 ; Wenn Alba nicht schleicht
SetIgnoreFriendlyHits 1 ; Ignoriere wenn du was auf die Klappe bekommst
if (TMSklavinIntroRef.GetUnconscious == 1 ) ; Wenn die Besitzurkunde bewusstlos wird :-D
Message "Alba kann momentan nicht angesprochen werden."
Return
endif
if ( SklavinErstmalsAngesprochen == 0 )
TMSklavinIntroRef.Activate Player 1
Besitzurkunde im CS = TMSklavinIntro und dann logisch ein "Ref" dahinter. :-D
Wie geht datdenn? Hat schon einmal wer ein Stück Papier umgehauen? Komischerweise funktioniert es. Das kann aber nicht an diesem Befehl liegen. :-D
Hab noch was:
Der gesamte Bereich "Oblivion" des Scriptes. Hat sich im Laufe der Jahre noch nie jemand gewundert, warum die Questvariable Oblivion nie erscheint? Ich meine, DAS GEHT NICHT! Ich lasse mich gerne eines besseren belehren. Schauen wir uns die Passage einmal an.
Wir betreten mit Alba Oblivion "AlbaInOblivion wird von 0 auf 1 gesetzt.
PHP:
if AlbaInOblivion == 0
if (TMSklavinRef.GetInWorldspace OblivionMQKvatch == 1)
set AlbaInOblivion to 1
elseif (TMSklavinRef.GetInWorldspace OblivionRD001 == 1)
set AlbaInOblivion to 1
elseif (TMSklavinRef.GetInWorldspace OblivionRD002 == 1)
set AlbaInOblivion to 1
elseif (TMSklavinRef.GetInWorldspace OblivionRD003 == 1)
set AlbaInOblivion to 1
elseif (TMSklavinRef.GetInWorldspace OblivionRD004 == 1)
set AlbaInOblivion to 1
elseif (TMSklavinRef.GetInWorldspace OblivionRD005 == 1)
set AlbaInOblivion to 1
elseif (TMSklavinRef.GetInWorldspace OblivionRD006 == 1)
set AlbaInOblivion to 1
elseif (TMSklavinRef.GetInWorldspace OblivionRD007 == 1)
set AlbaInOblivion to 1
endif
Hier kommt nun die zweite Passage. Soll bedeuten wenn wir aus Oblivion zurück sind. Vorgabe "AlbaInOblivion == 1"
PHP:
elseif AlbaInOblivion == 1
if (TMSklavinRef.GetInWorldspace OblivionMQKvatch == 1)
set AlbaInOblivion to 1
elseif (TMSklavinRef.GetInWorldspace OblivionRD001 == 1)
set AlbaInOblivion to 1
elseif (TMSklavinRef.GetInWorldspace OblivionRD002 == 1)
set AlbaInOblivion to 1
elseif (TMSklavinRef.GetInWorldspace OblivionRD003 == 1)
set AlbaInOblivion to 1
elseif (TMSklavinRef.GetInWorldspace OblivionRD004 == 1)
set AlbaInOblivion to 1
elseif (TMSklavinRef.GetInWorldspace OblivionRD005 == 1)
set AlbaInOblivion to 1
elseif (TMSklavinRef.GetInWorldspace OblivionRD006 == 1)
set AlbaInOblivion to 1
elseif (TMSklavinRef.GetInWorldspace OblivionRD007 == 1)
set AlbaInOblivion to 1
else
set AlbaInOblivion to 2
endif
Wir waren vorher in Oblivion und haben uns dafür die 1 für "AlbaInOblivion" geholt. In dieser Passage wird nun gesagt, wenn AlbaInOblivion == 1, dann setze es auf 1, andernfalls auf 2, also nicht mehr in Oblivion. Soweit, so gut.
Sehen wir uns die dritte Passage an. Wir sind mit Alba wieder aus Oblivion zurück. Also "AlbaInOblivion == 2"
PHP:
elseif AlbaInOblivion == 2
if AlbaInOblivion == 0
set AlbaInOblivion to 1
SetStage DINOAlba 20
set TMSklavinRef.AlbaLiebesRating to TMSklavinRef.AlbaLiebesRating + 3
endif
set AlbaInOblivion to 3
endif
if AlbaInOblivion == 2 ; Wir sind back, juchuu
if AlbaInOblivion == 0 ; Wir waren noch gar nicht da. :huh::huh:
set AlbaInOblivion to 1 ; Nu waren wir doch da??
setstage und Liebesrating
set AlbaInOblivion to 3 ; Kiste dicht machen. D.h nur 1x
Meiner bescheidenen Meinung nach muß die zweite Zeile weg.
PHP:
elseif AlbaInOblivion == 2
set AlbaInOblivion to 3
SetStage DINOAlba 20
set TMSklavinRef.AlbaLiebesRating to TMSklavinRef.AlbaLiebesRating + 3
endif
Dann sollte oh Wunder, die Stage 20 auch kommen.
Sehe ich da was falsch?