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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Faire bouger des monstres instanciés par encounter

Par mobidique le 25/7/2002 à 18:27:43 (#1858371)

Je me bats avec ce pb depuis ce matin (vive les RTT ;)) ...

Jusqu'à présent je faisais tout mes mob à la main ... Je le posais et si je voulais le faire bouger lorsque les perso passaient sur un trigger je faisais :


void main()
{
if (GetLocalInt(OBJECT_SELF, "bouge") == 0) {
SetLocalInt(OBJECT_SELF, "bouge", 1);
AssignCommand(
GetObjectByTag("Bugbear_Debut"),
ActionMoveToObject(
GetObjectByTag( "Bugbear_Debut_Attack" ),TRUE,0.0));
}
}

Ce n'est qu'un exemple ...

Maintenant je fais apparaitre des monstres avec un encounter et de la même façon je désire que ces monstres se déplacent si les perso passent sur un trigger ... Je fais ça :
void main()

{
int iNumero =0;
object oMob = GetObjectByTag("NW_Tagmob",iNumero);
PrintString(GetTag(oMob));

while(GetIsObjectValid(oMob)){
AssignCommand(oMob,ClearAllActions());
AssignCommand(oMob,
ActionDoCommand(
ActionForceMoveToObject(
GetObjectByTag("Mob_Attack"),TRUE,0.0f,30.0f)));
iNumero++;
oSpider = GetObjectByTag("NW_Tagmob",iNumero);
}
}


Ca marche pas ... Alors ... oui j'ai bien regardé que mon nom de tag était le bon .. oui mon waypont existe ... oui le numéro de la première bestiole est bien 0 et pas 1 j'ai essayé avec 1 et il ne trouve pas de bestioles quand il n'y en a qu'une... Le printstring et le reste de code que j'avais mis pour debug et oui ça rentrais bien dans la boucle ... dans cette boucle j'avais mis un printstring aussi et j'avais bien autant de message dans la log que j'avais de bestiole ... La bestiole (j'en avais qu'une en fait j'avais mis le range de bestiole entre 1 et 8 et comme je testais avec un seul perso du niveau correspondant à la bestiole j'en avais qu'une) vient si je tourne en rond sur mon trigger c'est à dire si je n'arrete pas de l'activer ... Plus fort ... J'ai mis une bestiole à la main et j'ai testé la bestiole mise à la main vient ... J'ai aussi testé en faisant spawner 2 bestioles par l'encounter et en mettant 2 bestioles à la main, y a toujours que celles mise à la main qui vienne ... J'ai cru discerner une différence de comportement entre les bestioles de l'encounter et celles mise à la main ... celles de l'encounter bougent pas mal alors que celles misent à la main sont quasiment immobile ... je suis pas formel sur cette observation ... A partir de ce moment là je me suis dit "il y a une autre action qui entre en ligne de compte et qui jette mon déplacement aux orties ... je me suis dit que c'était l'animation des bestioles spawnés ... Et Hop sur le OnSpawn de la bestiole ... Le script par défaut de NWN s'appelle "nw_c2_dropin9" c'est une modif de "NW_C2_DEFAULT9". Dedans j'ai effectivement trouvé une ligne pouvant induire une animation d'aprés le commentaire lu au dessus ... :eek:

Je viens de trouver ... d'une part dans le onspawn il y a un commentaire qui dit que les mobiles animations sont joués automatiquement dans les encounter et d'autre part dans le heartbeat on trouve un If qui dit "Si la bestiole est un encounter et blablabla alors jouer les mobiles animations ...

Donc pour en revenir à la description du pb, quand il y a des animations mobile et que le déplacement jusqu'au point dure plus longtemps que 6 secondes ben la bestioles part mais n'arrive jamais parce qu'elle reçoit avant autre un ordre de déplacement ... CQFD :D

Rhaaaaaaaaaa chuis content :) A propos j'ai testé là à l'instant pendant que j'écrivais et ça marche ... Reste qu'il y a peut être un moyen d'avoir les animations ET de faire déplacer sa bestiole

Merci de votre aide ;) (et je plaisante pas vu que j'aurais pas écrit j'aurais peut être pas trouvé en direct live !)

Mob'.

JOL Archives 1.0.1
@ JOL / JeuxOnLine