Construction Set Skript, welches für alle NPCs gilt

Funktioniert nicht.
Ich denke, wenn man keine Reference angibt, dann gilt es immer für den, der es Audführt.

Kennt noch jemand eine Möglichkeit?
OBSE würde nichts ausmachen.
Wenn Du es als Quest-Skript laufen lässt, gilt es für alle, aber dann können Fehler passieren. Siehe mein Post weiter oben.
 
IsPlayableRace würde es zumindest auf die spielbaren Rassen beschränken.
 
Du könntest GetFirstRef-GetNextRef-Loops verwenden um alle NPCs, die sich in der gleichen Zelle mit dem Spieler befinden herauszufinden.
Die kannst du dann in einem Pluggy-Array speichern, damit du nicht 500 Scripte nur mit Variablen schreiben musst. Du solltest dabei nur aufpassen, dass du NPCs nicht 2-mal in einen Array schreibst und dass du vor dem Wiederbeleben schaust, ob es den NPC(das, was du in der Ref gespeichert hast) überhaupt noch gibt. Dazu gibt es seit neuestem den OBSE-Befehl IsFormValid.


PS:
Ich weiß jetzt nicht, wie dein Script aufgebaut ist, aber falls du die BaseForm der Referenz benötigst kannst du die mit dem OBSE-Befehl GetBaseObject herausfinden.


Edit @Vampir_Lord:

Den Befehl gibt es zwar, der dient aber dazu herauszufinden, ob eine Referenz (der Calling Actor) eine Referenz einer best. BaseForm (muss angegeben werden) ist. In dem Zusammenhang also nicht zu gebrauchen.
 
  • Like
Reaktionen: P-Froggy
Es will einfach nicht.
Da kommt dann irgendeine Fehlermeldung, dass es eine Reference braucht.
Im CSWiki steht aber, dass Quest-Skripte "non-refernce" sind.

Mein Skript sah so aus:

scn aaTestScript

begin gamemode
if [getDead == 1]
resurrect 1

end

Danach habe ich es nochmal so probiert:

scn aaTestScript

begin onDeath
resurrect 1

end

Bei beiden wollte das CS aber eine Reference.
 
das QuestScripte Non-Reference sind heißt, dass sie keiner best. Referenz zugewiesen sind. Das hat zur Folge, dass Befehle nicht ohne CallingActor funktionieren, wenn sie einen benötigen.


Bei ObjectScripten würde da das Object (genauer: die Referenz des Objects, von dem das Script läuft) als CallingActor verwendet werden, bei MagicEffect die getroffene Reference.


Wenn du meinen Ansatz verwendest müsstest du erst die Reference aus dem Array via GetInArray in eine Ref-Variable setzten, und dann diese Ref als Calling Actor einsetzen.

Code:
if [RefVariable].GetDead
 [RefVariable].Ressurect 1
endif

OnDeath kannst du gar nicht in einem QuestScript verwenden, das geht nur in Object-Scripts.
 
  • Like
Reaktionen: P-Froggy