Post Reply
8 posts • Page 1 of 1
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:
scn Haustuerscript

short stagecheck

Begin OnActivate
	Set stagecheck to GetStage 'Questname'
	
	If stagecheck == 10
		SetStage 'Questname' 20
		
	endif
End
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?
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
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.
So wäre es ideal:
scn HaustuerTrigBoxScript

short state

Begin OnTrigger Player

if ( GetStage 'QuestID' == 10 ) && ( state == 0 )
SetStage 'QuestID' 20
Set state to 1
endif

End
Eine weitere Alternative wäre es zu überprüfen, ob sich der Spieler in der fragwürdigen Zelle aufhält.
scn QuestnameSkript

begin Gamemode
  if ( GetStage 'QuestID' == 10)
    if ( player.GetInCell 'CellID' (nur bei Interior) == 1 )
      SetStage 'QuestID' 20
    endif
  endif
end
Danke, jetzt klappts so wie ich will.
scn HaustuerTrigBoxScript

short state

Begin OnTrigger Player

if ( GetStage 'QuestID' == 10 ) && ( state == 0 )
SetStage 'QuestID' 20
Set state to 1
endif

End
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)
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.
Post Reply
8 posts • Page 1 of 1