Forum WTeam
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Forum WTeam

Le site des moddeurs 100% francophone.
 
AccueilPortailGalerieRechercherDernières imagesS'enregistrerConnexion
Le deal à ne pas rater :
Cdiscount : -30€ dès 300€ d’achat sur une sélection Apple
Voir le deal

 

 Un balayeur fainéant

Aller en bas 
4 participants
AuteurMessage
Gorgorbey
Moddeur
Moddeur



Masculin Nombre de messages : 12
Age : 31
Date d'inscription : 27/10/2009

Un balayeur fainéant Empty
MessageSujet: Un balayeur fainéant   Un balayeur fainéant Icon_minitimeDim 01 Nov 2009, 19:01

Bonjour.

Je suis actuellement en train de crée un petit mod, dans lequel je souhaite inclure un personnage passant le balai. J'arrive parfaitement à lui faire tenir un balai et faire en sorte qu'il s'en serve, mais je le problème vient du fait que, premièrement, il reste sur place (bien que j'ai mis un second package Wander), et deuxièmement, il stop toute action s'il interagit avec le PC.

Quelqu'un pourrait-il m'expliquer comment faire pour que ce NPC balait toute la pièce et continue son travaille même s'il est déranger?

Merci beaucoup.
Revenir en haut Aller en bas
Shado
Moddeur
Moddeur
Shado


Masculin Nombre de messages : 8
Age : 29
Date d'inscription : 26/10/2009

Un balayeur fainéant Empty
MessageSujet: Re: Un balayeur fainéant   Un balayeur fainéant Icon_minitimeLun 02 Nov 2009, 08:26

Je ne saurais pas te répondre car je ne suis que débutant en moddage, c'est juste pour te prévenir que je crois qu'il existe déjà un mod permettant de rajouter des balayeurs dans les villes de Cyrodiil :
https://wteamoblivionmod-for.forum2jeux.com/mods-f3/les-mods-de-prechn-t1231.htm

(C'est un mod de -Prechan- Clin d'oeil )
Bonne journée.
Shado.
Revenir en haut Aller en bas
Arganis
Moddeur
Moddeur
Arganis


Masculin Nombre de messages : 12
Age : 33
Date d'inscription : 02/07/2009

Un balayeur fainéant Empty
MessageSujet: Re: Un balayeur fainéant   Un balayeur fainéant Icon_minitimeLun 02 Nov 2009, 14:47

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... Rigolo
Revenir en haut Aller en bas
Mike89
Maître ArchipelModeur
Maître ArchipelModeur
Mike89


Masculin Nombre de messages : 3151
Age : 68
Date d'inscription : 06/03/2007

Un balayeur fainéant Empty
MessageSujet: Re: Un balayeur fainéant   Un balayeur fainéant Icon_minitimeLun 02 Nov 2009, 17:13

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... Rigolo

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" Content . 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... Clin d'oeil
* 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 ?
Pharaon
Revenir en haut Aller en bas
Gorgorbey
Moddeur
Moddeur



Masculin Nombre de messages : 12
Age : 31
Date d'inscription : 27/10/2009

Un balayeur fainéant Empty
MessageSujet: Re: Un balayeur fainéant   Un balayeur fainéant Icon_minitimeLun 02 Nov 2009, 19:01

Oula, tout cela me semble bien ésotérique! N'oublies pas que je débute à peine! Je vais tout de même prendre note de toutes ces précieuses informations, et tenter de les déchiffrer (Il va peut-être me falloir l'aide de champolion!).

Mais en fait, je lui tout simplement mis un package "Use Item At", avec pour objet un balai nommé "BroomLower01", sans rien faire d'autre, et il effectue normalement l'animation. Je pensait qu'on ajoutant un package "Wander", il balaierai un point, ferrai quelques pas, puis se remettrai à balayer, mais non, il reste sur place. Cependant, il s'arrête dès qu'on l'approche pour faire un grand "Bonjours!", puis ne fait plus rien et reste planté là.
Revenir en haut Aller en bas
Mike89
Maître ArchipelModeur
Maître ArchipelModeur
Mike89


Masculin Nombre de messages : 3151
Age : 68
Date d'inscription : 06/03/2007

Un balayeur fainéant Empty
MessageSujet: Re: Un balayeur fainéant   Un balayeur fainéant Icon_minitimeLun 02 Nov 2009, 19:25

Gorgorbey a écrit:
Oula, tout cela me semble bien ésotérique! N'oublies pas que je débute à peine! Je vais tout de même prendre note de toutes ces précieuses informations, et tenter de les déchiffrer (Il va peut-être me falloir l'aide de champolion!).

Mais en fait, je lui tout simplement mis un package "Use Item At", avec pour objet un balai nommé "BroomLower01", sans rien faire d'autre, et il effectue normalement l'animation. Je pensait qu'on ajoutant un package "Wander", il balaierai un point, ferrai quelques pas, puis se remettrai à balayer, mais non, il reste sur place. Cependant, il s'arrête dès qu'on l'approche pour faire un grand "Bonjours!", puis ne fait plus rien et reste planté là.

Mauvaise idée. Wander n'est pas fait pour lancer une animation... Mais pour rester en attente.
Regarde quelles sont les conditions d'utilisation du balai... dans les conditions de l'Idle animation associée.
Le nom de l'idle est dans les AnimObject : trouve le balai dans les objets de base "AnimObject", pas les "Item", puis cherche l'animation qui se trouve dans la liste des Gameplay/IdleAnimation.
Donne moi les conditions utilisées.
Revenir en haut Aller en bas
Gorgorbey
Moddeur
Moddeur



