Page 1 sur 1

[SCRIPT] Comment faire disparaître une créature par téléportation ?

Posté : mar. 26 juil. 2005, 16:38
par Anomaly
Bonjour,

Ayant des bugs réellement pénibles et surtout aléatoires avec ça, je voudrais savoir si déjà je procède bien pour faire l'animation de départ de quelqu'un par téléportation (et sa disparition du jeu jusqu'à recréation après écoulement d'un compte à rebours).

Jusque là je faisais :

Code : Tout sélectionner

ForceSpell(Myself, WIZARD_DIMENSION_DOOR)
CreateVisualEffectObject("SPDIMNDR", Myself)
DestroySelf()
Mais j'ai vu d'autres codes qui utilise plutôt le sort DRYAD_TELEPORT ? Est-ce mieux ? Pareil ? Moins bien ?

Y'a-t-il un moyen d'obtenir automatiquement le sort d'animation de la téléportation, comme l'animation "inverse" obtenue par CreateCreatureDoor() ?

Est-ce que le DestroySelf() est indispensable ? Si je ne l'utilise pas, est-ce que la créature continue à exister (bien qu'on ne la voit plus) ? Si oui, où se trouve-t-elle ?

Merci d'avance :)

Posté : mar. 26 juil. 2005, 19:12
par Sous Nain
Plusieurs choses :

En ce qui concerne ton code initial :

Code : Tout sélectionner

ForceSpell(Myself, WIZARD_DIMENSION_DOOR)
CreateVisualEffectObject("SPDIMNDR", Myself)
DestroySelf()
Ici les deux premières lignes font grosso-modo la même chose :

- la première fait lancer le sort de téléportation sur soi-même, et donc fait juste apparaître l'animation de la porte dimensionnelle
- la deuxième fait évidement l'animation

Cela dit, ça devrait marcher, il me semble... donc je ne comprends pas bien quel genre de bug tu peux avoir avec ça.



Le sort DRYAD_TELEPORT joue à la fois l'animation de téléportation et détruit la créature, c'est donc une bonne solution pour faire disparaître n'importe quoi en une ligne de code. Auquel cas, un DestroySelf() est inutile.


Y'a-t-il un moyen d'obtenir automatiquement le sort d'animation de la téléportation, comme l'animation "inverse" obtenue par CreateCreatureDoor() ?
Je ne crois pas qu'il y ait de commande de destruction de créature avec l'animation de la téléportation, si c'est bien ce que tu veux dire.

Posté : mar. 26 juil. 2005, 20:17
par Anomaly
Encore une fois, tu me sauves, Sous-Nain ! Merci à toi, tu m'as aidé à comprendre et maintenant mon code fonctionne parfaitement. :)

En fait, tout buggait à cause de mon DestroySelf(). Si je faisais

Code : Tout sélectionner

ForceSpell(Myself, WIZARD_DIMENSION_DOOR)
DestroySelf()
Le perso lance son sort et est détruit avant qu'apparaisse l'animation de la porte dimensionnelle. C'est pour cette raison uniquement que j'avais lancé l'animation manuellement. Ça marchait la plupart du temps... mais parfois il arrivait que le DestroySelf() ne se fasse pas et que le perso reste sur l'écran (c'était mon bug).

Le même phénomène se produisait si je faisais

Code : Tout sélectionner

ForceSpell(Myself, DRYAD_TELEPORT)
DestroySelf()
Dans ce cas, la disparition du perso est quasi instantanée, sans animation.

Sans le DestroySelf(), le WIZARD_DIMENSION_DOOR fait bien apparaître l'animation de la porte, mais le perso ne s'en va pas. Par contre, DRYAD_TELEPORT fait à la fois l'animation et la disparition du perso, ce qui est exactement ce que je voulais.

Il fallait donc utiliser ForceSpell(Myself, DRYAD_TELEPORT) tout seul.

Merci encore pour ta réponse, tu m'as retiré une sacré épine du pied. :)