@ Dark Egon: Nein, die Abfrage der Lebenspunkte per OnUpdate + OnHit ist nicht empfehlenswert. Du kannst OnUpdate nicht 24/7 bei einem 0.1 Interval laufen lassen, selbst nicht, wenn Du eine RegisterForSingleUpdate()-Chain verwendest. Das würde Papyrus ziemlich belasten und ein größerer Interval wäre bei dieser gewollten Funktion nicht sinnvoll. Außerdem wird das OnUpdate-Event, das die Lebenspunkte feststellt, dem OnHit eventuell zuvorkommen und die ganze Rechnung stören, da er jede Sekunde läuft. Und das Abstellen des OnUpdates während des OnHit-Events würde weitere Treffer außen vorlassen.
Das Einzige, was ich mir noch denken könnte, außer der kompletten Schadensreproduktion, wäre so etwas hier:
Code:
Float health
Actor Property playerRef auto
Event OnEffectStart(Actor Target, Actor Caster)
health = playerRef.getActorValue("Health")
EndEvent
Event OnHit(ObjectReference AttackerObj, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked)
Health -= playerRef.getActorValue("Health")
; anderes Zeug
health = playerRef.getActorValue("Health")
EndEvent
Würde aber nicht Heilung mit einbeziehen und wäre genauso fehlerhaft. Wie gesagt, Schadensreproduktion durch OnHit ist meiner Meinung nach das beste, aber eben am kompliziertesten.
Zu Deiner Frage: Ich hatte Dir schon in meinem Beitrag oben Dir etwas vorgeschlagen. Müsstest aber testen, ob das Event öfters gecallt wird, wenn der Zauber dauerhaft gecastet wird. Ob der Zauber trifft, könntest Du mit einem OnEffectStart testen. Eine Variable zu verkleinern sollte nicht das Problem sein.
@ Sammael666: Ich habe Dir oben eigentlich bereits alles beschrieben. Selene benutzt eine Methode, die in Oblivion noch funktionierte, aber in Skyrim so nicht mehr nutzbar ist, wenn Du Dein Skyrim nicht zerlegen willst. Du kannst kein Event so oft laufen lassen, wie es in Obl. mit GameMode + fQuestDelayTime ging. Wenn Du jedoch mit einer Verzögerung von 1-2 Sekunden beim Ziehen der Waffe zufrieden bist, geht das jedoch. Ob Du das willst ist die andere Frage. Dazu benutzt Du einfach ein OnUpdate-Event, das Du alle 1-2 Sekunden laufen lässt, und welches checkt, ob Du die Waffe ausgerüstet und gezogen hast, und dann eben die andere Waffe ausrüstet.