Papyrus Check, ob beim Spielercharacter die KillCam/KillMove aktiv ist

PRieST

Bürger
Mal eine Frage an euch, die ihr euch mehr mit Papyrus Scripten auskennt:

Ich möchte in einem Script einen Check einfügen, ob sich der Spielecharakter im Start/mitten in einer "Killcam"-Animation befinden und damit einhergehen "gescripted" in der 3rd-Person-Ansicht, damit ich dann eine bestimmte Funktion auslösen kann.

Ich weiß es gibt die Funktion IsInKillMove(), aber wie genau kann ich die auf den Spielecharacter anwenden - Also quasi so:

If Player.IsInKillMove()
Do Something
Else
Do Something Else
EndIf

Ich kenn mich nicht bis gar nicht gut mit Papyrus aus und bin immer noch dabei zu lernen/es zu verstehen, daher weiß ich auch nicht, was ich als Voraussetzungen für das Beispiel brauche.

Muss mein Script zum Beispiel ein anderes erweitern? Was brauch ich noch alles als Voraussetzung?
 
Ich glaube, dass du für die Ermittlung des Zustandes keinen Code brauchst. Du kannst direkt ein Script mit einer Funktion an einen MagicEffect binden, der die Funktion auslöst.
IsInKillMode ist ziemlich sicher als eine Condition auswählbar und ich würde die im MagicEffect, statt im Spell verwenden. Im Prinzip kann man so eine permanente Überwachung abbilden, Start und Ende triggern jeweils, wenn die Condition wahr oder falsch wird.

Für so eine Überwachung brauchst du wahrscheinlich:
Eine Quest, die Start Game enabled ist und dem Spieler den permanenten Effekt per Script zuweist.
Ein MagigEffect und Spell, der eine Ability sein sollte.
Je ein Script für Quest und MagicEffect.

Code:
Scriptname MyScriptXXX extends ActiveMagicEffect
Actor selfRef

EventOnEffectStart(Actor Target, Actor Caster)
    selfRef = caster
    if( selfRef != Game.GetPlayer() )
        Return
    EndIf
    ; Do something

EndEvent
 
Event OnEffectFinish(Actor akTarget, Actor akCaster)
    ; Do something

EndEvent
 
Event onDying(actor myKiller)
    int myHealth= selfRef.GetAV("Health") as int
    ; Do something

EndEvent
 
Zuletzt bearbeitet:
  • Like
Reaktionen: PRieST
Ah ok, an die Condition als solches hab ich gar nicht gedacht, werde mal schauen, ob es damit möglich ist. Vielen Dank schon einmal.
 
Ah ok, an die Condition als solches hab ich gar nicht gedacht, werde mal schauen, ob es damit möglich ist. Vielen Dank schon einmal.

Hier noch ein Quest-Script, das den Spieler den Spell gibt und sich dann beendet. Sollte so funktionieren, sonst nur melden.
Debug.Trace() ist dein Freund. Wenn es geklappt hat, findet sich so eine Meldung im Log.

Code:
Scriptname MyMonitorQuestScript extends Quest

Spell Property MyMonitorSpell Auto

bool initOnce

Event OnInit ()
    If initOnce == false
        initOnce = true
        Utility.Wait(10)
        Game.GetPlayer().AddSpell(MyMonitorSpell, false)
        Debug.Trace("Spell hinzugefügt.")
        Stop()
    EndIf
EndEvent