Worldedit
  Worldedit
Le site sur l'éditeur de warcraft 3 !
 
  FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs   medals.phpMé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

Boucles d'actions d'unités temporaires

 
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
 Nirae
Ptit Nouveau


Inscrit le: 26 Aoû 2009
Messages: 10
Sujets: 2



MessagePosté le: 26/08/09 02:16    Sujet du message: Boucles d'actions d'unités temporaires Citer

Pwet !

Alors j'ignore si le titre est explicite ou accrocheur (oui bon ca on s'en fout) mais force est de constater qu'après bien des échecs je me lance dans un message pour demander conseil. Dans une map qui devrait logiquement sortir prochainement je m'attèle à un sort assez chiatique mais plutot sympa (sinon je le ferais pas). En gros ca donne ca :

Le héros invoque 3 unités différentes (donc on les crée via trigger)
On a un pal qui va flash heal en permanance le héros du joueur qui a lancé le sort
Un démoniste qui va faire des pluies de feu aléatoirement sur les unités ennemies à portée (512) et coller des malédictions sur les mêmes unités aléatoires autour de lui (ennemies évidemment)
Un chasseur des ombres qui va hex aléatoirement suivant le même principe que le démoniste et qui va surtout lancer des chaines de soin sur le héros qui a lancé le sort

C'est bon vous suivez ? xD Ok bon jusque là pour créer les unités pas de problème. Pour stocker les unités dans des variables d'unités (avec déploiement donc puisque la map comprendra plusieurs joueurs donc potentiellement plusieurs héros identiques) ca marche aussi.

Le souci vient principalement de l'indexation pour reconnaître le joueur qui manipule tel héros dans le trigger "boucle" qui dira de faire toutes les 2-3sec telle action sur tel perso etc.

Bon c'est pas propre ni rien mais ca donne ca (oui pour ceux qui reconnaissent c'est un héros basé sur la 1ere guilde mondiale de WoW c'est le petit trip de la map, héros surprise toussa)

Gui:
Trigger:
Glory of the Raider
Collapse Evénements
Unité - A unit Commence le lancement d'une compétence
Collapse Conditions
(Ability being cast) Egal à  (==) Glory of the Raider
Collapse Actions
Set Kungen[(Player number of (Owner of (Casting unit)))] = (Casting unit)
Set Ensidia[(Player number of (Owner of (Casting unit)))] = (Owner of (Casting unit))
Unité - Create 1 Mackzter (niveau 1) for (Owner of (Casting unit)) at (Position of (Casting unit)) facing Orientation bâtiment par défaut (270.0) degrees
Set Mackzter[(Player number of Ensidia[(Player number of (Owner of (Casting unit)))])] = (Last created unit)
Unité - Add Feu sacré to Mackzter[(Player number of Ensidia[(Player number of (Owner of (Casting unit)))])]
Unité - Set level of Feu sacré for Mackzter[(Player number of Ensidia[(Player number of (Owner of (Casting unit)))])] to 2
Unité - Add a 45.00 second Summoned Unit expiration timer to Mackzter[(Player number of Ensidia[(Player number of (Picked player))])]
Déclencheur - Run Mackzter rank 1 <gen> (checking conditions)
Unité - Create 1 Buzzkill (niveau 1) for (Owner of (Casting unit)) at (Position of (Casting unit)) facing Orientation bâtiment par défaut (270.0) degrees
Set Buzzkill[(Player number of Ensidia[(Player number of (Owner of (Casting unit)))])] = (Last created unit)
Unité - Add Pluie de flammes to Buzzkill[(Player number of Ensidia[(Player number of (Owner of (Casting unit)))])]
Unité - Set level of Pluie de flammes for Buzzkill[(Player number of Ensidia[(Player number of (Owner of (Casting unit)))])] to 2
Unité - Add a 45.00 second Summoned Unit expiration timer to Buzzkill[(Player number of Ensidia[(Player number of (Owner of (Casting unit)))])]
Déclencheur - Run Buzzkill rank 1 <gen> (checking conditions)
Unité - Create 1 Meka (niveau 1) for (Owner of (Casting unit)) at (Position of (Casting unit)) facing Orientation bâtiment par défaut (270.0) degrees
Set Mek[(Player number of Ensidia[(Player number of (Owner of (Casting unit)))])] = (Last created unit)
Unité - Add Hex to Mek[(Player number of Ensidia[(Player number of (Owner of (Casting unit)))])]
Unité - Add a 45.00 second Summoned Unit expiration timer to Mek[(Player number of Ensidia[(Player number of (Owner of (Casting unit)))])]
Déclencheur - Run Mek rank 1 <gen> (checking conditions)


Deja est-ce plus ou moins correct, et ensuite dans la boucle (donc un autre trigger) comment determiner que cette unité là appartient bien à tel joueur puisque l'indexation va me demander à chaque fois s'il s'agit du "owner of triggering/casting unit" et ca risque de foirer dans la mesure où il n'y a pas de casting unit dans le trigger "boucle" (ouais je sais pas si je suis clair la :/)

Bref un peu de lumière sur tout ca m'aiderait grandement. En gros faut retenir pour simplifier que 3 unités apparaissent et font des actions chacunes de leur coté en boucle jusqu'à expiration du timer =). Bon et pas taper s'il y a des aberrations pour vous, je suis loin d'être bon dans ce domaine :/

Merci d'avance Smile
_________________
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: 26/08/09 02:24    Sujet du message: Citer

J'avoue que je ne comprends pas le problème =o
Tu veux pouvoir reconnaître un joueur dans des actions futures nan ? Il suffit de l'enregistrer sur une variable, à déploiement comme les précédentes. D'ailleurs tu devrais utiliser quelques variables dans ce déclencheur pour alléger les calculs. Pour ce que j'en sais, récupérer 12 fois des choses telles que (Player number of (Owner of (Casting unit))) est plus lent que d'enregistrer une fois la valeur en question puis de la réutiliser 12 fois Wink

