Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Orientation d'un PNJ

Par Cassin le 11/10/2002 à 10:18:38 (#2315307)

J'ai petit problème : après un dialogue, un PNJ doit se diriger vers un WP, ce qu'il fait très bien mais malgré l'orientation du WP il reste tourné du côté duquel il arrive, ce qu'il le met face à un mur, ça fait un peu con, on dirait qu'il est en train de pisser (et contre un temple ça le fait pas trop ! :mdr: )...

Bref, j'ai ajouté dans mon script une fonction SetFacing afin de le tourner du bon côté, mais ça ne marche pas, le perso ne se tourne pas...
J'ai ça :

void main()
{
ActionMoveToObject (GetObjectByTag ("WP_Gardien_Temple"));
AssignCommand(GetObjectByTag ("Garde_Temple"), SetFacing(DIRECTION_WEST));
}


Voyez-vous une erreur quelque part ? J'ai testé avec différentes direction, ça ne change rien, ainsi que par des valeurs numériques à la place de DIRECTION_XXX, ca ne fait rien non plus...

Pourtant la fonction SetFacing marche, je l'ai utilisée dans un autre script où elle fonctionne bien.

Je comprend pas tout là... :confus:

Par mobidique le 11/10/2002 à 10:51:58 (#2315473)

[list=1]*T'as aucun sens de l'orientation*Ta boussole déconne
*Sa boussole déconne*quand la fonction marchait est-ce que tu faisais un facing vers un objet ? Si oui, plante un objet invisible et fait un facing vers celui là ... *je sais pas[/list=1]

Mob'.

Par eMRaistlin le 11/10/2002 à 10:59:28 (#2315502)

Est-ce que par hasard ton mur serait a l'est ? pasque si oui, cherche pas plus loin... je me rappele avoir lu un post sur l'officiel qui parlais d'un pb de Facing qui pointait a l'est...

Je vais regarder, mais comme je te dis, si ton temple est a l'est, j'ai bien peur de revenir avec de bien mauvaise nouvelles...

Par Cassin le 11/10/2002 à 11:16:05 (#2315585)

Mobidique : non, l'approche est la même dans les deux scripts, le perso marche vers un WP et se tourne, sauf que dans le cas qui marche, le PNJ est tout proche de son WP et le script est dans le OnSpawn ; et dans le cas qui marche pas, le PNJ est assez loin de son WP et le script est à la fin du dialogue.

eMRaistlin : en fait le mur est bien à l'est mais je veux tourner le perso vers l'ouest, mais de toutes façons, ça ne marche dans aucune des quatre directions...

Par mobidique le 11/10/2002 à 11:25:23 (#2315653)

Alors il y a une autre possibilité ... Si ton perso à des anims par défaut ... Le temps que ton perso met à rejoindre son WP peut entrainer le passage à la trappe de ton facing ...

Je suis pas trés clair alors je te donne un exemple .. J'avais un Pb d'araignée générée par un encounter, araignée qui devait rejoindre un WP lorsqu'un PJ passait sur un trigger. Le temps de trajet de la caverne de l'araignée au WP était supérieur à 6 sec, le cycle du onHeartBeat. Mais pas de bol les monstres générés pas encounter ont des anim par défaut et ces dernière prenaient le pas sur mon déplacement et l'araignée s'arrétait. Elle se déplaçait 6 secondes en direction du WP et elle s'arretait et reprenait son activité par défaut. La solution à consisté à faire un blueprint avec une arraignée au OnSpawn modifié de telle sorte qu'elle n'ait pas les anim en question et de faire un encounter qui fasse spawner cette arraignée.

Donc mon idée pour ton PB c'est que ton ordre de facing est bien passé mais se fait jeter à la trappe lorsque ton NPC arrive au WP pour cause d'un trajet supérieur à 6 sec ... C't'une idée comme ça hein ...

Par eMRaistlin le 11/10/2002 à 11:59:38 (#2315861)

eMRaistlin : en fait le mur est bien à l'est mais je veux tourner le perso vers l'ouest, mais de toutes façons, ça ne marche dans aucune des quatre directions...


J'ai pas eu encore le temps de chercher, mais dans ce cas, je m'y met, pasque je suis quasi-sur que tu pourra jamais utiliser cette fonction pour obtenir autre chose que Est, si ma memoire est bonne...


Je te tiens au courant...

[Edit]

Apres recherche, l'erreur existe bien, mais seulement sur des perso qui s'assient. Donc, normalement, ca veint d'ailleurs... (mulder, ou est-tu ?)


J'ai une autre question : tu fais un assign Command, mais si tu essayait avec ActionDoCommand ?

Par Jedaï le 11/10/2002 à 12:51:12 (#2316217)

Raistlin m'a doublé mais effectivement ActionDoCommand() devrait résoudre ton problème, je me demande d'ailleurs si tu n'as pas confondu AssignCommand (donne un ordre à qqun d'autre que celui qui appelle le script) et ActionDoCommand (met dans la file d'action une fonction void) parce qu'il y a une incohérence : ActionMoveToObject() mais AssignCommand( , SetFacing) ! :confus:

Sinon j'ai déjà eu le même problème : ActionDoCommand marche.

[Edit]

En fait ton personnage a l'action MoveTo dans sa liste, parallèllement il se tourne vers l'ouest(SetFacing() n'étant pas une action s'éxécute immédiatement) mais n'ayant pas fini son mouvement il reprend celui-ci après un flottement et évidemment ne se retoune plus vers l'ouest une fois arrivé puisqu'il a déjà effectué cette "action" de son point de vue.

Par Cassin le 12/10/2002 à 11:18:47 (#2321426)

OK, en effet ActionDoCommand ça marche.

Merci !

Par Amaranthe le 12/10/2002 à 23:45:54 (#2325455)

Dans le meme ordre d'idee...
Comment faire pour qu'un pnj se tourne vers un autre ?

Soit je lui met un SetFacing
mais dans ce cas je ne sait pas déterminer la direction...

Soit je lui met un SetFacingPoint
mais dans ce cas je ne sait pas déterminer le vecteur...

Je veux que l' objet A se tourne dans la direction de l'objet B.

Merci de votre aide.

Amaranthe.

Par Jedaï le 13/10/2002 à 1:11:12 (#2325761)

Ce script tourne un NPC vers le PC le plus proche :


void main()
{
object oPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC);

SetFacingPoint(GetPosition(oPC));
}


Plus généralement pour que l'objet A se tourne vers l'objet B, il faut donner à A l'ordre suivant :
SetFacingPoint(GetPosition(B));

JOL Archives 1.0.1
@ JOL / JeuxOnLine