- Jorkz a écrit:
- Merci Creamy, je suis en train de plancher dessus à l'instant, je le posterai ici quand ce sera plus stable...
Après réfexion, je vais poster ici pour montrer un peu où ça en est, et au cas où quelqu'un trouve (ou cherche) la solution.
Et donc en fait, ça fonctionne moyen car la queue en transparence zéro ne veut pas bouger pendant que le perso parle (et affiche le texte). Mais au sein même du dialogue sinon, l'anim de la queue se produit bel et bien (pendant le texte de son interlocuteur, par exemple...) donc: je suis proche du but.
Voici ce que j'ai mis dans repeatedly_execute_always()
- Code:
-
if (cSousLieutenant.walking)
cQueueSinge.Transparency=100;
if ((!cSousLieutenant.Moving)&&(!cSousLieutenant.Animating))
cQueueSinge.Transparency=0;
if (cSousLieutenant.Speaking){
cQueueSinge.Transparency=0;
cQueueSinge.LockView(31, eKeepMoving);
if ((cSousLieutenant.loop == 1)&&(cSousLieutenant.SpeakingFrame >=0 && cSousLieutenant.SpeakingFrame <=3))
cQueueSinge.Animate(1, 5, eRepeat, eNoBlock);
if ((cSousLieutenant.loop == 2)&&(cSousLieutenant.SpeakingFrame >=0 && cSousLieutenant.SpeakingFrame <=3))
cQueueSinge.Animate(2, 5, eRepeat, eNoBlock);
}
}
J'ai donc spécifié un loop différent car le perso "sous lieutenant" ne parle pas toujours au même endroit...
Par conséquent, trouvée sur le site anglophone, j'ai également ajouté cette fonction...
- Code:
-
function late_repeatedly_execute_always()
{
cQueueSinge.loop = cSousLieutenant.loop;
}
car il était conseillé de le faire pour régler un problème persistant de loop "suiveuse" qui ne voulait pas s'aligner. Bref
Toujours est-il que je me demande si tout cela n'entre pas en conflit avec la gestion aléatoire du perso "à suivre", mon fameux cSousLieutenant, car
je souhaitais également qu'il se promène dans la pièce dès qu'on l'appelle... Ce qu'il fait d'ailleurs très bien.
Ceci est scripté dans le repeatedly, pas always cette-fois:
- Code:
-
cQueueSinge.FollowCharacter(cSousLieutenant, FOLLOW_EXACTLY, 1);
if (!cSousLieutenant.Moving) {
cQueueSinge.Transparency=100;
if (NPCState == eNPCMoves) {
// The move action must have stopped just now. So startup the animate action:
cSousLieutenant.LockView(26);
cSousLieutenant.Animate(cSousLieutenant.Loop, 0, eOnce, eNoBlock);
// Don't unlock the view just now, because the character is still happily animating away at the moment.
// Remember in our state variable that our character has just begun the animate mode
NPCState = eNPCAnimates;
}
}
if ((!cSousLieutenant.Moving) && (!cSousLieutenant.Animating)) {
cQueueSinge.Transparency=100;
if (NPCState == eNPCAnimates) {
// The Animate action must have run out just now.
// So now's a good time to unlock the view - since the character is no longer animating.
cSousLieutenant.UnlockView(25);
// Let's make the character walk
int x = Random(Room.Width-1);
int y = Random(Room.Height-1);
cSousLieutenant.Walk(x, y, eNoBlock, eWalkableAreas);
// and remember in our state variable that the character has entered her walk mode now.
NPCState = eNPCMoves;
}
}
=> La view 25 étant celle où il marche et la 26 celle ou il cligne des yeux, se gratte, enleve son kepi... etc, donc des trucs indispensablement trijouli pour que ça paraisse moins cyclique.
Pour faire fonctionner le bousin, en haut de mon global il y a ceci:
- Code:
-
int eNPCMoves = 1;
int eNPCAnimates = 2;
int NPCState;
Et ça fait bien le taf. Et je l'ai glané sur le forum anglophone.
Mais seulement voilà, je tourne un peu en rond sur cette histoire de queue gesticulante, je ne comprends vraiment pas pourquoi elle ne s'anime pas pendant la synchro labiale et l'affichage du texte de cSouslieutenant.
Et enfin, parce que ce message est décidément trop court, j'ajoute en bonus les réglages respectifs de chacun des perso, le perso "suivi" par sa queue !!
Voilà Voilà, désolé pour ma tartine.. Mais pour ceux qui ont apprécié elle sera publiée chez "Lurdingo", editeur qui monte, et je serai en dédicace dès la semaine pro du jeudi 2 au dimanche 5 inclus, pour mon autre ouvrage à suspense au titre mystérieux, le déjà très controversé "lol ptin pk sa marche po"