Oblivion:Steinfalle scharf machen
Inhaltsverzeichnis
Anwendung
Aufgabenstellung
Es soll eine Steinfalle scharf gemacht werden. Nach einmaligem Anklicken sollen ein oder mehrere lockere Steine herausrollen. Wird die Falle ein zweites Mal aktiviert, schnappt sie zu.
Theorie
Eine Steinfalle wird mit einem PlayGroup-Befehl ausgelöst, dies Event wird aber in einem OnActivate-Block verwaltet. Das Arbeiten mit Parents, was der übliche Weg ist, um Aktivierungen weiter zu leiten, funktioniert mit Steinfallen nicht, weil die Steinfallen schon „eingebaute“ Parents haben, die dafür sorgen, dass die einzelnen Steine der Steinfalle kontinuierlich herunter prasseln.
Realisierung
Umgebung
Es werden zwei Steinfallen benötigt, eine ist die eigentliche Falle, die zweite (mit der Persistent Referenz TrapRefOne) dient nur der Show. Die zweite Falle ist als disable markiert. Eine mögliche Konfiguration der beiden Fallen in der Welt könnte z.B. folgendermaßen aussehen (man muss da ein wenig probieren):
Bild
Beim erstmaligen Anklicken der ersten Falle wird das Click-Event im OnActivate-Block der ersten Falle abgefangen, die zweite auf enable gesetzt und ausgelöst. Durch die Konfiguration wird ein Stein (oder mehrere) sichtbar! heraus rollen. Der Rest der Steinfalle zerfällt jenseits der Nutzersicht. Beim zweiten Anklicken wird das Event nicht weiter geleitet sondern auf sich selbst angewandt.
Script
<tesscript>Scn TriggerOneStone
- On activation rocks will come tumbling down and do some damage
- Damage stops after 6 seconds
- originated
- Bethesda
- will activate another stone trap first
- modified
- keris, 26.01.08
short triggered float timer short next ref mySelf ref myParent float fTrapDamage float fLevelledDamage float fTrapPushBack float fTrapMinVelocity short bTrapContinuous
- ------begin modify-------
short SecondActivation Ref SecondStones
- ------end modify --------
Begin OnActivate
- ------begin modify-------
if SecondActivation== 0 Set SecondActivation to 1 Set SecondStones to TrapRefOne SecondStones.Enable Return Endif
- ------end modify --------
if triggered == 0 Set fTrapDamage to 5 Set fTrapPushBack to 300 Set fLevelledDamage to 1 Set fTrapMinVelocity to 150 Set bTrapContinuous to 0 PlayGroup unequip 1 EnableLinkedPathPoints Set triggered to 1 Set timer to 6 SetDestroyed 1 TriggerHitShader 4 endif
End
Begin GameMode
- ------begin modify-------
if SecondActivation == 2 Set SecondActivation to 3 SecondStones.PlayGroup unequip 1 elseif SecondActivation == 1 Set SecondActivation to 2 Endif
- ------end modify -------
;after 1 sec delay, activate parent (for daisy-chaining) if triggered == 1 && next == 0 && timer < 5 Set next to 1 Set myParent to GetParentRef Set mySelf to GetSelf myParent.Activate mySelf 1
endif
if triggered == 1 && timer <= 0
Set fTrapDamage to 0 Set fTrapPushBack to 0 Set triggered to 2 endif
if timer > 0 Set timer to timer - GetSecondsPassed endif
End
Begin OnReset
Reset3DState Set triggered to 0 SetDestroyed 0 EnableLinkedPathPoints
End </tesscript>
Handhabung
Das Script, ein angepasstes Script für die Standard-Steinfalle, liegt auf der ersten Steinfalle.
Weitere Information
Weitere Scripts aus dieser Kategorie
Level 1
{{#if: Aktivieren und Aktivatoren | }}
{{#if: Level 3 Scripts | }}