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=1f6c3abaaf7069fe0651f8e4f4dd4008Mé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

Sort de sommeil de zone
Aller à la page 1, 2  Suivante
 
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
 Ørß
Ptit Nouveau


Inscrit le: 26 Aoû 2012
Messages: 37
Sujets: 9



MessagePosté le: 10/04/17 22:31    Sujet du message: Sort de sommeil de zone Citer

Bonsoir à tous,

J'ai envie de faire un sort de sommeil en aoe non sélectionnable.
En gros quand on appuie sur le sort on prends un nombre d'unité qui dépende du level du sort dans une zone autour du héros et on les fait dormir.

J'ai quelque problème avec le "random x unit in range"
J'en suis arrivée à ça. (cliquer pour plus gros)


Plusieurs questions :

D'abord, mon "random" prends toujours la même unité...
Ensuite si je fais un "random de 2 unit in range etc..." et que je fais un "torpeur to picked unit", ça me renvoi qu'une seule cible. (ou alors il sélectionne 2 fois la même ?)
Et pour finir j'aimerai bien qu'il ne sélectionne pas une cible qui dort déjà.

Je pense que la condition sur le sommeil s'applique au lanceur de sort (dans mon exemple) et non aux cibles potentielles.
Comment remédier à ça ?

Je suis disponible pour toute question.
Merci d'avance.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 florianlenecro
Floodeur prématuré


Inscrit le: 12 Nov 2009
Messages: 711
Sujets: 50
Spécialité en worldedit: Vétéran


MessagePosté le: 11/04/17 09:27    Sujet du message: Citer

Wow,
Ca c'est du leak a gogo.
Tout d'abord je te conseille ces petits tutos pour l'utilisation des variables puis leur gestion pour éviter les leaks:
- Variable
- Variable
- Gestion leaks

Ensuite pour ton problème, tout d'abord tu crées une variable Groupe unité, tu l'init au debut de ton déclencheur ou Actions de tes IF/THEN/ELSE avec ton groupe (Random x unit(...)). Note ici que le random et units within range forme de 2 leak potentiel
Ensuite tu utilises ta variable(groupe random) dans ton pick every unit et appliques les mêmes actions.
_________________
C'est en forgeant que l'on devient forgeron
"Le feu ne peut tuer le dragon"
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Ørß
Ptit Nouveau


Inscrit le: 26 Aoû 2012
Messages: 37
Sujets: 9



MessagePosté le: 11/04/17 20:46    Sujet du message: Citer

Ok merci des indications, j'avoue que je connais pas du tout cette histoire de leak.

Je suis arrivé à ça.


Apparament ma sélection d'unité plante encore, la plupart du temps 1 seule unité est sélectionne et même parfois aucune :/
J'arrive pas non plus à empêcher le random de sélectionner une unité qui dors déjà.

Je suis bien conscient qu'il faut optimiser ce qu'on fait mais j'aimerai bien que ça marche d'abord. Cependant comment je gère le leak potentiel du random et celui du unit in range ?
Dois-je créer des variables pour les initialiser préalablement puis les détruire comme pour le groupe ?

Merci
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 florianlenecro
Floodeur prématuré


Inscrit le: 12 Nov 2009
Messages: 711
Sujets: 50
Spécialité en worldedit: Vétéran


MessagePosté le: 12/04/17 12:42    Sujet du message: Citer

Pourquoi tu fais une boucle qui se répete au lieu de mettre Random "x" unit ( ... )?

Donc tu as soit ce choix soit, tu crées un autre groupe qui va contenir ( unit within "r" range ..) et a chaque itération tu fais un groupe unité remove unit de ton unité choisi aléatoirement.
_________________
C'est en forgeant que l'on devient forgeron
"Le feu ne peut tuer le dragon"
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Ørß
Ptit Nouveau


Inscrit le: 26 Aoû 2012
Messages: 37
Sujets: 9



