Worldedit
  Worldedit
Le site sur l'éditeur de warcraft 3 !
 
  FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs   medals.php?sid=ba6d3ec910f23ac903a31768352a90e2Médailles   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 
  FAQFAQ World Editor   UploadUploader une map ou une image    UploadAjouter sa map à l'annuaire   UploadConsulter l'annuaire

Problème... avec la fonction find next unit

 
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Aide sur les déclencheurs
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 Serial Bigouden
Membre actif


Inscrit le: 31 Oct 2007
Messages: 142
Sujets: 23
Spécialité en worldedit: Boarf


MessagePosté le: 05/11/07 17:18    Sujet du message: Problème... avec la fonction find next unit Citer

Bonjour !

Ne maitrisant actuellement pas le jass (je crois que jvais m'y mettre bientot...), j'utilise le célèbre weu, mais voilà j'ai un petit problème avec une des fonction "advanced".

Je cherche à créer un sort automatique, qui se déclenche à chaque tir du héros (comme flèche enflammée par exemple), et qui a pour effet de créer une dummy unit qui lance le sort de chaine d'éclair modifié pour n'atteindre qu'une cible et ne pas faire de dégats. J'utilise ensuite l'action damage target pour simuler les dégats du sort. Jusque là tout va bien...

Le problème est qu'ensuite, il y a 50% de chances pour que l'éclair ricoche sur une autre cible, et ainsi de suite... Les dégats diminuant au fur et à mesure. C'est cette seconde unité susceptible d'être touchée que je n'arrive pas à désigner : j'utilise la fonction "find next unit" en prenant comme position de base celle de la cible initiale du sort, et il semble bien que ce soit également celle désigné par la fonction que j'essaye d'utiliser (en jeu ça se traduit par un one shot de l'unité une fois sur deux...)

J'aimerais donc savoir comment faire pour trouver la plus proche des unités sans tomber sur la cible initiale, située dans un rayon calculé par mes soins, et qui appartiennent à l'adversaire du héros...

Pis si c'est possible aussi, j'aimerais savoir comment faire pour répéter les chances de rebond de l'éclair à l'infini, histoire de pas avoir un trigger de 5 pages de if/then/else ><

Vala merci d'avance ^^
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Bantas
Anomalie floodiforme


Inscrit le: 21 Aoû 2007
Messages: 1524
Sujets: 37

Médailles: 1 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 05/11/07 18:17    Sujet du message: Citer

Gargl un utilisateur du tristement célèbre WEU ! connu pour sa traduction complète et son augmentation rapide du poids des maps ! Télécharge en vitesse le JassNewGenPack ! Razz

Déjà il faut que tu saches que ce que tu veux faire est parfaitement faisable sans WEU.

Pour répéter la chaîne à l'infini, il suffit de faire une boucle "For each Integer from X to Y", en réduisant à chaque fois le nombre de dégâts par une division. A chaque fois, tu ajoutes la cible de l'éclair à un groupe. Quand tu choisis une nouvelle cible (unité au hasard dans un cercle autour de l'unité touchée précedemment), tu vérifies qu'elle n'est pas dans le groupe des touchés. Ensuite, si la cible choisie est égale à "Pas d'unité", tu règle l'entier que tu as choisi pour la boucle à Y, sinon tu le mets à X. Ca aura pour effet de terminer la boucle s'il n'y a plus de cibles.

Oui oui c'est compliqué, mais le sort le vaut bien Wink
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Serial Bigouden
Membre actif


Inscrit le: 31 Oct 2007
Messages: 142
Sujets: 23
Spécialité en worldedit: Boarf


MessagePosté le: 05/11/07 18:55    Sujet du message: Citer

Han merci beaucoup je connaissais pas le coup de l'entier variable *-*
Bon j'ai un peu galéré à rendre ma map compatible pour JassNewGenPack mais j'aovue que c'ets moins brouillon comme éditeur ^^"

Merci encore, jvais tester ça tout de suite :p
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Serial Bigouden
Membre actif


Inscrit le: 31 Oct 2007
Messages: 142
Sujets: 23
Spécialité en worldedit: Boarf


MessagePosté le: 05/11/07 21:28    Sujet du message: Citer

Alors petit compte rendu : ça marche presque à la perfection ^^"

Quelques petits problèmes cependant :

- Quand il y a un cadavre dans la zone, il peut être frappé par un éclair, et forcément le joli texte flottant s'affiche =/
J'ai trouvé une solution mais je crois qu'elle est un peu trop bricolée : j'ai rajouté dans les conditions du "random unit... matching conditions" le fait que la vie de l'unité devait être supérieure à 0. Y aurait-il moyen de faire mieux ?

- Je ne trouve pas quel événement peut correspondre à l'action de lancer un sort comme flèche enflammée lors d'une attaque. Lorsque la compétence est en lancement automatique, pas de problème : j'ai créé une variable boléenne qui prend la valeur true dès que la compétence est en auto, et qui devient false dès qu'une autre compétence le devient ou que l'unité reçoit l'ordre de désactiver le lancement automatique. L'événement est alors "une unité est attaquée" et dans les conditions figurent le mana nécessaire ainsi que la vérif de la variable citée plus haut. J'ai essayé de reproduire ce système pour le lancement actif du sort, en créant une autre variable, en la passant vraie lorsque le héros reçoit l'ordre de lancer le sort et la passant fausse lorsque le sort est lancé (même évenement). Malheureusement, le déclencheur n'entre en action qu'après une attaque normale :/

- Dernier problème : juste le temps du lancement du sort, l'aura de précision du héros se désative oO

Je crois que c'est tout mais c'est déjà pas mal ><
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Bantas
Anomalie floodiforme


Inscrit le: 21 Aoû 2007
Messages: 1524
Sujets: 37

Médailles: 1 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 05/11/07 21:34    Sujet du message: Citer

Citation:
- Quand il y a un cadavre dans la zone, il peut être frappé par un éclair, et forcément le joli texte flottant s'affiche =/
J'ai trouvé une solution mais je crois qu'elle est un peu trop bricolée : j'ai rajouté dans les conditions du "random unit... matching conditions" le fait que la vie de l'unité devait être supérieure à 0. Y aurait-il moyen de faire mieux ?

Filtres plutôt à l'entrée du groupe Wink (pareil pour les unités alliées, méfie toi !)

Citation:
- Je ne trouve pas quel événement peut correspondre à l'action de lancer un sort comme flèche enflammée lors d'une attaque. Lorsque la compétence est en lancement automatique, pas de problème : j'ai créé une variable boléenne qui prend la valeur true dès que la compétence est en auto, et qui devient false dès qu'une autre compétence le devient ou que l'unité reçoit l'ordre de désactiver le lancement automatique. L'événement est alors "une unité est attaquée" et dans les conditions figurent le mana nécessaire ainsi que la vérif de la variable citée plus haut. J'ai essayé de reproduire ce système pour le lancement actif du sort, en créant une autre variable, en la passant vraie lorsque le héros reçoit l'ordre de lancer le sort et la passant fausse lorsque le sort est lancé (même évenement). Malheureusement, le déclencheur n'entre en action qu'après une attaque normale :/

J'aimerais bien voir les déclencheurs en question. D'ailleurs j'ai un peu mal compris à quels moment ça bugue.

Citation:
- Dernier problème : juste le temps du lancement du sort, l'aura de précision du héros se désative oO

Tu veux dire que le graphique/les buffs n'aparaissent plus ? Oo
EDIT : C'est peut-être du à Canaliser. Vérifies si tu as bien mis à false le champ "Désactiver autres compétences"
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Serial Bigouden
Membre actif


Inscrit le: 31 Oct 2007
Messages: 142
Sujets: 23
Spécialité en worldedit: Boarf


MessagePosté le: 05/11/07 21:52    Sujet du message: Citer

Euh comment ça filtrer à l'entrée du groupe ? ^^"

Sinon pour le coup de l'aura qui se désactive, après observation ça se passe à chaque éclair, donc à chaque création de l'unité dummy.
EDIT: et non ça ne semble pas venir de la compétence canaliser, j'ai mis sur false ça n'a rien changé et surtout mon héros n'est pas pourvu de cette compétence ^^"

Et sinon voilà les triggers :

Gui:
Trigger:
Evénements
Unité - A unit Reçoit un ordre avec objet pour cible
Conditions
(Ordered unit) Egal à  Ranger
(Issued order) Egal à  (Order(blackarrow))
Actions
Set ATraitsDeFoudreInstant = TRUE



Gui:
Trigger:
Evénements
Unité - A unit Est attaqué
Conditions
(Attacking unit) Egal à  Ranger
(Mana of (Attacking unit)) Supérieur ou égal à  49.00
ATraitsDeFoudreInstant Egal à  TRUE
Actions
Set ATraitsDeFoudreInstant = FALSE
Set TraitDeFoudreDamage = (50.00 + (Real((Agilité of Ranger (Inclure bonuses)))))
Set TraitDeFoudreTarget = (Attacked unit)
Unité - Create 1 DummyUnit (Traits de foudre) for (Owner of Ranger) at ((Position of Ranger) offset by 50.00 towards (Facing of Ranger) degrees) facing Orientation bâtiment par défaut degrees
Unité - Order (Last created unit) to Prophète orc - Chaîne d'éclairs TraitDeFoudreTarget
Unité - Add a 0.50 second Générique expiration timer to (Last created unit)
Unité - Cause Ranger to damage TraitDeFoudreTarget, dealing TraitDeFoudreDamage damage of attack type Sorts and damage type Foudre
Texte flottant - Create floating text that reads (String((Integer(TraitDeFoudreDamage)))) at (Position of TraitDeFoudreTarget) with Z offset 10.00, using font size 10.00, color (20.00%, 0.00%, 80.00%), and 10.00% transparency
Texte flottant - Change (Last created floating text): Désactiver permanence
Texte flottant - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
Texte flottant - Change the fading age of (Last created floating text) to 1.00 seconds
Texte flottant - Change the lifespan of (Last created floating text) to 3.00 seconds
Groupe unité - Add TraitDeFoudreTarget to TraitDeFoudreGroupTarget
Set RandomPercentage = (Random integer number between 1 and 100)
Collapse For each (Integer LoopTraitDeFoudre) from 1 to 2, do (Actions)
Collapse Boucle - Actions
Collapse If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Collapse Si - Conditions
RandomPercentage Inférieur ou égal à  60
Collapse Alors - Actions
Set TraitDeFoudreDamage = (TraitDeFoudreDamage - (TraitDeFoudreDamage x 0.10))
Set TraitDeFoudreTargetSecondary = (Random unit from (Units within (200.00 + (5.00 x (Real((Intelligence of Ranger (Inclure bonuses)))))) of (Position of TraitDeFoudreTarget) matching (((Matching unit) Différent de TraitDeFoudreTarget) and (((Owner of (Matching unit)) Egal à  (Random player f
Wait 0.25 seconds
Unité - Create 1 DummyUnit (Traits de foudre) for (Owner of Ranger) at (Position of TraitDeFoudreTarget) facing Orientation bâtiment par défaut degrees
Unité - Order (Last created unit) to Prophète orc - Chaîne d'éclairs TraitDeFoudreTargetSecondary
Unité - Add a 0.50 second Générique expiration timer to (Last created unit)
Unité - Cause Ranger to damage TraitDeFoudreTargetSecondary, dealing TraitDeFoudreDamage damage of attack type Sorts and damage type Foudre
Texte flottant - Create floating text that reads (String((Integer(TraitDeFoudreDamage)))) at (Position of TraitDeFoudreTargetSecondary) with Z offset 10.00, using font size 10.00, color (20.00%, 0.00%, 80.00%), and 10.00% transparency
Texte flottant - Change (Last created floating text): Désactiver permanence
Texte flottant - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
Texte flottant - Change the fading age of (Last created floating text) to 1.00 seconds
Texte flottant - Change the lifespan of (Last created floating text) to 3.00 seconds
Groupe unité - Add TraitDeFoudreTargetSecondary to TraitDeFoudreGroupTarget
Groupe unité - Remove TraitDeFoudreTarget from TraitDeFoudreGroupTarget
Set TraitDeFoudreTarget = TraitDeFoudreTargetSecondary
Set TraitDeFoudreTargetSecondary = Pas d'unité
Set RandomPercentage = (Random integer number between 1 and 100)
Set LoopTraitDeFoudre = 1
Collapse Sinon - Actions
Set LoopTraitDeFoudre = 2

_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Bantas
Anomalie floodiforme


Inscrit le: 21 Aoû 2007
Messages: 1524
Sujets: 37

Médailles: 1 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 05/11/07 22:01    Sujet du message: Citer

Pour filtrer à l'entrée du groupe : Units In Range Matching X Wink

Pour ton déclencheur, je ne comprends pourquoi tu as mis "blackarrow" comme ordre : c'est l'ordre pour éxécuter en direct, et pas en automatique, non ?
Ensuite, je te conseilles de mettre ta boucle de 1 à 3, je me demande comment ça peut marcher actuellement.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Serial Bigouden
Membre actif


Inscrit le: 31 Oct 2007
Messages: 142
Sujets: 23
Spécialité en worldedit: Boarf


MessagePosté le: 05/11/07 22:11    Sujet du message: Citer

Oui blackarrow est l'ordre direct, en automatique ça marche très bien, et justement, étant donné que c'est en ordre direct, le sort devrait se lancer dès la prochaine attaque, or il ne par qu'à celle d'après.

Pour filtrer à l'entrée c'est bien ça que j'ai fait en fait ^^ (mais on le voit pas parce que la condition est trop longue ><)

Sinon je viens de tester l'histoire de l'aura, c'est bien le fait de créer une unité alliée dans le coin qui génère ce "bug", j'ai testé en créant l'unité pour le neutre passif, et ya plus de bug, par contre ya plus d'éclair non plus --" (j'ai aussi créé pour un ordi ennemi, histoire au cas où le neutre passif ne puisse cibler un neutre hostile avec un sort agressif, mais ça marche pas non plus oO)

Et pour la boucle, moi ça me parait normal que ça tourne comme ça, vu que la valeur de l'entier est remise à 1 à la fin. Quoique en fait tout dépend du moment auquel l'entier passe à 2 ><
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Bantas
Anomalie floodiforme


Inscrit le: 21 Aoû 2007
Messages: 1524
Sujets: 37

Médailles: 1 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 05/11/07 22:39    Sujet du message: Citer

Citation:
Sinon je viens de tester l'histoire de l'aura, c'est bien le fait de créer une unité alliée dans le coin qui génère ce "bug", j'ai testé en créant l'unité pour le neutre passif, et ya plus de bug, par contre ya plus d'éclair non plus --" (j'ai aussi créé pour un ordi ennemi, histoire au cas où le neutre passif ne puisse cibler un neutre hostile avec un sort agressif, mais ça marche pas non plus oO)

Tout simplement pour éviter que tu t'amuses à OS tes potes avec des sorts imba, les cibles sont limitées aux ennemis.

Citation:
Et pour la boucle, moi ça me parait normal que ça tourne comme ça, vu que la valeur de l'entier est remise à 1 à la fin. Quoique en fait tout dépend du moment auquel l'entier passe à 2 ><

Eh bien oui mais non, en passant la chose en Jass on voit qu'à chaque éxécution de la boucle il augmente la variable de 1. Donc, tu mets ta variable à 1, il l'augmente à 2, et donc en théorie ça s'arrête.
PS : En fait je viens de regarder, c'est quand c'est SUPERIEUR à 2 que ça s'arrête. Donc ton truc s'arrête bien quand il faut, et j'ai dis une bêtise.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Aide sur les déclencheurs Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
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


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com