Posté le: 06/05/12 16:56 Sujet du message: Shadowstep
Bonjour (soir ?)
J'ai créé un sort, enfin créé...je l'ai fais tout seul de mes propres mains avec le sort Pas de l'ombre du voleur dans WoW comme modèle. Le but de ce sort est que le héros qui l'utilise se téléporte sur son adversaire et voit ses dégâts augmenté pour son prochain coup blanc. Je voulais donc savoir si il ne possédait pas d'erreur et si il y avait moyen de l'améliorer.
Secret:
Pour apprendre le sort
Secret:
Gui:
Trigger:
Evénements
Unité - A unit Apprend une compétence
Conditions
(Learned Hero Skill) Egal à Pas de l'ombre
Actions
Set shadowstep = (shadowstep + 1)
L'effet du sort
Secret:
Gui:
Trigger:
Evénements
Unité - A unit Achève le lancement d'une compétence
Conditions
(Ability being cast) Egal à Pas de l'ombre
Actions
Custom script: local effect udg_TmpEffect = null
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
shadowstep Egal à 1
Alors - Actions
Set TmpPoint = (Position of (Target unit of ability being cast)) Unité - Move (Triggering unit) instantly to TmpPoint Effet spécial - Create a special effect at (Position of (Triggering unit)) using ObjectsSpawnmodelsNightElfEntBirthTargetEntBirthTarget.mdl Custom script: call RemoveLocation( udg_TmpPoint ) Set TmpEffect = (Last created special effect) Effet spécial - Destroy TmpEffect Héros - Modify Agilité of (Triggering unit): Ajouter 50 Wait 0.50 seconds Héros - Modify Agilité of (Triggering unit): Soustraire 50
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
shadowstep Egal à 2
Alors - Actions
Set TmpPoint = (Position of (Target unit of ability being cast)) Unité - Move (Triggering unit) instantly to (Position of (Target unit of ability being cast)) Effet spécial - Create a special effect at (Position of (Triggering unit)) using ObjectsSpawnmodelsNightElfEntBirthTargetEntBirthTarget.mdl Custom script: call RemoveLocation( udg_TmpPoint ) Set TmpEffect = (Last created special effect) Effet spécial - Destroy TmpEffect Héros - Modify Agilité of (Triggering unit): Ajouter 75 Wait 0.50 seconds Héros - Modify Agilité of (Triggering unit): Soustraire 75
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
shadowstep Egal à 3
Alors - Actions
Set TmpPoint = (Position of (Target unit of ability being cast)) Unité - Move (Triggering unit) instantly to (Position of (Target unit of ability being cast)) Effet spécial - Create a special effect at (Position of (Triggering unit)) using ObjectsSpawnmodelsNightElfEntBirthTargetEntBirthTarget.mdl Custom script: call RemoveLocation( udg_TmpPoint ) Set TmpEffect = (Last created special effect) Effet spécial - Destroy TmpEffect Héros - Modify Agilité of (Triggering unit): Ajouter 100 Wait 0.50 seconds Héros - Modify Agilité of (Triggering unit): Soustraire 100
Sinon - Actions
EDIT : j'ai modifier mon déclencheur pour éviter les leaks....enfin normalement _________________
Un jour je finirai une map W3
Dernière édition par tetronitte le 06/05/12 17:53; édité 2 fois
Inscrit le: 03 Mar 2012 Messages: 136 Sujets: 4 Spécialité en worldedit: Les choses chiantes et inutiles
Posté le: 06/05/12 17:29 Sujet du message:
Je vois un petit soucis :
-Ton héros donne t-il un coup à la cible du sort? C'est possible qu'il le fasse automatiquement, mais il pourrait y avoir des problèmes si une autre unité se trouve à côté et que ce soit celle-ci qui est attaqué. Si il en donne pas, il y a une commande [Unité] (issue order...) pour demander à une unité d'en attaquer une autre _________________
Sur tous mes test, même dans une grosse mêlée, le héros frappe toujours la cible qu'il vient de sélectionner. Mais j'ai un autre problème avec ce sort
Le sort de base c'est le Hex et j'ai viré toutes les options mais transforme toujours la cible. Sur une map de test de sort celui-ci marche mais pas sur Fire of Dongeon. J'ai essayé de faire le sort canaliser mais j'ai un peut de mal à le configurer _________________
Inscrit le: 14 Oct 2009 Messages: 719 Sujets: 40 Spécialité en worldedit: Les bugs Médailles: 1 (En savoir plus...)
Posté le: 06/05/12 18:00 Sujet du message:
Puisque les actions sont à peu près les mêmes, tu pourrait tout regrouper et juste mettre des conditions pour les dégâts, ou encore mieux faire que les dégâts soient égaux à 25 + 25x le niveau du sort du héros.
Sinon les des dernières conditions n'utilisent pas TmpPoint, créant du leak comme tu l'as dit.
Le gros problème de ce sort, c'est l'augmentation de dégâts sur la prochaine attaque. Comme l'a dit Ashgran, il serait préférable de donner l'ordre à l'unité d'attaquer, parce qu'on est jamais sûr : si le joueur décide de backer à ce moment là, les dégâts ne seront pas augmentés sur l'attaque suivante, cette augmentation ne durant que 0.5 (voir 0.8) secondes. De même si le héros échoue sont attaque, ou s'il attaque plusieurs fois (ce qui peut arriver vu la dose d'agilité apportée) en 0.5 seconde, des problèmes surviendront. Mais ces problèmes, on ne peut pas (ou difficilement) les contourner, donc on ne peut pas vraiment te le reprocher.
Edit : Il me semble que le premier déclencheur est inutile : il existe une fonction disponible en GUI renvoyant le niveau d'un sort pour une unité. _________________
Sinon les des dernières conditions n'utilisent pas TmpPoint, créant du leak comme tu l'as dit.
J'ai pas très bien compris, je pense qu'il manque un mot dans ta phrase
Après pour le premier déclencheur, je ne sais pas comment faire autrement, pour le moment.
Je pense que je vais vous suivre et changer la modification de l'agilité par des dégâts direct vie le déclencheur "damage target..." en fonction de l'agilité du héros + 50/75/100 _________________
Inscrit le: 14 Oct 2009 Messages: 719 Sujets: 40 Spécialité en worldedit: Les bugs Médailles: 1 (En savoir plus...)
Posté le: 06/05/12 18:22 Sujet du message:
tetronitte a écrit:
Sapeur-Goblin a écrit:
Sinon les des dernières conditions n'utilisent pas TmpPoint, créant du leak comme tu l'as dit.
J'ai pas très bien compris, je pense qu'il manque un mot dans ta phrase
Désolé, je voulais dire : dans les deux dernières conditions (pour vérifier le niveau du sort du héros) la variable TmpPoint n'est pas utilisée quand tu téléportes l'unité, donc ça crée un leak.
Citation:
Après pour le premier déclencheur, je ne sais pas comment faire autrement, pour le moment.
Je pense que je vais vous suivre et changer la modification de l'agilité par des dégâts direct vie le déclencheur "damage target..." en fonction de l'agilité du héros + 50/75/100
Je pense que c'est la meilleure solution ; il n'y aura aucun problème.
Et après ces améliorations, go le rendre multi-instanciable .
Edit : Même pas besoin d'utiliser cette condition Lord, tu fais juste une multiplication et tu boucle 3 lignes en une . _________________
J'ai changer les dégâts donc il n'y a plus de wait. Ca donne çà :
Gui:
Trigger:
Unité - Cause (Target unit of ability being cast) to damage (Triggering unit), dealing ((Real((Agilité of (Triggering unit) (Inclure bonuses)))) + 75.00) damage of attack type Héros and damage type Poison
Après je ne comprends pas pourquoi çà créera un leak dans les 2 dernières conditions alors quand dans la première çà ne leakera pas ^^'
Et pour changer ta condition avec "level of ability for trigerringunit Egal à un certain niveau", le un certain niveau je ne vois pas quoi mettre dedans.
Sapeur-Goblin a écrit:
Edit : Même pas besoin d'utiliser cette condition Lord, tu fais juste une multiplication et tu boucle 3 lignes en une .
J'ai pas compris
EDIT : enfait je pense avoir compris pour tout mettre dans une seule boucle grâce à la condition de Lord _________________
Inscrit le: 11 Fév 2011 Messages: 2151 Sujets: 114 Spécialité en worldedit: Chasser le Dragon, puis l'exterminer proprement avec une petite cuillère et une poêle.
Posté le: 06/05/12 18:46 Sujet du message:
N'utilise pas de waits. Utilise l'évènement : A unit Initie l'effet d'une compétence.
Ton sort n'est pas MUI et bug si plusieurs unités le possède.
A la place de la variable shadowstep, fonctionne avec le niveau de la compétence. A la place de faire ces if then else horribles, fait un calcul pour modifier l'agilité de ton unit par rapport au niveau de la compétence :
25 + 25 * Level of Shadow Step for Triggering Unit
Après, tu n'as pas besoin de la variable TmpEffect. Tu peut utiliser directement Destroy Last created special effect.
La position de l'effet spécial leak. _________________
Unité - A unit Achève le lancement d'une compétence
Conditions
(Ability being cast) Egal à Shadowstep
Actions
Custom script: local effect udg_TmpEffect = null
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Level of Pas de l'ombre for (Triggering unit)) Egal à 1
Alors - Actions
Set TmpPoint = (Position of (Target unit of ability being cast)) Unité - Move (Triggering unit) instantly to TmpPoint Effet spécial - Create a special effect at (Position of (Triggering unit)) using ObjectsSpawnmodelsNightElfEntBirthTargetEntBirthTarget.mdl Custom script: call RemoveLocation( udg_TmpPoint ) Effet spécial - Destroy (Last created special effect) Unité - Cause (Target unit of ability being cast) to damage (Triggering unit), dealing ((Real((Agilité of (Triggering unit) (Inclure bonuses)))) + 50.00) damage of attack type Héros and damage type Poison
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Level of Pas de l'ombre for (Triggering unit)) Egal à 2
Alors - Actions
Set TmpPoint = (Position of (Target unit of ability being cast)) Unité - Move (Triggering unit) instantly to (Position of (Target unit of ability being cast)) Effet spécial - Create a special effect at (Position of (Triggering unit)) using ObjectsSpawnmodelsNightElfEntBirthTargetEntBirthTarget.mdl Custom script: call RemoveLocation( udg_TmpPoint ) Effet spécial - Destroy (Last created special effect) Unité - Cause (Target unit of ability being cast) to damage (Triggering unit), dealing ((Real((Agilité of (Triggering unit) (Inclure bonuses)))) + 75.00) damage of attack type Héros and damage type Poison
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Level of Pas de l'ombre for (Triggering unit)) Egal à 3
Alors - Actions
Set TmpPoint = (Position of (Target unit of ability being cast)) Unité - Move (Triggering unit) instantly to (Position of (Target unit of ability being cast)) Effet spécial - Create a special effect at (Position of (Triggering unit)) using ObjectsSpawnmodelsNightElfEntBirthTargetEntBirthTarget.mdl Custom script: call RemoveLocation( udg_TmpPoint ) Effet spécial - Destroy (Last created special effect) Unité - Cause (Target unit of ability being cast) to damage (Triggering unit), dealing ((Real((Agilité of (Triggering unit) (Inclure bonuses)))) + 100.00) damage of attack type Héros and damage type Poison
Sinon - Actions
J'ai essayer de vous suivre mais j'ai eus un peu trop d'info d'un coup
A partir de là qu'est ce que je devrais changer ? _________________
Un jour je finirai une map W3
Dernière édition par tetronitte le 06/05/12 19:11; édité 1 fois
Inscrit le: 14 Oct 2009 Messages: 719 Sujets: 40 Spécialité en worldedit: Les bugs Médailles: 1 (En savoir plus...)
Posté le: 06/05/12 18:56 Sujet du message:
tetronitte a écrit:
Sapeur-Goblin a écrit:
Edit : Même pas besoin d'utiliser cette condition Lord, tu fais juste une multiplication et tu boucle 3 lignes en une .
J'ai pas compris
Puisque au niveau 1, ta compétence fait 50 points de dégâts, au niveau 2, 75, et au niveau 3, 100, on peut remarquer que la relation 25 + 25 x niveau lie les dégâts et le niveau de la capacité. Ensuite tu n'as plus qu'à faire ce calcul, en utilisant la fonction te donnant le niveau de la capacité pour l'unité, ce qui te permet de ne pas utiliser de conditions. _________________
Ayès j'ai enfin compris, enfin je pense. Ca donnerais donc çà :
Secret:
Gui:
Trigger:
Evénements
Unité - A unit Achève le lancement d'une compétence
Conditions
(Ability being cast) Egal à Shadowstep
Actions
Set TmpPoint = (Position of (Target unit of ability being cast)) Unité - Move (Triggering unit) instantly to TmpPoint Custom script: call RemoveLocation( udg_TmpPoint ) Set TmpPoint = (Position of (Triggering unit)) Effet spécial - Create a special effect at TmpPoint using ObjectsSpawnmodelsNightElfEntBirthTargetEntBirthTarget.mdl Custom script: call RemoveLocation( udg_TmpPoint ) Effet spécial - Destroy (Last created special effect) Unité - Cause (Target unit of ability being cast) to damage (Triggering unit), dealing ((Real((Agilité of (Triggering unit) (Inclure bonuses)))) + (25.00 + (25.00 x (Real((Level of Pas de l'ombre for (Triggering unit))))))) damage of attack type Héros and damage type Poison
EDIT : dites moi si je me trompe mais, si çà leak c'est parce que j'ai utiliser 2 fois la variable TmpPoint ? Alors je me demandais, c'est faisable de lui mettre un déploiement ? _________________
Inscrit le: 14 Oct 2009 Messages: 719 Sujets: 40 Spécialité en worldedit: Les bugs Médailles: 1 (En savoir plus...)
Posté le: 06/05/12 19:38 Sujet du message:
tetronitte a écrit:
EDIT : dites moi si je me trompe mais, si çà leak c'est parce que j'ai utiliser 2 fois la variable TmpPoint ? Alors je me demandais, c'est faisable de lui mettre un déploiement ?
Non, tu n'as pas compris ce que je disais.
Regarde dans ta deuxième condition, quand tu appelais la fonction pour téléporter l'unité tu mettais Position of (Target unit of ability being cast) et non TmpPoint. Donc ça crée un leak. De même dans la troisième condition. _________________
tetronitte a écrit:
EDIT : dites moi si je me trompe mais, si çà leak c'est parce que j'ai utiliser 2 fois la variable TmpPoint ? Alors je me demandais, c'est faisable de lui mettre un déploiement ?
Non, tu n'as pas compris ce que je disais.
Regarde dans ta deuxième condition, quand tu appelais la fonction pour téléporter l'unité tu mettais Position of (Target unit of ability being cast) et non TmpPoint. Donc ça crée un leak. De même dans la troisième condition.
Ha ok, c'était juste un oubli, mais au final maintenant que j'ai changé mon déclo et qu'il n'y a plus de condition je n'ai plus ce problème. Et tu n'as pas vraiment répondu à ma question. Dans ce déclencheur :
Gui:
Trigger:
Actions
Set TmpPoint = (Position of (Target unit of ability being cast)) Unité - Move (Triggering unit) instantly to TmpPoint Custom script: call RemoveLocation( udg_TmpPoint ) Set TmpPoint = (Position of (Triggering unit)) Effet spécial - Create a special effect at TmpPoint using ObjectsSpawnmodelsNightElfEntBirthTargetEntBirthTarget.mdl Custom script: call RemoveLocation( udg_TmpPoint ) Effet spécial - Destroy (Last created special effect) Unité - Cause (Target unit of ability being cast) to damage (Triggering unit), dealing ((Real((Agilité of (Triggering unit) (Inclure bonuses)))) + (25.00 + (25.00 x (Real((Level of Pas de l'ombre for (Triggering unit))))))) damage of attack type Héros and damage type Poison
Est-ce que çà leak ? Et si oui, est-ce du au fait que j'utilise 2 fois TmpPoint à la suite et dans ce cas faudrait-il mettre un déploiement ? _________________
Toutes les heures sont au format GMT + 1 Heure Aller à la page 1, 2Suivante
Page 1 sur 2 La question posée dans ce topic a été résolue !
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum