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

Dieses Thema im Forum "[Skyrim] Modprobleme (SSE)" wurde erstellt von PRieST, 15. Dezember 2022.

  1. PRieST

    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?
     
  2. Werbung (Nur für Gäste)
  3. PixelMurder

    PixelMurder Angehöriger

    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: 16. Dezember 2022
    PRieST gefällt das.
  4. PRieST

    PRieST Bürger

    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.
     
  5. PixelMurder

    PixelMurder Angehöriger

    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
     
  6. Werbung (Nur für Gäste)
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden