TESCS2 : Exécution des scripts

De Wiwiki
Aller à la navigation Aller à la recherche


Pour bien comprendre quand et comment les scripts sont exécutés, il faut avant tout connaitre la notion de frame.

Les modalités d'exécution des scripts varient selon le type du script :


Les scripts de result

Ces scripts ne sont que des petites parties de code qui sont exécutées en résultat d'un dialogue ou d'un stage de quête.

Tout le code est exécuté une unique fois pendant la frame à laquelle il a été appelé (celle où débute le dialogue ou celle où la quête est mise à jour) : attention, donc, à ne pas trop surcharger la mémoire vive en utilisant un grand nombre de fonctions ou des fonctions lourdes, sans quoi les plus petites configurations subiront un retour sous Windows.


Les scripts d'objet

Les scripts d'objet sont des scripts locaux associés à un objet bien précis.

Ces scripts ne sont généralement actifs que si le joueur est suffisament proche de l'objet scripté (dans la même cellule pour ces cellules intérieures, et dans la même cellule ou dans une des cellules adjacentes pour des cellules extérieures).


Le code contenu dans ces scripts est exécuté à chaque frame pendant laquelle le script est actif. Celà signifie que ces scripts comptent parmi les plus gourmands en mémoire vive : attention, donc, à ne pas surcharger une cellule avec un grand nombre d'objets scriptés, sans quoi vous risquez d'avoir des baisses de performance dans ces zones - vous pouvez en revanche tout à fait utiliser un nombre raisonnable d'objets scriptés sans baisses significatives.


Par défaut, si vous ne spécifiez pas de référence, les fonctions utilisées par ces scripts s'exécuteront sur l'objet auquel est attaché le script.


Les scripts d'effet magique

Les scripts d'effet magique sont des scripts associés à un sort.

Ils ne sont effectivement exécutés que si le sort atteint une cible valide (si le sort atteint le sol, par exemple, le contenu du script ne sera pas exécuté).


Une fois que le sort affecte une cible valide, le contenu du script sera exécuté à chaque frame pendant laquelle le sort est actif sur la cible.


Par défaut, si vous ne spécifiez pas de référence, les fonctions utilisées par ces scripts s'exécuteront sur l'objet qu'affecte le sort.


Les scripts de quête

Les scripts de quête sont des scripts globaux qui tournent en permanence quand la quête à laquelle est sont associés est en cours.


Mais au contraire des deux précédents, ils ne sont par défaut pas exécutés à chaque frame : un tel système serait trop gourmand en mémoire vive quand 50 quêtes différentes sont en cours sur une partie. A la place, le contenu des scripts de quête n'est exécuté qu'une seule fois toutes les 5 secondes par défaut.

Il est possible de changer cette fréquence d'exécution en déclarant une variable "fQuestDelayTime" de type float dans le script de quête : la valeur de cette variable définit alors le nombre de secondes entre deux exécutions du script. Attention, si la valeur de la variable fQuestDelayTime est de 0, la variable ne sera pas utilisée (le script utilisera dans ce cas la valeur par défaut de 5 secondes entre deux exécutions). Pour exécuter le script à chaque frame, vous pouvez utiliser une valeur très petite :

               Set fQuestDelayTime to 0.01


Ces scripts ne sont pas attachés à un objet : si vous utilisez une fonction qui affecte l'état d'un objet, vous devez explicitement le spécifier en appelant de la fonction.