Oblivion:Activate

Aus Skript-Wiki
Wechseln zu: Navigation, Suche

Syntax [CallingRef.]Activate [ActivatorID] [NormalActivationFlag]


Beispiele <tesscript>Activate player

Activate

Activate player, 1</tesscript>


Wenn das NormalActivationFlag auf Null gesetzt ist (default), lässt diese Funktion das Objekt nur die Default-Aktivierung unter Umgehung eines OnActivate-Blockes ausführen.

ActivatorID ist der Aktivierende.


Die Default-Aktivierungen für den Player sind:

Objekt-Typ Aktivierung (bewirkt)
NPC Dialog
Behälter Öffnen
Tür Öffnen
Waffe, Rüstungen,etc Aufnehmen
Buch, Schriftrolle Lesen


Items, die von einem Enabled NPC aktiviert werden, werden von diesem aufgesammelt (sogar wenn dieser ohnmächtig sein sollte). Container jedoch sammeln keine Items auf.


Wenn NormalActivationFlag nicht gesetzt ist, wird die aufrufende Referenz seine normale Aktivierung durchführen, ohne dass irgendwelche OnActivate-Blöcke in einem zugeordneten Scripts durchlaufen werden. Es kommt vielleicht vor, das du den Activate-Befehl innerhalb eines OnActivate-Blocks aufrufen willst, nachdem einige Bedingungen erfüllt sind oder irgendwelche Aktionen durchgeführt wurden.

Wenn NormalActivationFlag 1 ist, wird die aufrufende Referenz nicht irgendwelche OnActivate-Blöcke in Scripts umgehen. Benutze das mit Vorsicht - Wenn du Activate auf dem Objekt selber innerhalb eines OnActivate Blocks aufrufst, schaltest du eine Endlos-Schleife ein.

Wenn du es aber mit Bedacht anwendest, kann es ein sehr starkes Werkzeug sein, indem man mit Activate als Pseudo-Funktion zwischen der Verwendung gescripteter Objekte oder Zauber hin und her schaltet. Die Referenz, die passiert wurde, kann als Argument benutzt werden um dem Aktivierten Objekt zu sagen, wie es sich zu verhalten hat. Diese Verwendung von Activate ist nicht beabsichtigt und benötigt eine sehr genaue Planung und Ausführung.

Wenn die Activator ID nicht angegeben wird, wird der Activate-Befehl den "aktuellen Activator" der aufrufenden Referenz benutzen. Das ist sehr hilfreich innerhalb von "OnActivate"-Blöcken, wenn du willst, dass das Objekt nach bestimmten Kriterien ganz normal ausgeführt wird.

Das bedeutet das... <tesscript>Activate</tesscript> ...das selbe bewirkt wie: <tesscript>ref actingref set actingref to GetActionRef Activate actingref</tesscript>

Wenn die ActivatorID mit angegeben ist, wird die Referenz ihre Standard-Aktivierung durchführen, nachdem sie von der ActivatorID aktiviert wurde.


Beispiel 1:

Wenn du das Script auf eine Tür anwendest, wird die Tür so verhalten, als würde sie der Spieler normal aktivieren (das heißt, wenn es eine "Lade"-Tür ist, wird der Spieler zum Tür-Zielpunkt (z.B. ein Innenraum) teleportiert:

<tesscript>Activate player </tesscript>


Beispiel 2:

Was immer auch den OnActivate-Block gestartet hat, wird auch als Aktivierender für die Default-Aktivierung angenommen.

<tesscript>begin OnActivate

if MyCrazyCondition == 1

 Activate

else

 ; Mache irgendwas anderes

endif end </tesscript>


Beispiel 3:

Dieses Script wird eine Endlosschleife starten. Sobald der OnActivate-Block des gescripteten Objekts aktiviert wurde, wird er für immer fortgesetzt.

<tesscript>float infinity

begin OnActivate

 ; Du solltest dieses NIEMALS tun!!
 set infinity to infinity + .1 
 message "Unendlich = %.1f", infinity 
 activate player 1 

end</tesscript>


Beispiel 4:

Das ist der richtige Weg, um das NormalActivationFlag zu nutzen:

<tesscript>begin OnActivate

 ; Schalte eine andere Referenz, wenn ich vom Spieler aktiviert wurde 
 if IsActionRef player == 1 
    MyGate.Activate player 1 
 endif 

end </tesscript>


Siehe auch