Le balayeur a retrouvé SON balai !
…ou comment faire utilisé un nouvel objet à un PNJ lors d’une animation « idle ».
J’ai bien lu et relu tous les tutos (je note beaucoup de participations de Préchan, Mike89) que j’avais à ma disposition (je rappelle que je travail off-line..), mais n’ai rien trouvé qui résolve ce problème : tous parlaient de comment ajouter une animation « idle », ou comment faire jouer une animation « idle » avec un objet animé… mais aucun sur comment ajouter et faire jouer une animation avec un nouvel objet!
Je n’y suis pas arrivé sans mal, à grand coup d’essais, et la solution est … toute simple.
Afin d’éviter des errances à d’autres qui souhaiteraient se lancer, je vous fait partager la manière dont j’y suis arrivé.
Ci dessous les différentes étapes pour l’insertion de l’animation :
1 – création de l’objet : ici le balai baptisé « 00EresseaBroomLower01 » (j’utilise les nif et dds d’Oblivion pour simplifier)
L’objet a été créé dans la fenêtre « object », dans la catégorie « items/miscItems » ; de cette façon, il pourra être mis dans un inventaire avec une jolie petite icône.
Pourquoi créer un nouvel objet et ne pas utiliser un balai existant puisque les fichiers sont les mêmes ? : simplement parce que cela permet de tester ce qui se passera si l’objet est réellement nouveau, et que l’identifiant du nouvel objet va permettre par la suite de déclencher l’animation sur l’utilisation de ce type unique d’objet !
(Note : on a maintenant un objet !)
2 – création du package pour l’AILa création s’effectue par le menu « character/packages… » (clic droit sur la nouvelle fenêtre puis « new »).
Ici le package se nomme « 00EresseaTestBalateur » (ben oui j’ai fait une faute de frappe !).
Pour faire simple : le package consistera à utiliser un objet (UseItemAt) et devra s’exécuter complètement (Flag = Must Complete), et pourra débuter n’importe quand (voir onglet 1), avec une probabilité de 50% (onglet 2), pas trop loin de là où le personnage a été placé dans la monde (onglet 3), et portera sur l’utilisation du nouveau balai créé (onglet 4. Pourquoi count=5 ?... je ne sais pas, j’ai copié sur BruscusDannus dans SI…).
(Note : on connaît maintenant les règles d’utilisation de l’objet par les futurs balayeurs!)
3 - création du PNJ :
..ici une femme de type nordique, simplement vêtue, et qui possède un balai défini comme ci-dessus, dans son sac.
Il n’est pas nécessaire de mettre le balai dans son inventaire, mais celui-ci pourra éventuellement servir de jeton (token) pour les conditions de lancement de l’animation ; dans la description actuelle, ce balai est inutile puisque le package AI va faire utiliser un balai (qui sort d’on ne sait où !) au PNJ (l’animation avec balai fonctionne aussi lorsqu’il n’y a pas de balai dans le monde !… c’est magique !).
(Note : on a maintenant quelqu’un susceptible de pouvoir balayé!)
4 – attribution du package au PNJSe fait en cliquant sur le bouton « AI » dans la fenêtre du PNJ (NPC in english).
Le package d’attribution du balai a été ajouté en tête de liste ; le reste du temps, le PNJ aura le droit de se promener (pas trop loin tout de même puisque le package du balayeur ne s’exécutera que près du lieu de création du PNJ…).
(Note : désormais le PNJ sait ce qu’il va faire de ses journées!)
5 – définition de l’animationIl s’agit ici d’indiquer au jeu où se trouve le fichier d’animation et les conditions d’exécution de cette animation.
Ceci se fait par le menu « Gameplay/ Idle Animations… ».
La définition de l’animation a été placée dans la rubrique Characters\_male\IdleAnims + AnimObjectAnims, dans laquelle la sous rubrique « Archipel » (créée spécialement pour ne pas la mélanger avec les autres).
Cette animation se lancera dès l’utilisation de l’objet défini au départ ( « 00EresseaBroomLower01 ») en utilisant le fichier d’animation « arcbalayage.kf » situé dans le répertoire « Data\Meshes\Characters\_Male\IdleAnims\Archipel\ », créé pour les besoins de la cause (et surtout pour trier les animations propres à Archipel).
Je n’ai pas ajouté d’autre conditions, puisque le balai est spécifique et agit comme un déclencheur de l’animation ; personne d’autre n’utilise ce type de balai !
(Note : voilà, chaque fois que le PNJ sera équipé du dit balai, il saura quel geste effectué !)
6 – Attribution du balai pour balayerQuoi ? mais c’est pas déjà fait ? Il ne l’a pas déjà son balai quand il balaye, puisque c’est ça qui déclenche la dite animation ?…
Eh bien non !
Simplement par ce qu’on a bien un balai, un balayeur, la définition du geste à faire et les conditions d’exécution de ce geste ; bref, on a le « qui », le « quoi », le « quand », le « où », le « comment », le « pourquoi » (moi, je sais pourquoi il balaye, pas lui !), mais pas le … « comment ça se tient un balai » !
Pour cela, Beth utilise un fichier nif spécifique (ici sebroomuser.nif) placé dans « \meshes\idleobjects ».
Je ne sais pas trop comment cela fonctionne exactement, mais j’imagine que « NiStringExtraData Weapon » est un indicateur permettant de lier le fichier à la main droite ; il existe aussi des « NiStringExtraData Torch » pour les objets tenu dans la main gauche. Ainsi les bols sont marqué en « torch » (pour être tenus dans la main gauche ?) quand les cuillères sont définies en « weapons » (main droite ?).
Ci-dessous un aperçu du fichier nif :
Il s’agit maintenant de dire au jeu, d’aller chercher ce nif lorsque l’animation va se lancer.
Pour cela il faut créer un nouvel objet dans la rubrique « Miscellaneous/AminObject », de lui donner un nom, mais surtout de lui indiquer le fichier nif de l’objet à utiliser pendant l’animation (donc ici \meshes\idleobjects\sebroomuser.nif») et l’animation qui a besoin de cet objet !.
Ce qui est amusant est qu’il est possible d’avoir deux objets complètement séparés ; il est possible de lancer l’animation par l’utilisation d’un objet et d’exécuter l’animation avec un autre ! (s’équiper d’un balai pour balayer, et balayer avec une cuillère !).
Si, cela fonctionne sur tous les tutos que j’ai lu, c’est parce que les animations idle, soit n’utilisaient aucun objet pour les nouvelles animations, soit qu’elles utilisaient un objet déjà défini pour les animations existantes (cas des tutos et le mod de Préchan avec les lits, les boissons, les balais).
(Note : voilà, maintenant le PNJ saura comment tenir son balai !)
7 – testerPlacer votre PNJ quelque part dans le monde, sauver l’esp.
Lancer le jeu et aller admirer votre PNJ.