Im Einstieg gehst du am besten sicher, dass die Referenz (falls du eine Referenzvariable verwendest) auch sicher gesetzt ist.
Code: Alles auswählenIf Referenz != 0 ;==> Wenn die Referenz 0 wäre und sie wird bei einer Funktion angewendet, die eine Referenz erwartet, stoppt das Skript.
If Referenz.IsCreature && Referenz.GetCreatureType == 0 ;==> Kreatur
ElseIf Referenz.IsCreature && Referenz.GetCreatureType == 1 ;==> Daedra
ElseIf Referenz.IsCreature && Referenz.GetCreatureType == 2 ;==> Untot
ElseIf Referenz.IsCreature && Referenz.GetCreatureType == 3 ;==> Humanoid
ElseIf Referenz.IsCreature && Referenz.GetCreatureType == 4 ;==> Pferd
ElseIf Referenz.IsCreature && Referenz.GetCreatureType == 5 ;==> Riese
EndIf
EndIf
Für beide Befehle ("
IsCreature" und "
GetCreatureType"), benötigst du OBSE.
"IsCreature" kannst du theoretisch weglassen. Ist nur als Sicherheit gedacht, damit die Oblivion-Engine nicht auf dumme Gedanken kommt.
Wenn deine Referenzvariable auch andere Referenzen (NPCs) speichern könnte, bin ich mir nicht sicher wie GetCreatureType reagiert.
So gehst du jedenfalls sicher, dass wirklich nur eine Kreatur in Betracht gezogen wird.
Bei Heldenverehrung und Tote erwecken musste ich anders rum auch auf Nummer sicher gehen:
Das sorgt dafür, dass auch WIRKLICH NUR NPCs von der folgenden Abfrage betroffen werden.
Selbstverständlich kann man einen Beistelltisch nicht von den Toten erwecken, allerdings hätte das zusätzliche Skript zur Verstärkung zu einem Absturz geführt, ohne diese Abfrage.
Beistelltische haben keine Aktorwerte, weil sie zu den Containern (oder Statics) gehören.
Ohne die Abfrage hätte des Skript etwas versucht, das unmöglich ist und mit Sicherheit einen Absturz ausgelöst.