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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Arreter un combat....

Par Prophetia Astrae le 14/2/2003 à 12:37:23 (#3236708)

Bonjours


J'aurrais besoin dans un de mes scripts d'arreter un combat entre un pnj et un pj (NPC et PC), a ma connaisance, la seule fonction permetant de le faire est un ClearAllAction, j'utilise un

AssignCommand(oPerso, ClearAllAction(TRUE));
ou oPerso corespond dans un premier temps au PC puis apres au NPC

Cette command n'est effectuée que dans le OnUserDefined appelé par le OnCombatRoundEnd du NPC, et si le nombre de point de vie du PC est inférieur à un nombre défini.

Le probleme qui se pose est le suivant, quand j'utilise un perso assez haut lvl, tout se passe bien, par contre, avec un perso lvl 1 (qui posséde à l'origine un nombre de point de vie inférieur au seuil), j'ai une erreur STACK UNDERFLOW.

Je pense que le probleme vient du fait que le NPC n'a pas le temps de remplir ça pile avant que la fonction ne soit éxecutée.
donc si vous aviez une petite idée pour régler le probléme....
Je n'ai peut etre pas utiliser les bonne commandes pour stopper mon combat...
Je me demandais aussi si mettre un simple
DelayCommand( 1.0, ClearAllActions());
ne suffirait pas pour stoper le combat...

Merci d'avance

Prophetia

Par eMRaistlin le 14/2/2003 à 12:50:36 (#3236807)

Si c'est pour faire une animation, je te conseille de faire un SetPlotFlag(TRUE) ^^, ce sera plus simple : apres, tu fais un delay pour arreter le combat une fois que tu trouve qu'ils se sont assez battus...

Pour le reste, bein... je vois pas trop, mais ton explication semble logique...

Par Prophetia Astrae le 14/2/2003 à 13:14:58 (#3237018)

Et bien en fait, le script est utilisé dans le cas ou un PC ataque un des garde de ma ville. Dans ce cas, le combat s'engage, si le Garde prend le dessus, au lieu de tuer le PC, quand il passe en dessous d'un nombre de point de vie définit, le combat s'arrete, le PC est mis dans le noir avec une annimation de mort avec un petit text disant: "N'étant plus en mesure de tenir tête au garde, celui-ci vous assome d'un seul coup".
Ensuite le PC est teleporté dans une celule dont la porte est automatiquement fermée à clef avec un petit texte disant: "A votre reveil, vous vous trouvez dans une petite piéce sombre, humide et froide qui semble être un cachot".

Ensuite il y a tout une quéte, mais bon là n'est pas le probléme, mon probleme c'est l'arret du combat.... :aide:


Prophetia

Par Prophetia Astrae le 14/2/2003 à 13:38:10 (#3237202)

Je crois que je ne vais pas m'embeter, j'ai trouvé mieux et je pense que c'est tout de meme plus propre.
En fait je vais laisser aller le combat jusqu'à la fin et gerer ma petite annimation dans le OnPlayerDeath ou dans le OnPlayerDying en faisant un test sur le GetLastKiller()

Je pense que c'est le mieu

Mais merci pour tout

Prophetia

Par Jedaï le 14/2/2003 à 16:31:42 (#3238528)

D'après ce que j'en ai compris, la fonction miracle pour ceci c'est SurrenderToEnemies(), elle marche vraiment très bien !:)

JOL Archives 1.0.1
@ JOL / JeuxOnLine