Oblivion:Steinfalle scharf machen

Aus Skript-Wiki
Wechseln zu: Navigation, Suche

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

Stonetrap.png

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 | }}