Différences entre les versions de « TESCS2 : Objets References et Scripts »
(Syntèse de navigation entre les fenêtres) |
(Ajout sur les references persistantes.) |
||
Ligne 24 : | Ligne 24 : | ||
**player.StartCombat 00028BE3 | **player.StartCombat 00028BE3 | ||
* AntusOdiil01 est également présent dans la liste des ''Editor ID'' de la fenêtre CellView. | * AntusOdiil01 est également présent dans la liste des ''Editor ID'' de la fenêtre CellView. | ||
* Vous pouvez constater que AntusOdiil01 est une référence persistante. C'est le cas de tous les acteurs. Ce n'est pas le cas de tous les objets. Les containers, les objets DANS les containers ou inventaires de PNJ sont persistants, pas les objets posés sur le sol : ils sont déchargés après quelques temps d'inutilisation avec la cellule quand le PC n'est pas là. | * Vous pouvez constater que AntusOdiil01 est une référence persistante par défaut. | ||
== References persistantes == | |||
C'est le cas de tous les acteurs. Ce n'est pas le cas de tous les objets. | |||
Les containers, les objets DANS les containers ou inventaires de PNJ sont persistants par défaut, pas les objets ordinaires posés sur le sol : ils sont déchargés après quelques temps d'inutilisation avec la cellule quand le PC n'est pas là. | |||
Cependant, si une REFERENCE quelconque doit être utilisée dans un script ou un package, une cible de quête, une condition, etc. cochez la case "Persistent Reference", sans quoi vous ne la trouverez pas dans les listes déroulantes de sélection (fenêtre où choisit la cellule, puis la référence concernée). | |||
Profitez également d'être dans la fenêtre Reference pour lui donner un EditorID et l'identifier plus facilement dans les listes. | |||
C'est en particulier le cas pour les portes dans l'onglet "Teleport" si vous avez posé plusieurs "couples" de porte. Les portes de téléportation sont des references persistantes... car elles sont liées par un petit programme deux à deux. | |||
==Pour vos scripts== | ==Pour vos scripts== | ||
* Deux fonctions de script utiles : | * Deux fonctions de script utiles : |
Version actuelle datée du 11 octobre 2010 à 10:52
Types d'objets, Objets de base et References
Voyez l'image ci-dessous pour comprendre ce que sont ces concepts, et aidez vous des explications qui suivent. Voir également l'image annotée en fin d'article.
Type d'objet et objet de base
C'est dans l'object window.
- Le sous-type d'objet sélectionné est NPC/Imperial/Male dans la catégorie (hard) Actors
- La liste des objets de base affichés dans la colonne Editor ID est celle du sous-type d'objets NPC/Imperial/Male
- L'objet de base sélectionné est AntusOdiil. AntusOdiil n'est pas une reference. Le compteur dans la colonne count indique qu'il existe UNE référence de cet objet dans le monde. Comme tout machin" ou objet informatique dans le TESCS, un objet de base a deux identifiants :
- L'Editor ID, mnémonique, sans espaces, pratique pour les scripts sources (avant compilation...). Certains objets n'ont pas d'Editor ID, en particulier les references sans intérêt (non persistantes, ou qui n'apparaissent pas dans les scripts ou les conditions)
- Le Form ID, situé dans la petite colonne étroite d'à coté de l'Editor Id, qu'il faut élargir pour voir le contenu. C'est un nombre hexadécimal dont les deux premiers chiffres sont le n° de fichier. 00 pour Oblivion.esm, 01 à nn pour les mods esm ou esp, FF pour les sauvegardes ess. Tous les objets (au sens informatique) ont un form ID. C'est lui qu'il faut utiliser dans la console (touche ² dans le jeu).
- Par un clic droit (popup) suivi de Use Info s'affiche l'information sur la liste des références Used in this Cell. Vous savez ainsi où se trouvent les references de AntusOdiil. Il n'y en a en effet qu'une seule.
Reference
- Double cliquez sur la ligne Tamriel... sous Used in this Cell. Cette ligne représente le lien de l'objet de base vers une référence dans le monde. La référence de AntusOdiil s'affiche dans la fenêtre de rendu, et la fenêtre CellView se trouve renseignée de toutes les références qu'elle contient.
- Double cliquez sur le personnage dans la fenêtre de rendu (Touche A pour éclairer, c'est mieux...) la fenêtre Reference s'affiche.
- L'Editor ID de cette référence est AntusOdiil01. C'est cette référence qu'il faut utiliser pour appeler une fonction dans un script de quête par exemple :
- AntusOdiil01.GetDetected player
- Le Form ID de cette référence est 00028BE3. C'est cet ID qu'il faut utiliser pour certaines fonctions dans la console par exemple :
- player.StartCombat 00028BE3
- AntusOdiil01 est également présent dans la liste des Editor ID de la fenêtre CellView.
- Vous pouvez constater que AntusOdiil01 est une référence persistante par défaut.
References persistantes
C'est le cas de tous les acteurs. Ce n'est pas le cas de tous les objets.
Les containers, les objets DANS les containers ou inventaires de PNJ sont persistants par défaut, pas les objets ordinaires posés sur le sol : ils sont déchargés après quelques temps d'inutilisation avec la cellule quand le PC n'est pas là.
Cependant, si une REFERENCE quelconque doit être utilisée dans un script ou un package, une cible de quête, une condition, etc. cochez la case "Persistent Reference", sans quoi vous ne la trouverez pas dans les listes déroulantes de sélection (fenêtre où choisit la cellule, puis la référence concernée).
Profitez également d'être dans la fenêtre Reference pour lui donner un EditorID et l'identifier plus facilement dans les listes.
C'est en particulier le cas pour les portes dans l'onglet "Teleport" si vous avez posé plusieurs "couples" de porte. Les portes de téléportation sont des references persistantes... car elles sont liées par un petit programme deux à deux.
Pour vos scripts
- Deux fonctions de script utiles :
- pnjREF.GetIsID AntusOdiil ; teste si la variable appelante contient une référence à l'objet de base AntusOdiil. C'est pratique s'il importe peu de s'adresser à Antus ou a un clône... ou pour les objets génériques : ingrREF.GetIsID Potato ; cet objet est-il une pomme de terre.
- pnjREF.GetIsReference AntusOdiil01 ; là je teste s'il s'agit bien d'AntusOdiil01, l'original, pas le clône que j'aurais pu créer par ailleurs. Cela ne marche que pour les références persistantes, pas pour une patate... sauf si elle est spéciale (objet de quête par exemple) et persistante, et qu'elle a un Editor ID renseigné. En ce cas, il est préférable de créer un objet de base "PotatoMagic" par exemple... cela permet de lui affecter un script et d'autres choses, sans affecter le Potato de base d'origine...
En effet, une règle TRES importante pour vos mods et éviter les ennuis : ne pas modifier les objets d'origine du jeu, encore moins les supprimer... ajoutez vos objets de bases et les références nouvelles sur elles. A moins d'être très sûrs de ce que vous faites, que les conséquences soient voulues, pesées et... testées.
Ne vous effrayez pas, trouver une référence d'un objet de base, quelque part, ce sont 4 clics seulement...