nein-nein-nein, so geht das nicht...
pass auf, es gibt drei Arten von Scripts.
Die einen, die "lokalen" hängen an irgendwelchen Dingen oder NPCs. So wie Deins wohl werden soll.
Es gibt noch zwei weitere Sorten, "globale" und "lokal gestartete globale". Die soll'n uns aber jetzt nicht weiter interessieren.
Dein "lokales" Script wird dadurch "in Schwung gebracht" das das Objekt an dem es hängt - hier also ein Umhang oder ein Helm- zusammen mit dem Player- also dem Spieler-NPC- in einer Zelle ist oder wenn es sich im Inventar eines in der gleichen Zelle befindlichen Objektes - sei es Container, Kreatur oder NPC- befindet.
Solange der Scriptträger also da ist wird in jedem Frame (Bildaufbau) das Script daran einmal aufgerufen und von oben nach unten durchgearbeitet. Also etwa 20 - 50 mal die Sekunde, je nach Rechnerleistung und -belastung.
Das bedeuted also das da nicht irgendwelche unverständlichen Befehle stehen dürfen, sondern Du musst genau wissen was Du da hin schreibst.
Laut Editor-Hilfe gibts da folgendes Format
begin Name_des_Scriptes
; Semikolon davor heisst für den Rechner
; den Text in der gleichen Zeile dahinter zu ignorieren
; Name_des_Scriptes muss natürlich durch einen sinnvollen Namen
; ersetzt werden
; zunächst also Variablen-Deklarationen
;short sVariable ;Werte von -32767 bis 32767
;float fVariable ; für "Kommazahlen"
;long lVariable ; für ganz laaange Zahlen, bis zu -zig Fantastilliarden
; in solchen Variablen kann sich das Script Werte "merken"
; oder Ereignisse daran ablesen
; nur für die Beispiele und damit es nicht abstürzt:
short Bedingung1a
short Bedingung1b
short Bedingung2
short BedingungW
; dann noch Systemvariablen, die kannst Du nicht nehmen wie Du willst
; und manche haben "Eigenarten"
short OnPCAdd
;wird auf 1 gesetzt wenn der Spieler den Scriptträger in sein Inventar bekommt
short OnPCEquip
; wird auf 1 gesetzt wenn der Spieler den Scriptträger "anzieht", bzw. sich den daran hängenden Zauber zurechtlegt (z.B. Schriftrolle)
short OnPCDrop
;wird auf 1 gesetzt wenn der Spieler das Objekt in der Welt ablegt
; nur die hier oberhalb beschriebenen System-Variablen werden nicht
; automatisch oder zuverlässig automatisch zurückgesetzt, daran solltest
; Du denken
; auch noch nützlich:
;short companion (mind. Tribunal): auf 0 macht der Scriptträger sein
;Inventar nicht auf, bei 1 könnte der Spieler den "Teilen"-Dialog sehen
; short WaitOutSide
; wenn die auf 1 steht wird der Scriptträger dem Spieler nicht in
; Innenräume folgen
; short PCSkipEquip
; wenn die auf 1 steht wird das Anziehen oder das Zurechtlegen des
; Zaubers (Schriftrolle) verhindert. Muss aber in jedem Script-Durchlauf
; neu gesetzt werden
if ( Bedingung1a )
; wenn die Bedingung 1a zutrifft wird ausgeführt was hier steht
elseif (Bedingung1b)
; wenn Bedingung 1a nicht zutrifft und bedingung 1b zutrifft
; wird ausgeführt was hier steht
if (Bedingung2)
; eingeschachtelte Bedingung2, die aber nur abgearbeitet wird
; wenn Bedingung 1b zutrifft
endif ;2
; ein endif "schliesst das if, Bdingung2 ist hier also
;komplett abgearbeitet oder wurde übersprungen falls sie nicht zuraf
else ;1c
; wenn Bedingung1a und Bedingung1b noch nicht "gegriffen haben"
; und käme dieser Scriptabschnitt dran. Es kann 1 if und 127 Elseifs oder 126 Elseifs und 1 Else in einer if-Abfrage geben die am Ende
;aber wieder nur ein
endif ;1
;hat, das erleichtert Dir evtl. wie man das mit den If's macht
; die (Bedingung) zwischen den Klammern muss immer wahr,
; 1 bzw. True sein damit sie ausgeführt wird,
; d.h. Du kannst da auch was "negatives" hinschreiben oder
; vergleichen. Dazu kannst Du zwischen die zu vergeleichenden Werte
; entweder == ist gleich, <= ist kleiner oder gleich,
; >= ist grösser oder gleich,< ist kleiner, > ist grösser, != ist ungleich
; einsetzen.
; so setze ich jetzt mal eine oben deklarierte Variable auf den Wert 1
set BedingungW to 1
; ausserdem gibt es noch
while (BedingungW)
; was hier steht wird ausgeführt SOLANGE die Bedingung
; zutrifft. Der Interpreter wird diesen Text solange ausführen bis
set BedingungW to 0
; die BedingungW nicht mehr zutrifft
;also in diesem Fall nur einmal, aber es ginge auch endlos
; und würde Morrowind zum Einfrieren bringen
endwhile
;schliesst das while, auch die könnte man verschachteln aber das würde
;sich potenzieren und wäre nicht nur sehr langsam sondern auch
; schlechter programmierstil
end Name_des_Scriptes