- Arganis a écrit:
- Hum ce n'est pas pour la ville mais pour l'intérieure d'un bâtiment qu'il souhaite. Je parle en son nom car il est a coté de moi là et je sais se qu'il voulait faire pour le mod, vu qu'il arrête pas de râler sur son NPC qui bouge pas...
On ne peut pas exécuter deux animations en même temps sur un personnage. Parler est une animation et balayer une autre...
De même "Dialogue" est un AI package. Il a le code type 6 (donné par GetCurrentAIPackage)
Le package Dialogue est divisé en plusieurs procédures (phases). La principale est la procédure "Dialogue"
. Elle a pour code type 4 (donné par GetCurrentAIProcedure).
Le lancement d'un package de dialogue n'est pas paramétrable à travers les tables de Packages du TESCS, avec les conditions que vous connaissez. Lorsque le système évalue ses packages pour un PNJ donné, Il démarre celui qui est le plus prioritaire. Cela peut être un pack Dialogue (la priorité est définie par l'AI selon la disposition, l'agression etc...) un pack Combat, un pack Spectator... etc, tous types de packages qui n'apparaissent pas dans la liste des types de packages du TESCS... ou un de la liste.
Les animations Idle animations, c'est à dire les animations qui peuvent être jouées quand il n'y a rien d'autre à faire pour un PNJ) sont gérées selon les priorités du tableau Gameplay/Idle Animations.
Sauf si l'AI posséde des priorités qui ne sont pas paramétrables et passent avant ce tableau des Idle.
Selon ce tableau, par priorité, un pnj joue les animations suivantes :
* l'animation du menu 1036 (choix de la race et du sexe du PJ)... çà arrive pas souvent, çà...
* L'animation d'attente lors du package "ESCORT" (n°2) lorsque le PNJ escorté est "WAITING". (Fait signe de le suivre)
* Les diverses animations de relevage (allongé face dessus... donc sur le dos, et face dessous donc sur le ventre) : condition facingup == 1 ou != 1). Condition essentielle pour se relever : ne pas ête KO (KnockedState == 0). Condition subsidiaire : être en possession ou non d'un arme à la main... ce qui donne se relever sur le dos d'une main ou à deux mains et se relever sur le ventre à une ou deux mains...
* Viennent ensuite les animations uniques (uniqueIdleAnim), spéciales à un PNJ lors des quêtes. Elles sont forcément prioritaires sur le reste si un PJ est utile à une quête (pas question de bavarder ou de passer le balai). Cela correspond à de la mise en scène répondant à une variable de script, le port d'un objet spécial... à étudier avec attention !!! Pour le comment du pourquoi !
*
Ensuite, les animations d'objet par un PNJ (C'est là dedans que doit se situer ton anim de balai, avec ses conditions !!!!. Ces animations ne peuvent s'exécuter que si le PNJ ne dors pas, est assis ou n'est pas assis(en fait est debout...) ce qui exclut les situations en train de s'asseoir ou de se lever, ou à cheval...
* Ensuite, les animations pour s'asseoir ou se coucher et pendant qu'on est assis ou couché... qui s'exécutent lorsque GetSitting >0 ou Get Sleeeping > 0. Voir les différentes phases avec les valeurs possibles de ces deux fonctions.
Une particularité importante :
ce bloc d'Idle n'a pas la case "must return a file cochée". Donc le test de choix des idle n'ira pas plus loin si le pnj est dans un phase quelconque ou il est assis ou couché (ou en train de se... ). Aucune autre anim ne pourra être sélectionnée tant que les conditions assis ou couché seront vraies... sauf si une des conditions précedentes (plus prioritaire) devient vraie.
Ensuite les animations pour cower (package 10, proc 16) et NonCombatCower (Pack 18, proc 34) pour la fuite et la fuite sans combat...
* Enfin si tout ce qui précède n'est pas arrivé, on a les blocs de choix des animations de Dialogue et de GREETING.
Comme pour s'asseoir et se coucher, la case "must return a file" n'est pas cochée".
DONC si ton animation de balayage est après le bloc "InDialogue" ou "IsGreeting", elle ne s'exécutera pas lorsque une procédure "DIALOGUE" est en cours.
Or la particularité d'un PACKAGE WANDER est pour le PNJ d'aller s'asseoir s'il est fatigué, de démarrer un dialogue ou d'aller se battre s'il rencontre quelqu'un.
Vérifie donc OU est casée ton anim de balayage dans les IDLE.
Ensuite surveille les packages qui sont sélectionnés, et la valeur des variables conditions de l'Idle Animation.
Pour en savoir plus lorsque tu testes, utilise dans la console la commande TDT (Toggle Debug Text : cela affiche du texte de debugage). La page de texte affiché dépend de la commande SDT (Select debug text) :
Par defaut les renseignements d'acteur sont ceux du PJ, sinon ce sont ceux du PNJ sélectionné à la console en cliquant dessus. Les renseignements continuent à défiler dans le jeu... pratique pour voir l'évolution des valeurs. Pour arrêter le texte, revenir dans la console et taper de nouveau TDT.
SDT -1 : nb d'acteurs dans le secteur
SDT 0 time, cellule, world,
package..., fps (frame per second),...
SDT 1 : l'animation en cours
SDT 2 3 : la QUEUE...
SDT 4 : les lods chargés
SDT 5 : les scripts
SDT 6 : le combat et les données de combat
SDT 7 : le style de combat
SDT 8 : la magie
SDT 9 : valeurs d'acteur
SDT 10 : les valeurs du PJ (ses talents)
SDT 11 : données audio
SDT 12 : taux de fps seul... pour suivre çà et détecter les pb de freeze
SDT 13 : géomètrie
C'est pas trop long ?