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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Comment faire en sorte qu'un chien suive tout le temps son maitre?

Par Prophetia Astrae le 16/1/2003 à 23:56:38 (#3038613)

Bonjour (ou plutot bonsoir mais bon on s'en fiche),

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)

pour que les créatures suivent ,tu dois utiliser cette fonction

// 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)

Une petite precision : en lisant le code, on a l'impression que tu recommande de le mettre sur le NPC...

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)

C'est bon ça marche :)

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)

C'est toujours un plaisir ^^

Par RAT le 17/1/2003 à 3:17:27 (#3039249)

De rien mais cela ne marche pas ce que je t'ai filé Comme code?
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)

Je sais pas si le AssignCommand et le Object self vont pas entrer en conflit...

Par Prophetia Astrae le 17/1/2003 à 9:53:04 (#3039973)

Désolée RAT, mais en effet, le fait de mettre le AssignCommand juste apres le code cré les chiens ne fonctionne pas.

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)

Aaah oki, ba ça cela ne m'est jamais arrivé, mais c'est toujours bon à savoir :):D. en tout cas le principal, c'est que tu es le résultat que tu veux :).

Par Prophetia Astrae le 17/1/2003 à 12:34:44 (#3040983)

Vivi, alors un grand merci, maintenant, il me reste à verifier si les chiens continuent à suivre mon pnjs si celui-ci change de zonne :)

JOL Archives 1.0.1
@ JOL / JeuxOnLine