MessagePosté le: 12/04/17 20:55    Sujet du message: Citer

Comme ça alors ?


J'ai réussi à ne plus prendre ceux qui dorment même si ça à l'air lourd.
Par contre j'ai toujours le même problème, desfois ça endort aucun mec ou juste un.
J'imagine que lorsque le random sélectionne un ennemis qui dort et que le test l'écarte il reste plus que une ou zéro cibles potentiel.

Jpensais pas me prendre la tête à ce point pour juste ça xD Ou alors mon raisonnement est nul
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 florianlenecro
Floodeur prématuré


Inscrit le: 12 Nov 2009
Messages: 711
Sujets: 50
Spécialité en worldedit: Vétéran


MessagePosté le: 12/04/17 21:34    Sujet du message: Citer

Il y a de forte chance que ca vienne du fait que ton dummy meurt avant d'avoir cast sachant que 1 cast c'est 1s min sans oublié la rotation de l'unité possible avant le cast
_________________
C'est en forgeant que l'on devient forgeron
"Le feu ne peut tuer le dragon"
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Chaosium
Floodeur prématuré


Inscrit le: 31 Aoû 2007
Messages: 606
Sujets: 12
Spécialité en worldedit: Enchanteur des enchantements.


MessagePosté le: 13/04/17 09:37    Sujet du message: Citer

J'avoue qu'une seconde c'est juste pour un dummy. Assure-toi qu'il ait 0.00 en animation lancer point dans l'éditeur d'unité, au moins les sorts seront instantanés.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 florianlenecro
Floodeur prématuré


Inscrit le: 12 Nov 2009
Messages: 711
Sujets: 50
Spécialité en worldedit: Vétéran


MessagePosté le: 13/04/17 12:42    Sujet du message: Citer

le temps de cast est tj 1s même si tu mets en dessous de 1 si je me rappelle bien donc met ton exipration timer à 2 ou 3s
_________________
C'est en forgeant que l'on devient forgeron
"Le feu ne peut tuer le dragon"
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Toc@rd
Membre actif


Inscrit le: 14 Avr 2009
Messages: 175
Sujets: 17
Spécialité en worldedit: Décors


MessagePosté le: 13/04/17 19:35    Sujet du message: Citer

Salut,

Voilà comment je fais pour ce genre de chose ; c'est une furie de zone sur les alliés mais ça marche pareil que ce que tu veux faire :

