Invocations dans scriptdev2
Bonsoir,
avant de me faire envoyer dans l'outil de recherche (car j'ai vu qu'il y a un poste récent qui traite de ce sujet), laissez-moi vous exposer mon problème =)

C'est une erreur certainement minuscule mais qui pose quelques problemes à mon invocation. Voila mon code, qui est censé invoquer un mob aux memes coordonnées que l'invocateur :

Code :
m_creature->SummonCreature(28002, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(), 0.0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,5000);

Le probleme c'est que le mob apparait aux coordonnées 100, 100 ,100 alors que l'invocateur est à 100, 100, 48. J'arrive à modifier les coordonnées x et y, mais la z ne veut pas changer (meme en remplaçant GetPositionY() par des nombres) . L'ennui c'est que le mob apparait dans les airs et n'aggro pas :/

Merci d'avance.
Bon en gros une créature qui invoque une autre créature (dans ce cas le m_creature est correct , mais si ce n'est pas le cas c'est un coup de m_player)

Pour le souscis de coordonnée je suis pas sur de la fonction summonCreature !

Code :
SummonCreature(CREATURE_BOOK_SUMMON, pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 1*MINUTE*IN_MILLISECONDS);

Le 0.0 doit être mal supporter si tu ne précise pas que c'est un float avec un f au bout ! remplace le 0.0 par 0 est tient au courant Clin
(19-03-2011 08:03)totomakers a écrit :  Bon en gros une créature qui invoque une autre créature (dans ce cas le m_creature est correct , mais si ce n'est pas le cas c'est un coup de m_player)

Pour le souscis de coordonnée je suis pas sur de la fonction summonCreature !

Code :
SummonCreature(CREATURE_BOOK_SUMMON, pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 1*MINUTE*IN_MILLISECONDS);

Le 0.0 doit être mal supporter si tu ne précise pas que c'est un float avec un f au bout ! remplace le 0.0 par 0 est tient au courant Clin

Non , met 0.0f
Tout d'abord, merci pour vos réponses.

Je veux effectivement que ce soit un monstre qui invoque d'autres monstres (dans le cadre d'un script de boss).

J'ai essayé avec 0 et 0.0f, le résultat est le même. Par contre j'ai remarqué quelque chose : la coordonnée Z est toujours la même que la X. Quand je met
Code :
SummonCreature(28002, m_creature->GetPositionX()+30, m_creature->GetPositionY(), m_creature->GetPositionZ(), 0.0f,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,5000);
la position Z de ma créature est 130, comme la X, alors que j'ajoute 30 uniquement à la X :/

J'ai également essayé avec DoSpawnCreature, qui est censée invoquer le monstre avec pour origine les coordonnées de l'invocateur.
Code :
DoSpawnCreature(28002, 0.0f, 0.0f, 0.0f, 0.0f,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,5000);
Cette fonction est donc censée invoquer un monstre sur les mêmes coordonnées que l'invocateur, et la encore, x et y sont justes, mais z prend la valeur de x et est donc faussée.
Un souscis avec la fonction GetPositionZ() ! A tu un core clean de MaNGOS ou un fork modifier ?
Euh j'ai compilé mon propre core en téléchargeant les sources les plus récentes avec git-truc.

Suivant ta supposition je suis allé voir le codage de la fonction SummonCreature, qui est utilisée également pour DospawnCreature, et je crois que t'avais en partie raison Hihi
Code :
CreatureCreatePos pos(GetMap(), x, y, X, ang, GetPhaseMask());

Je suppose que le deuxième x doit être un z pour que ça marche correctement.

Parcontre, si je corrige ça, je dois recompiler mon core non? Et pour remplacer l'ancien, je dois garder Vmap, dbc, map, mangosd.conf, realmd.conf, les 4 lib de scriptdev2 et remplacer tout le reste par les nouveaux? (j'ai jamais changé de core à l'arrache, s'pour ça que je demande Hihi)
le soucis doit être encore plus profond car là ça appelle encore un bout de code différent ! mais oui le problème viens surement de là
Édition :
https://github.com/mangos/mangos/commit/...2572f01d2f

Voilà l'erreur met a jour ton core
C'est effectivement l'erreur que j'avais remarqué, mais j'osais pas y toucher. Du coup ça marche mieux maintenant Langue

Merci pour ton aide, je met résolu =)

Retourner en haut Accueil