PS : Viens te présenter, dans le forum dédié, d'autant que tu as l'air de savoir un peu plus t'y prendre en déclencheur que le nouveau-membre-fantôme habituel Laughing
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Nirae
Ptit Nouveau


Inscrit le: 26 Aoû 2009
Messages: 10
Sujets: 2



MessagePosté le: 26/08/09 02:29    Sujet du message: Citer

Bah je veux en gros pouvoir le reconnaitre dans la mesure ou il peut y en avoir plusieurs qui possèdent ce même héros et pour éviter toute confusion dans les triggers. Bah j'avoue que récuperer 12 fois la même valeur c'est crade, vraiment crade et en plus assez lourd, seulement c'est parceque je parviens pas à lui donner une valeur fixe >_<

Je file me présenter, quel impoli Surprised
_________________
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: 26/08/09 02:38    Sujet du message: Citer

Bantas a écrit:
Tu veux pouvoir reconnaître un joueur dans des actions futures nan ? Il suffit de l'enregistrer sur une variable,

_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Nirae
Ptit Nouveau


Inscrit le: 26 Aoû 2009
Messages: 10
Sujets: 2



MessagePosté le: 26/08/09 02:43    Sujet du message: Citer

Ca j'avais bien saisi la logique, mais sur quoi je base l'indexation puisque j'utilise une variable joueur en déploiement ?

(j'essaie avec le "do multiple actions" en boucle ca peut m'eviter de créer 36 triggers chiants)
_________________
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: 26/08/09 02:49    Sujet du message: Citer

Nirae a écrit:
Ca j'avais bien saisi la logique, mais sur quoi je base l'indexation puisque j'utilise une variable joueur en déploiement ?
Ah. Effectivement, c'est gênant.
Il me semble qu'il y a moyen d'empêcher un joueur de contrôler ses unités dans les commandes cinématiques, ce qui te permettrait de garder le même possesseur et donc avoir le même index. Je vais ouvrir l'éditeur pour vérifier que ça existe.

Sinon, tu peux tenter avec la custom value, mais tu vas vite te rendre compte qu'une seule custom value par unité c'est beaucoup trop peu Sad

EDIT : Je m'étais planté, l'action mentionnée touche le contrôle sur toutes les unités d'un joueur.

EDIT² : Si tu as besoin des customs values pour autre chose (ce qui est fort probable), tu peux utiliser les hashtables. En l'occurrence ça donnerait quelque chose du genre :
Gui:
Trigger:
Custom script:   set udg_tmpHandle = bj_lastCreatedUnit
Table de hachage - Save (Player number of (Owner of (Casting unit))) as (Key tmpHandle) of keyGotR in (Last created hashtable)

Si tu mets ça après avoir créé une des unités, cela stockera le numéro du joueur sous une adresse correspondant à l'unité. Tu peux ensuite le récupérer sous la même adresse (cette fois il faudra que tu changes le custom script pour que ce soit égal à ta variable unité, avec udg_ devant). keyGotR est juste un chiffre qui va servir à identifier qu'il s'agît bien de données sur le sort Glory of the Raider. Des hacks de l'éditeur permettent d'avoir des entiers uniques sans s'embêter à les définir soit-même, mais je cause déjà de hashtables et de custom scripts à quelqu'un qui s'est inscrit y a une heure, donc je crois que je vais me limiter =)
Un des défauts de la hashtable est qu'il faut nettoyer les données, sinon elles y restent et occupent de la mémoire inutilement. N'oublie pas que ta hashtable doit être initialisée au début de la carte. J'ai entendu dire qu'il y avait des bugs avec les actions de la hashtable dans l'interface utilisateur, donc fais un backup de ta carte avant d'appliquer ces modifications.
_________________


Dernière édition par Bantas le 26/08/09 03:17; édité 1 fois
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Nirae
Ptit Nouveau


Inscrit le: 26 Aoû 2009
Messages: 10
Sujets: 2



MessagePosté le: 26/08/09 16:50    Sujet du message: Citer

Je vois la logique du truc ouais, par contre question idiote et de noob très certainement mais ta hashtable tu l'affiches comment dans les actions ? J'ai beau chercher j'ai pas vu (et pourtant j'ai JNGP)
_________________
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: 26/08/09 17:29    Sujet du message: Citer

Question
Secret:


_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Nirae
Ptit Nouveau


Inscrit le: 26 Aoû 2009
Messages: 10
Sujets: 2



MessagePosté le: 26/08/09 17:45    Sujet du message: Citer

Rolling Eyes

Secret:



Je sais je suis chiant mais comme je peux pas embêter Profet je me rabats sur vous <3. Non plus sérieusement parlant tu dois avoir une version plus optimisée alors, ou bien je suis aveugle
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Keitaro_Ura
Floodozaurus


Inscrit le: 21 Aoû 2007
Messages: 2073
Sujets: 38
Spécialité en worldedit: Oui
Médailles: 1 (En savoir plus...)
Rédacteur de tuto #2 (Quantité : 1)

MessagePosté le: 26/08/09 17:57    Sujet du message: Citer

Patch 1.24 ftw
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Nirae
Ptit Nouveau


Inscrit le: 26 Aoû 2009
Messages: 10
Sujets: 2



MessagePosté le: 26/08/09 18:23    Sujet du message: Citer

Ok bon donc ca c'est mort vu que j'utilise NewJassGenPack je vais voir s'il y a une MAJ justement, mais sinon je vais me debrouiller, enfin je vais essayer, merci en tout cas des réponses Wink
_________________
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