Gui:
Trigger:
Lancement Furie
Collapse Evénements
Unité - A unit Initie l'effet d'une compétence
Collapse Conditions
(Ability being cast) Egal à  Frénésie tribale
Collapse Actions
Custom script:   set udg_UltimeGroupUnit[3] = CreateGroup()
Set POSITIONOFUNIT[1] = (Position of (Casting unit))
Collapse Groupe unité - Pick every unit in (Units within 900.00 of POSITIONOFUNIT[1] matching ((((Matching unit) is Un bâtiment) Egal à  FALSE) and ((((Matching unit) is Mécanique) Egal à  FALSE) and (((Owner of (Matching unit)) Egal à  Joueur 1 (Rouge)) and (((Matching unit) is alive) Egal à  TRUE) and do (Actions)
Collapse Boucle - Actions
Groupe unité - Add (Picked unit) to UltimeGroupUnit[3]
Set UltimeNombreUnits = (Number of units in UltimeGroupUnit[3])
Collapse For each (Integer A) from 1 to UltimeNombreUnits, do (Actions)
Collapse Boucle - Actions
Set DUMMIES[5] = (Random unit from UltimeGroupUnit[3])
Unité - Create 1 Dummy Furie des Jungles for Joueur 1 (Rouge) at POSITIONOFUNIT[1] facing Orientation bâtiment par défaut degrees
Unité - Add a 2.00 second Générique expiration timer to (Last created unit)
Unité - Order (Last created unit) to Chaman orc - Furie sanguinaire DUMMIES[5]
Groupe unité - Remove DUMMIES[5] from UltimeGroupUnit[3]
Groupe unité - Remove all units from UltimeGroupUnit[3]
Set DUMMIES[5] = Pas d'unité
Custom script:   call RemoveLocation( udg_POSITIONOFUNIT[1] )
Custom script:   call DestroyGroup( udg_UltimeGroupUnit[3] )
Custom script:   set udg_UltimeGroupUnit[3] = null


En gros tu utilises "units in range matching conditions" plutôt que simplement units in range, comme ça tu peux faire une liste d'exceptions (que les ennemis, etc). Après, dés qu'une unité a reçu son effet, tu la sort du groupe comme ça elle ne peut pas être re-ciblée.

Si y'a des trucs que tu ne comprends pas n'hésite pas.

PS : Plutôt que d'utiliser des images pour nous montrer, fais clic droit sur ton déclencheur / ta fonction, puis "copier comme texte" et colle le sur le forum entre les balises Gui.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Ørß
Ptit Nouveau


Inscrit le: 26 Aoû 2012
Messages: 37
Sujets: 9



MessagePosté le: 13/04/17 19:50    Sujet du message: Citer

En fait le problème que j'ai c'est que lorsqu'il sélectionne les 2 unités aléatoires il prend celle qui dort. Et ensuite dans mon test il soustrait les unités qui dort donc il me reste plus que une cible ou même aucune.

Mais j'arrive pas à faire la bonne condition parce que si je fais ça :
Gui:
Trigger:
Set SleepGroupTarget = (Random 2 units from (Units within 800.00 of (Position of (Triggering unit)) matching (((Matching unit) has buff Torpeur) Egal à  TRUE)))


Ca marche même plus xD, Si je dis "picked units" ça marche que pour "pick every unit...." et si je dis "triggering unit" ca se réfère au lançeur de sort.

J'arrive pas à faire référence aux unités que le random à séléctionner

EDIT: Je regarde ta solution Toc@rd
Ok je ferai un retour dès que possible, mais je peux pas ce soir Smile
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Chaosium
Floodeur prématuré


Inscrit le: 31 Aoû 2007
Messages: 606
Sujets: 12
Spécialité en worldedit: Enchanteur des enchantements.


MessagePosté le: 13/04/17 21:39    Sujet du message: Citer

Après tu peux faire Pick every unit in SleepGroupTarget et là picked unit marchera.

Aussi, si dans ta condition tu dis que matching unit a le buff égal à TRUE, ça veut dire que les actions suivantes n'affecteront que les unités qui sont déjà endormies, essaye avec false.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Ørß
Ptit Nouveau


Inscrit le: 26 Aoû 2012
Messages: 37
Sujets: 9



MessagePosté le: 13/04/17 22:47    Sujet du message: Citer

Citation:
Aussi, si dans ta condition tu dis que matching unit a le buff égal à TRUE, ça veut dire que les actions suivantes n'affecteront que les unités qui sont déjà endormies, essaye avec false.


=> Je viens d'essayer cela ne change rien apparemment.

Gui:
Trigger:
Set DUMMIES[5] = (Random unit from UltimeGroupUnit[3])


Et la j'ai un léger problème, elle est de type quoi cette variable ?
Parce que si c'est unité, il me propose pas de faire un random d'un groupe (dafuck ?)
Et si c'est un groupe d'unité, bah je peux pas cibler un group d'unité (à la place de picked unité) depuis
Gui:
Trigger:
Unité - Order (Last created unit) to Seigneur de l'épouvante mort-vivant - Torpeur (Picked unit)

_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Toc@rd
Membre actif


Inscrit le: 14 Avr 2009
Messages: 175
Sujets: 17
Spécialité en worldedit: Décors


MessagePosté le: 14/04/17 16:29    Sujet du message: Citer

Là je pars pour deux jours, mais si lundi t'y es toujours pas arrivé pas je te le ferai. Essaye de refaire ton sort selon la même architecture que ma furie, elle marche très bien et n'a normalement aucun leak.

(UltimeGroupUnit est une variable groupe unité oui.)

Joyeuses Pacques à tous.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Ørß
Ptit Nouveau


Inscrit le: 26 Aoû 2012
Messages: 37
Sujets: 9



MessagePosté le: 15/04/17 15:31    Sujet du message: Citer

Le problème que j'ai c'est que :
Gui:
Trigger:
Groupe unité - Remove all units of Dummies[1] from SleepGroupTarget


Je peux pas enlever une seule unité, si j'utilise remove unit il me demande une unité en entrer et comme j'ai un groupe d'unité, non sérieux soi y'a une commande que j'ai pas soit y'a un truc super utile dont j'ignore l'existence.

Du coup j'ai ça :
Gui:
Trigger:
Actions
Collapse If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Collapse Si - Conditions
(Level of Sommeil léthargique  for (Triggering unit)) Egal à  1
Collapse Alors - Actions
Collapse Groupe unité - Pick every unit in (Random 2 units from (Units within 800.00 of (Position of (Triggering unit)) matching (((Matching unit) has buff Torpeur) Egal à  FALSE))) and do (Actions)
Collapse Boucle - Actions
Groupe unité - Add (Picked unit) to SleepGroupTarget
Set Nb_Sleep_Target = (Number of units in SleepGroupTarget)
Collapse For each (Integer A) from 1 to Nb_Sleep_Target, do (Actions)
Collapse Boucle - Actions
Set Dummies[1] = (Random 1 units from SleepGroupTarget)
Unité - Create 1 dummy for Joueur 1 (Rouge) at ((Position of (Triggering unit)) offset by (10.00, 10.00)) facing Orientation bâtiment par défaut degrees
Unité - Add Torpeur (Sommeil Léthargique) to (Last created unit)
Unité - Add a 2.50 second Générique expiration timer to (Last created unit)
Unité - Order (Last created unit) to Seigneur de l'épouvante mort-vivant - Torpeur (Picked unit)
Groupe unité - Remove all units of Dummies[1] from SleepGroupTarget
Groupe unité - Remove all units of SleepGroupTarget from SleepGroupTarget
Custom script:   call DestroyGroup( udg_SleepGroupTarget)
Collapse Sinon - Actions


EDIT: Si j'ai besoin d'aide sur un autre truc, je refait un topic ou je poste à la suite ? C'est pour faire disparaître un debuff ou tout du moins ne pas l'afficher
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Chaosium
Floodeur prématuré


Inscrit le: 31 Aoû 2007
Messages: 606
Sujets: 12
Spécialité en worldedit: Enchanteur des enchantements.


MessagePosté le: 16/04/17 20:52    Sujet du message: Citer

Je viens de remarquer un truc :

Gui:
Trigger:
Pick every unit in (Random 2 units from (Units within 800.00 of (Position of (Triggering unit)) matching (((Matching unit) has buff Torpeur) Egal à  FALSE))) and do (Actions)


Ton matching là il inclue le lanceur de sort en fait, à mon avis ce qu'il se passe c'est que ton dummy essaye de lancer la torpeur sur ton héros, mais ça marche pas vu que c'est une de tes unités, donc ça fait une unité en moins dans ton groupe. Il faut que tu rajoutes une condition "matching unit is an enemy of player égal à TRUE", et éventuellement une autre "matching unit is alive égal à TRUE", sinon ça peut techniquement inclure les unités mortes à portée.

Pour ton autre problème, si c'est pas directement lié à ça, mieux vaut créer un autre sujet oui.

Edit: J'avais mis ally au lieu d'enemy.
_________________
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
Aller à la page 1, 2  Suivante
Page 1 sur 2

 
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