Masculin Nombre de messages : 12
Age : 31
Date d'inscription : 27/10/2009

Un balayeur fainéant Empty
MessageSujet: Re: Un balayeur fainéant   Un balayeur fainéant Icon_minitimeLun 02 Nov 2009, 20:18

Alors l'anim du balai: Caracters\_Male\IdleAnim\SESweep.kf

Il y a quatre lignes dans le tableau:

Target....Function Name....Function info....................Comp...Valu
no.........IsShieldOut.........NONE..............................!=.........1.00...AND
no.........IsWeaponOut......NONE..............................!=.........1.00...AND
no.........IsTorchOut.........NONE..............................!=.........1.00...AND
no.........GetUsedItem........MiscItem:'BroomLower1...==........1.00...AND



Ce sont bien tout cela les conditions dont tu parle?
Si je comprend bien, les balai peut être utilisé si le NPC n'a ni bouclier, ni arme, ni torche en main et au moins un balai dans l'inventaire, c'est ça?

(C'est affolant, j'ai l'impression d'être idiot tout à coups :/)
Revenir en haut Aller en bas
Mike89
Maître ArchipelModeur
Maître ArchipelModeur
Mike89


Masculin Nombre de messages : 3151
Age : 68
Date d'inscription : 06/03/2007

Un balayeur fainéant Empty
MessageSujet: Re: Un balayeur fainéant   Un balayeur fainéant Icon_minitimeLun 02 Nov 2009, 21:41

Gorgorbey a écrit:
Alors l'anim du balai: Caracters\_Male\IdleAnim\SESweep.kf

Il y a quatre lignes dans le tableau:

Target....Function Name....Function info....................Comp...Valu
no.........IsShieldOut.........NONE..............................!=.........1.00...AND
no.........IsWeaponOut......NONE..............................!=.........1.00...AND
no.........IsTorchOut.........NONE..............................!=.........1.00...AND
no.........GetUsedItem........MiscItem:'BroomLower1...==........1.00...AND



Ce sont bien tout cela les conditions dont tu parle?
Si je comprend bien, les balai peut être utilisé si le NPC n'a ni bouclier, ni arme, ni torche en main et au moins un balai dans l'inventaire, c'est ça?

(C'est affolant, j'ai l'impression d'être idiot tout à coups :/)

C'est PRESQUE çà... c'est en fait l'animation de SI sans modification.
Elle est dans les UniqueIdleAnims et le sous-groupe SEanims/SEgeneral et l'IdleAnimation s'appelle SESweep. Le fichier KF associé est bien celui que tu dis. C'est dedans que sont les clefs d'animation.

La dernière condition n'est pas d'avoir un balai dans l'inventaire, mais de l'UTILISER.
Ce ne peut être que le résultat d'un package UseItemAt. (A la rigueur d'un FIND mais je n'ai jamais vérifié).
Il suffit bien sûr d'avoir un balai dans son inventaire, ou d'en trouver un.
Une fois que le pnj a son objet, cela active les valeurs des fonctions USE :
* GetIsUsedItem prend la valeur 1
* GetIsUsedItemType prend la valeur 1 en fonction du type d'objet testé comme Ingredients, Keys etc.
* GetUsedItemActivate (sais pas comment fonctionne, ni quand...)
* GetUsedItemLevel (sert à choisir l'animation en fonction de la hauteur de l'objet à activer, exemple une serrure) deux positions, au niveau du sol, et à un mètre environ.

L'animation dont tu parles ne démarre qu'en résultat d'un UseItemAt.

Pour qu'elle démarre avec d'autres conditions, il faut la dupliquer, lui donner un autre nom, et changer les conditions.
Si tu veux qu'il balaye s'il a un balai dans l'inventaire, il faut la condition "GetItemCount BroomLower1 >= 1".
En ce cas, il balayera tant qu'il a un balai dans l'inventaire, sauf si une animation plus prioritaire l'emporte.

Si tu veux qu'il balaye seulement de temps en temps, il faut :
* Soit un script et conditionner l'Idle par une variable qui dira quand et où il doit balayer en positionnant la variable à 1
* Soit changer les conditions du package UseItemAt

Plutôt que changer les conditions de l'Idle, je te conseille plutôt de changer le package UseItemAt et le conditionner autrement.

Tu peux enchainer les packages conditionnés chacun par une variable de script : aller à tel endroit, balayer,etc.
Exemple de conditions pour positionner les variables de packages : l'heure, la présente de tel PNJ (le chef) ou du PJ... ou le tirage d'un nombre aléatoire (GetRandomPercent...) etc.
Tu peux gérer aussi l'heure de la pause, du repas, de boire une bière, de piocher le jardin, d'aller parler à untel, etc, en lançant le bon package à chaque fois par l'intermédiaire d'une variable.

Il faut faire attention aussi à l'ordre des packages dans la liste AI du PNJ. C'est le premier dont la condition est vraie qui s'exécute (c'est ce que fait l'évaluation périodique des packages).
Si la seule condition est l'heure, pas besoin de script il suffit d'utiliser l'onglet Schedule du package. Les conditions du package permettent aussi sans script de faire pas mal de choses.
Prend pour exemple l'AI de SEBruscusDannus...
Revenir en haut Aller en bas
Contenu sponsorisé





Un balayeur fainéant Empty
MessageSujet: Re: Un balayeur fainéant   Un balayeur fainéant Icon_minitime

Revenir en haut Aller en bas
 
Un balayeur fainéant
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum WTeam :: Public :: Vous avez un problème avec Oblivion et ses mods ?-
Sauter vers: