Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Comment faire en sorte qu'un chien suive tout le temps son maitre?
Comment faire en sorte qu'un chien suive tout le temps son maitre?
Par Prophetia Astrae le 16/1/2003 à 23:56:38 (#3038613)
J'ai un pnj qui doit toujour etre entouré de 4 gros chiens féroces, j'ai mon pnj, j'ai mes chiens féroces, et ils font peur :p, quand le pnj est créé, à l'aide d'un petit script sur le OnSpawn, mes 4 gros chiens apparaissent.
Jusque là rien de tres compliqué.
Maintenant, je veux que mes chiens suivent le pnj, c'est la que se pose le probleme, pour l'instant, j'arrive a placé mes chiens à un instant t comme je le desire grace à un ActionMoveToLocation, mais je voudrais que des que mon pnjs bouge, mes chiens le suivent comme des bon petits toutou à leur maitre mais alors là, je ne sais pas ou mettre le script....
si vous avez une petite idée de comment faire, je prends...
En gros je voudrait que mes chiens se comportent comme l'animal de companie des druides ou rodeurs....
Merci d'avance
Prophetia
Par RAT le 17/1/2003 à 0:04:19 (#3038655)
// The action subject will follow oFollow until a ClearAllActions() is called.
// - oFollow: this is the object to be followed
// - fFollowDistance: follow distance in metres
// * No return value
void ActionForceFollowObject(object oFollow, float fFollowDistance=0.0f)
et tu les mets dans un assigncommand. Ou les mettre? Je pense que tu devrais les mettres là ou tu les crées!
donc le code devrait ressembler dans ce style là:
//ton code de createobject
AssignCommand(*object de la creature que tu viens de créer*,ActionForceFollowObject(OBJECT_SELF (si le script est dans un des évenements de ton pnj, sinon tu mets son objets *oPNJ*),2.0));
voilà, essaye toujours :)
Par eMRaistlin le 17/1/2003 à 0:46:23 (#3038827)
Le ForceFollow doit etre mis sur les chiens...
Donc, le mieux, c'est de faire un GetObjectByTag sur les chiens, de leur demander de trouver le tag du NPC, puis de leur demander un ActionForceFollow avec l'objet ainsi trouvé...
Bien entendu, tu dois t'arranger pour que le NPC existe avant le declenchement du GetObjectByTag, qui sinon, ne rammenera rien... (des delaycommand feront tres bien l'affaire ^^)
Par Prophetia Astrae le 17/1/2003 à 1:24:03 (#3038968)
Voila ce que j'ai fait, on ne sait jamais ça peut interesser d'autre personnes :)
Voila pour créer mes quattres chiens autour de mon pnj, ceci est mis dans le OnSpawn du pnj: //creation des chiens
int i;
for(i = 0; i < 4; i++){
int iObjectType = OBJECT_TYPE_CREATURE;
//atention, ici on utilise le ResRef et non pas le Tag
string sCreature = "chien003";
location lLoc = GetLocation(OBJECT_SELF);
int bUseAppearAnimation = TRUE;
CreateObject(iObjectType, sCreature, lLoc, bUseAppearAnimation);
}
Ensuite j'ai raccroché chacun de mes chiens à mon pnj en mettant ceci dans le OnSpawn des chiens: //les chiens suivent le pnj
object oCreature = GetObjectByTag("pnj");
AssignCommand(OBJECT_SELF, ActionForceFollowObject(oCreature,5.0));
Et le tour est joué ;)
En tout cas un grand merci pour votre aide :merci:
Prophetia
Par eMRaistlin le 17/1/2003 à 2:25:54 (#3039154)
Par RAT le 17/1/2003 à 3:17:27 (#3039249)
Comme tu mets un assigncommand et que tu cibles une créature, cela te permet de faire qu'un seul script et de le mettre dans le onspawn du NPC.
Je ne sais pas si j'ai bon, je n'ai jamais essayer. Mais je trouve cela correcte que dès que tu crées le chien, tu lui fous un assigncommand de suivre son maitre.
object oChien=CreateObject(iObjectType, sCreature, lLoc,bUseAppearAnimation);
oChien;
AssignCommand(oChien, ActionForceFollowObject(OBJECT_SELF,5.0));
Enfin, le principal c'est que cela marche :):D.
Par eMRaistlin le 17/1/2003 à 7:20:06 (#3039513)
Par Prophetia Astrae le 17/1/2003 à 9:53:04 (#3039973)
Les raison, elles peuvent etre diverses et variée, personnellement, je pense que c'est tout simplement que l'objet oChien n'a pas encore eu le temps d'etre créé pour lui assigner la commande, il faudrait faire un petit test avec un delaycommand pour s'en assurer.
Le fait d'assigner la command dans le OnSpawn regle le probleme puisque cet evenement est déclenché apres la creation de l'objet.
Voila ce que j'en pense, mais je ne pourrais pas le certifier car je ne connais pas assez bien les mecanismes internes pour cela
Mais Merci, car c'est surtout la fonction qu'il me manquai, j'avais pas vu la fonction ActionForceFollowObject :rolleyes:
Prophetia
Par RAT le 17/1/2003 à 11:07:30 (#3040448)
Par Prophetia Astrae le 17/1/2003 à 12:34:44 (#3040983)
JOL Archives 1.0.1
@ JOL / JeuxOnLine