TESCS2 : OnActivate

De Wiwiki
Aller à la navigation Aller à la recherche


Syntaxe

 begin OnActivate 
     .../...
 End

Fonctionnement

Ce bloc s'exécute une fois, lorsqu'une Reference dont l'objet de base porte un script est activée.

Pour comprendre ce que sont un objet ou une référence dans le TESCS2, voir l'article :

L'activation par défaut se produit lorsque :

  • Le joueur utilise la barre d'espace pour activer un NPC, un objet de son inventaire ou un objet du monde activable, et qu'il n'existe pas de bloc OnActivate pour cet objet.
  • Un script lance la fonction Activate sur un NPC ou un objet du monde activable, sans l'option "1" de la fonction.
  • Un Package FIND tournant sur un NPC se termine sur sa cible, s'il s'agit d'un autre NPC ou d'un objet activable.


Le bloc OnActivate s'exécute donc sur une référence d'objet maRef (y compris NPC) lorsque :

  • Le bloc existe dans le script de l'objet de base et que :
    • Soit le joueur active la barre d'espace sur cette référence
    • Soit un script quelconque exécute la fonction selon la syntaxe : Activate maRef, 1

Pour plus d'informations sur la fonction de script Activate, voir l'article :


Les objets du monde activables et leur activation par défaut sont :

Type Object Activation
PNJ (NPC) Dialogue
Container Ouvrir
Porte (Door) Ouvrir
Arme, armure, vêtement (Weapon, armor, clothes) Equiper
Livre ou manuscrit (Book/Scroll) Lire


Notes

  • La présence d'un blocs OnActivate empêche le lancement immédiat de l'activation par défaut. Pour faire quelque chose de particulier qui dépend de ce qui a activé l'objet, il faut utiliser la fonction IsActionRef à l'intérieur du bloc IsActionRef.
  • L'utilisation de la fonction Activate permet selon l'option choisie de :
    • Exécuter l'activation par défaut (sans flag).
    • Appeler le bloc OnActivate (fonction d'appel de script) avec le flag à 1. Ne pas l'utiliser sur la référence elle-même de l'intérieuir du bloc OnActivate car cela entraine un blocage du jeu.
  • Ce bloc s'exécute lorsque la référence a été activée dans la dernière frame. Lorsque l'objet est activé plusieurs fois dans la même frame (par exemple dans un script utilisant Activate) le jeu ignore toutes les activations sauf la dernière. Il en résulte que le résultat de IsActionRef est toujours le dernier qui a activé l'objet.
  • Le type d'objet Activator n'a pas d'activation par défaut.
  • Les portes verrouillées, les containers et les livres sont activés une seconde fois automatiquement quand vous ouvrez la serrure ou prenez le livre. Pour déterminer si une porte est déverrouillée, par exemple, il est possible de tester GetLocked == 0 dans le bloc OnActivate.

Voir également