Irgendwie komme ich nicht weiter: Der derzeitige Questlevel ist 10, und der Spieler kommt an eine verschlossene Tür (Schlüssel hat er dabei, da Questitem). Ich möchte jetzt, dass zuerst die Tür aufgeschlossen wird, dann der Spieler in die neue Cell transportiert wird und dann der Questlevel auf 20 umspringt, was eine MessageBox auslößt.
Folgendes Script liegt derzeit auf der Tür:
Das Problem ist nun, dass die MessageBox sofort erscheint, nicht erst nach durschreiten der Tür. Hinzu kommt, dass die Tür nicht mehr auf den Schlüssel reagiert, sie bleibt einfach zu (das es der richtige Schlüssel ist hab ich geprüft).
Ich vermute ja, dass ich das Skript nicht auf die Tür legen darf, aber wie könnte ich das sonst machen? Gibt es eine Möglichkeit, ein Script auszulösen wenn eine bestimmte Zelle betreten wird?
Folgendes Script liegt derzeit auf der Tür:
Code Select all
scn Haustuerscript
short stagecheck
Begin OnActivate
Set stagecheck to GetStage 'Questname'
If stagecheck == 10
SetStage 'Questname' 20
endif
EndIch vermute ja, dass ich das Skript nicht auf die Tür legen darf, aber wie könnte ich das sonst machen? Gibt es eine Möglichkeit, ein Script auszulösen wenn eine bestimmte Zelle betreten wird?
kP, aber du könntest das Problem sicherlich mit einer TrigBox hinter der Tür lösen.
Dazu müsstest du einfach das Script von der Türe wegnehmen und an die Box anfügen.
Ausserdem müsstest du anstatt "Begin OnActivate" mit "Begin OnTriggerActor Player" beginnen.
Das Script wird dann halt immer ausgeführt, wenn man in der Box steht, aber da "Stagecheck"
ja nur einmal 10 ist, sollte das kein Problem sein.
Hoffe konnte irgendwie weiterhelfen.
Greez
Dazu müsstest du einfach das Script von der Türe wegnehmen und an die Box anfügen.
Ausserdem müsstest du anstatt "Begin OnActivate" mit "Begin OnTriggerActor Player" beginnen.
Das Script wird dann halt immer ausgeführt, wenn man in der Box steht, aber da "Stagecheck"
ja nur einmal 10 ist, sollte das kein Problem sein.
Hoffe konnte irgendwie weiterhelfen.
Greez
Danke. Wenn du mir noch sagen könntest wie ich eine Triggerbox erstelle sollte das hoffentlich mein Problem lösen.
Unter Activator:
TrigZonePlayerRESET03 - Zylinder Triggerzone
TrigZonePLAYERRESET01 - Dickes Rechteck Triggerzone
TriggerZoneACTOR01 - Dünnes Rechteck Triggerzone
Für deine Mod eine Triggerbox mit eigenem Namen und Script anlegen.
TrigZonePlayerRESET03 - Zylinder Triggerzone
TrigZonePLAYERRESET01 - Dickes Rechteck Triggerzone
TriggerZoneACTOR01 - Dünnes Rechteck Triggerzone
Für deine Mod eine Triggerbox mit eigenem Namen und Script anlegen.
So wäre es ideal:
Code Select all
scn HaustuerTrigBoxScript
short state
Begin OnTrigger Player
if ( GetStage 'QuestID' == 10 ) && ( state == 0 )
SetStage 'QuestID' 20
Set state to 1
endif
EndEine weitere Alternative wäre es zu überprüfen, ob sich der Spieler in der fragwürdigen Zelle aufhält.
Code Select all
scn QuestnameSkript
begin Gamemode
if ( GetStage 'QuestID' == 10)
if ( player.GetInCell 'CellID' (nur bei Interior) == 1 )
SetStage 'QuestID' 20
endif
endif
endDanke, jetzt klappts so wie ich will.
Was soll das "state" bewirken? Wenn die Box einmal getriggert wurde ist doch die Queststage ungleich 10.
@jimmartens: Die Version hatte ich mir auch überlegt, aber geht das nicht auf die Perfomance, wenn das Script ständig läuft? (So verstehe ich mal das GameMode)
Code Select all
scn HaustuerTrigBoxScript
short state
Begin OnTrigger Player
if ( GetStage 'QuestID' == 10 ) && ( state == 0 )
SetStage 'QuestID' 20
Set state to 1
endif
End@jimmartens: Die Version hatte ich mir auch überlegt, aber geht das nicht auf die Perfomance, wenn das Script ständig läuft? (So verstehe ich mal das GameMode)
Naja, da das dann im QuestSkript wäre, würde es keinen Unterschied machen. Denn der QuestSkript läuft sowieso alle 5 Sekunden. Wenn du natürlich keinen Quest hast, dann ist ein Gamemode natürlich unnötige Speicherbelastung.





