Oblivion:Activate: Unterschied zwischen den Versionen

Aus Skript-Wiki
Wechseln zu: Navigation, Suche
K (Die Seite wurde neu angelegt: [http://www.ei-der-zeit.com/LexikonCSIV/tesiv-cs/befehle/Activate.html Activate] Activate)
 
K
Zeile 1: Zeile 1:
[http://www.ei-der-zeit.com/LexikonCSIV/tesiv-cs/befehle/Activate.html Activate]
+
'''Syntax'''
 +
<code>Activate ActivatorID (optional), NormalActivationFlag (optional)</code>
 +
 
 +
 
 +
 
 +
'''Beispiele'''
 +
<tesscript>Activate player
 +
 
 +
Activate
 +
 
 +
Activate player, 1</tesscript>
 +
Diese Funktion sagt dem Objekt das es seine Standard-Aktivierung durchführen soll.
 +
 
 +
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, das das Objekt nach bestimmten Kriterien ganz normal ausgeführt wird.
 +
 
 +
Das bedeutet das...
 +
<tesscript>Activate</tesscript>
 +
...das selbe bewirkt wie:
 +
<tesscript>Activate player
 +
Activate
 +
Activate player, 1</tesscript>
 +
 
 +
Wenn die ActivatorID mit angegeben ist, wird die Referenz ihre Standard-Aktivierung durchführen, nachdem sie von der ActivatorID aktiviert wurde.
 +
 
 +
 
 +
 +
<div class=edztable>
 +
{|
 +
|-
 +
!Objekt-Typ||Aktivierung (bewirkt)
 +
|-
 +
|NPC||Dialog
 +
|-
 +
|Behälter||Öffnen
 +
|-
 +
|Tür||Öffnen
 +
|-
 +
|
 +
Waffe, Rüstungen,etc||aufnehmen
 +
|-
 +
|Buch, Schriftrolle||lesen
 +
 
 +
|}
 +
</div>
 +
 
 +
Wenn NormalActivationFlag nicht gesetzt wird, wird die aufrufende Referenz seine normale Aktivierung durchführen, ohne irgendwelche OnActivate-Scripts durchzuführen, die vielleicht auf ihn gesetzt wurden. 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 Scripts umgehen. Dieses Flag ist dann im Grunde genommen eine Umgehung der in der Tabelle oben angegebenen "normalen" Aktivierungen. 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.
 +
 
 +
 
 +
'''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 heisst, 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 Aktivieren, so als wäre das Script nicht da
 +
 +
<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>
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 
[[Kategorie:Funktionen|Activate]]
 
[[Kategorie:Funktionen|Activate]]

Version vom 28. August 2008, 02:40 Uhr

Syntax Activate ActivatorID (optional), NormalActivationFlag (optional)


Beispiele <tesscript>Activate player

Activate

Activate player, 1</tesscript>

Diese Funktion sagt dem Objekt das es seine Standard-Aktivierung durchführen soll.

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, das das Objekt nach bestimmten Kriterien ganz normal ausgeführt wird.

Das bedeutet das... <tesscript>Activate</tesscript>

...das selbe bewirkt wie: 

<tesscript>Activate player Activate Activate player, 1</tesscript>

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


Objekt-Typ Aktivierung (bewirkt)
NPC Dialog
Behälter Öffnen
Tür Öffnen

Waffe, Rüstungen,etc||aufnehmen

Buch, Schriftrolle lesen

Wenn NormalActivationFlag nicht gesetzt wird, wird die aufrufende Referenz seine normale Aktivierung durchführen, ohne irgendwelche OnActivate-Scripts durchzuführen, die vielleicht auf ihn gesetzt wurden. 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 Scripts umgehen. Dieses Flag ist dann im Grunde genommen eine Umgehung der in der Tabelle oben angegebenen "normalen" Aktivierungen. 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.


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 heisst, 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 Aktivieren, so als wäre das Script nicht da

<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>