Seite 1 von 1

Skripting

Verfasst: 06.05.2014 19:15
von moonblade
Hallöchen Leute

Ich suche einen Skriptbefehl mit dem man den Kreaturentyp einer Kreatur abfragen kann. Also ob sie Untod, Daedra oder creature ist. Gibt es da einen und wenn ja wie lautet die Syntax. Ich hab da bisher leider nix gefunden.

Besten Dank und Beste Grüße

moonblade

Re: Skripting

Verfasst: 07.05.2014 07:41
von Tealor Arantheal
Im Einstieg gehst du am besten sicher, dass die Referenz (falls du eine Referenzvariable verwendest) auch sicher gesetzt ist.
Code: Alles auswählen
If 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:
Code: Alles auswählen
If Referenz.IsActor && Referenz.IsCreature == 0
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.