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=46d76599b7e62f5d9e5a4b97f9506f7dMé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

Flèche des Arcanes [GUI]
Aller à la page 1, 2  Suivante
 
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Les sorts -> Modèles
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 gisgalion
Membre honoraire


Inscrit le: 30 Oct 2013
Messages: 284
Sujets: 21
Spécialité en worldedit: Spellmaker


MessagePosté le: 30/09/14 09:14    Sujet du message: Flèche des Arcanes [GUI] Citer

Bon bah salut, je voulais poster un sort ici parceque j'aimais bien ce sort ^^.
Je suis pas du tout sûr qu'il soit leakless ou même MUI mais bon ^^'.

Le héros lance un projectile arcanique qui inflige des dommages à la cible avant de la faire partir en arrière.
Le sort a des dommages assez faible ainsi qu'un rechargement très rapide, il permet ainsi au héros qui le possède de totalement empêcher son ennemi de le toucher tout en lui infligeant des dommages.

Je n'ai pas de screenshots à montrer par contre, le sort est (presque) instantané.

Les Variables :
ArcanicShot_Angle : Variable de Type Réel
ArcanicShot_CasterPosition : Variable de Type Point
ArcanicShot_Dmg : Variable de Type Réel
ArcanicShot_Dummy : Variable de Type Unité
ArcanicShot_Target : Variable de Type Unité
ArcanicShot_Hashtable : Variable de Type Table de Hachage
Arcanic_Hashtable : Variable de Type Table de Hachage
ArcanicShot_TargetPosition : Variable de Type Point
ArcanicShot_Distance : Variable de Type Réel
ArcanicBonus : Variable de Type Réel à déploiement


Les déclencheurs du sort :

Partie 1 du sort :
Secret:

Gui:
Trigger:
Fleche Arcanique
Collapse Evénements
Unité - A unit Initie l'effet d'une compétence
Collapse Conditions
(Ability being cast) Egal à  Flèche Arcanique
Collapse Actions
-------- Pour commencer, je prend les valeurs de ArcanicBonus, que j'ai défini dans un autre déclencheur sur ma carte --------
Set ArcanicBonus[0] = (Load 0 of (Key (Triggering unit)) from Arcanic_Hashtable)
Set ArcanicBonus[1] = (Load 1 of (Key (Triggering unit)) from Arcanic_Hashtable)
-------- Premièrement, j'initialise toutes mes variables, tel les dommages, les unités en question et leur position --------
Set ArcanicShot_Caster = (Triggering unit)
Set ArcanicShot_Target = (Target unit of ability being cast)
Set ArcanicShot_CasterPosition = (Position of ArcanicShot_Caster)
Set ArcanicShot_TargetPosition = (Position of ArcanicShot_Target)
Set ArcanicShot_Dmg = (ArcanicBonus[1] x (25.00 x (Real((Level of Flèche Arcanique  for (Triggering unit))))))
-------- Je crée mon dummy, lui ordonne d'attaquer  puis , en lui assignant une variable, je lui ajoute 0.20 secondes de temps d'expiration --------
-------- Ensuite, je rentre les variables dans mes Hashtables --------
Unité - Create 1 Dummy flèche for (Owner of ArcanicShot_Caster) at ArcanicShot_CasterPosition facing Orientation bâtiment par défaut degrees
Unité - Order (Last created unit) to Attaquer ArcanicShot_Target
Set ArcanicShot_Dummy = (Last created unit)
Table de hachage - Save ArcanicShot_Dmg as 0 of (Key (Last created unit)) in ArcanicShot_Hashtable
Table de hachage - Save Handle OfArcanicShot_Caster as 1 of (Key (Last created unit)) in ArcanicShot_Hashtable
Table de hachage - Save Handle OfArcanicShot_Target as 2 of (Key (Last created unit)) in ArcanicShot_Hashtable
Table de hachage - Save Handle OfArcanicShot_CasterPosition as 3 of (Key (Last created unit)) in ArcanicShot_Hashtable
Table de hachage - Save Handle OfArcanicShot_TargetPosition as 4 of (Key (Last created unit)) in ArcanicShot_Hashtable
Unité - Add a 0.20 second Générique expiration timer to ArcanicShot_Dummy
-------- J'ajoute l'événement qui fait que mon second déclencheur se déclenchera --------
Déclencheur - Add to Fleche arcanique partie 2 <gen> the event (Unité - ArcanicShot_Target Subit des dégâts)
Custom script:   call RemoveLocation( udg_ArcanicShot_CasterPosition )



Partie 2 du sort
Secret:

Gui:
Trigger:
Fleche arcanique partie 2
Evénements
Collapse Conditions
(Unit-type of (Damage source)) Egal à  Dummy flèche
Collapse Actions
-------- Je charge mes différentes variables depuis mes hastables --------
Set ArcanicShot_Dmg = (Load 0 of (Key (Damage source)) from ArcanicShot_Hashtable)
Set ArcanicShot_Caster = (Load 1 of (Key (Damage source)) in ArcanicShot_Hashtable)
Set ArcanicShot_Target = (Load 2 of (Key (Damage source)) in ArcanicShot_Hashtable)
Set ArcanicShot_CasterPosition = (Load 3 of (Key (Damage source)) in ArcanicShot_Hashtable)
Set ArcanicShot_TargetPosition = (Load 4 of (Key (Damage source)) in ArcanicShot_Hashtable)
-------- J'initialise certains variables comme l'angle entre les unités et la distance de téléportation --------
Set ArcanicShot_Angle = (Angle from ArcanicShot_CasterPosition to ArcanicShot_TargetPosition)
Set ArcanicShot_Distance = 150.00
-------- Je crée mon premier effet et supprime ArcanicShot_CasterPosition car il ne me servira plus. --------
Effet spécial - Create a special effect at ArcanicShot_TargetPosition using AbilitiesSpellsItemsAIreAIreTarget.mdl
Effet spécial - Destroy (Last created special effect)
Custom script:   call RemoveLocation( udg_ArcanicShot_CasterPosition )
-------- Je change la location de ma variable TargetPosition afin de l'initialiser sur la position future de mon unité --------
Set ArcanicShot_TargetPosition = (ArcanicShot_TargetPosition offset by ArcanicShot_Distance towards ArcanicShot_Angle degrees)
-------- J'inflige les dommages puis téléporte l'unité --------
Unité - Cause ArcanicShot_Caster to damage ArcanicShot_Target, dealing ArcanicShot_Dmg damage of attack type Sorts and damage type Magique
Unité - Move ArcanicShot_Target instantly to ArcanicShot_TargetPosition
-------- Je reprécise la nouvelle position de l'unité puis je supprime le potentiel leak causé par les hashtables --------
Set ArcanicShot_TargetPosition = (Position of ArcanicShot_Target)
Table de hachage - Clear all child hashtables of child (Key (Damage source)) in ArcanicShot_Hashtable
-------- Dernier effet et suppression d'un leak de point. --------
Effet spécial - Create a special effect at ArcanicShot_TargetPosition using AbilitiesSpellsItemsAIreAIreTarget.mdl
Effet spécial - Destroy (Last created special effect)
Custom script:   call RemoveLocation( udg_ArcanicShot_TargetPosition )



Map exemple

Copyright : Juste un tout petit crédit si vous l'utilisez ou le modifiez svp.

PS : La carte comporte trois autres sorts pour le même héros, mais eux j'ai préféré ne pas les poster, car ils ne sont sûrement pas MUI :/. J'essaierais un jour ou l'autre de les rendre MUI ou d'améliorer le code sur ces sorts.

EDIT : Mis à jour le 2 octobre 2014. Tentative d'amélioration du sort, afin notamment de le rendre MUI. Ajout des commentaires, facilitation d'utilisation pour les utilisateurs.
[/Gui]

EDIT2 : Mis à jour le 3 octobre 2014.J'espère que c'est MUI maintenant Wink
_________________


Dernière édition par gisgalion le 04/10/14 10:51; édité 4 fois
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: 01/10/14 13:52    Sujet du message: Citer

3 Leak de point, ( Last created unit ) pas MUI, même si c'est tout de même pas MUI, remplace par une variable unit réservé pour cette unité.
_________________
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é
 Ectelion
Membre reconnu


Inscrit le: 12 Nov 2011
Messages: 1062
Sujets: 107
Spécialité en worldedit: Inactif(Enfin presque)
Médailles: 1 (En savoir plus...)
Créateur d'unité (Quantité : 1)

MessagePosté le: 01/10/14 14:15    Sujet du message: Citer

Ton sort n'est pas MUI, pour 2 raisons d'après moi:
-Si jamais tu lance le sort 2 fois à très court intervalle, l'effet spécial du premier lancement se fera au niveau de la seconde unité(si c'est la même que tu vises à chaque fois ça ne causera pas beaucoup de problèmes)
-De la même façon, ton lanceur de sort va changer, ce qui fait que tu peux infliger des dégâts soit plus élevés soit plus faibles(selon le niveau du sort pour le second lanceur).

Après il n'est pas trop optimisé pour quelques raisons:
-L'ajout d'évènements multiples à un déclencheur, c'est jamais une très bonne idée, ça oblige le jeu à trier les unités en questions afin de savoir laquelle est attaquée, surtout que il va prendre effet à chaque fois qu'une unité en attaque une autre.
-Tu utilise des triggering unit alors qu'ils sont stockés dans des variables, c'est aussi pas top(même si ça a relativement peu d'impact)
-Puisqu'il est public, vu que tu le poste ici comme sort utilisable, il faudrait que tu le rendes plus simple à modifier, par l'utilisation de... variables(t'imaginais que ça aller être quelque chose d'autre, ben non)
_________________
Inactif(Enfn presque)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 gisgalion
Membre honoraire


Inscrit le: 30 Oct 2013
Messages: 284
Sujets: 21
Spécialité en worldedit: Spellmaker


MessagePosté le: 02/10/14 19:31    Sujet du message: Citer

Mise à jour du sort , j'espère que cela leak moins ou bien s'approche plus du MUI.
Merci beaucoup des commentaires, j'attend les suivants avec impatience ^^.

EDIT : En testant, j'ai cru remarquer que l'unité n'était pas téléportée, j'essaierais de regarder pourquoi et mettrais bientôt le nouveau déclencheur ^^'.

POST EDIT : J'en suis venu à changer le déclencheur comme ça, pourtant, si mon unité est bien téléportée au bon endroit la première fois, la seconde, elle est téléportée au (je pense), milieu.
Secret:


Gui:
Trigger:
Fleche Arcanique
Collapse Evénements
Unité - A unit Initie l'effet d'une compétence
Collapse Conditions
(Ability being cast) Egal à  Flèche Arcanique
Collapse Actions
-------- On initie ici les variables principales, unité ciblée , unité qui lance le sort, position de ces deux unités et joueur qui possède l'unité initiatrice du sort. --------
-------- La variable ArcanicShot_Player servira à  déterminer quelle cible est visée et par quel unité. Cela permettra (j'espère) de rendre le sort MUI. --------
Set ArcanicShot_Player = (Owner of (Triggering unit))
Set ArcanicShot_Caster[(Player number of ArcanicShot_Player)] = (Triggering unit)
Set ArcanicShot_CasterPosition[(Player number of ArcanicShot_Player)] = (Position of ArcanicShot_Caster[(Player number of ArcanicShot_Player)])
Set ArcanicShot_Target[(Player number of ArcanicShot_Player)] = (Target unit of ability being cast)
Set ArcanicShot_TargetPosition[(Player number of ArcanicShot_Player)] = (Position of ArcanicShot_Target[(Player number of ArcanicShot_Player)])
-------- Ici, on initie la variable de dommage par un calcul simple. On a un coefficient si l'on en a besoin. --------
-------- Ensuite, on regarde l'angle entre les deux unités, afin de déterminer où l'unité sera, plus tard, téléportée. --------
Set ArcanicShot_Dmg[(Player number of ArcanicShot_Player)] = (ArcanicBonus[(10 + 1)] x (25.00 x (Real((Level of Flèche Arcanique  for ArcanicShot_Caster[(Player number of ArcanicShot_Player)])))))
Set ArcanicShot_Angle[(Player number of ArcanicShot_Player)] = (Angle from ArcanicShot_CasterPosition[(Player number of ArcanicShot_Player)] to ArcanicShot_TargetPosition[(Player number of ArcanicShot_Player)])
-------- On crée un dummy avec une faible valeur d'attaque et une attaque à  distance avec un projectile visible. --------
Unité - Create 1 Dummy flèche for ArcanicShot_Player at ArcanicShot_CasterPosition[(Player number of ArcanicShot_Player)] facing Orientation bâtiment par défaut degrees
Set ArcanicShot_Dummy[(Player number of ArcanicShot_Player)] = (Last created unit)
Unité - Add a 0.20 second Générique expiration timer to ArcanicShot_Dummy[(Player number of ArcanicShot_Player)]
Unité - Order ArcanicShot_Dummy[(Player number of ArcanicShot_Player)] to Attaque une fois ArcanicShot_Target[(Player number of ArcanicShot_Player)]
Déclencheur - Add to Fleche arcanique partie 2 <gen> the event (Unité - ArcanicShot_Target[(Player number of ArcanicShot_Player)] Subit des dégâts)

Gui:
Trigger:
Fleche arcanique partie 2
Evénements
Collapse Conditions
(Unit-type of (Damage source)) Egal à  Dummy flèche
Collapse Actions
Set ArcanicShot_Player = (Owner of (Damage source))
-------- Là  on crée l'effet à  l'endroit où se trouve l'unité visée --------
Effet spécial - Create a special effect at ArcanicShot_TargetPosition[(Player number of ArcanicShot_Player)] using AbilitiesSpellsItemsAIreAIreTarget.mdl
Effet spécial - Destroy (Last created special effect)
-------- On précise la future position de l'unité --------
Set ArcanicShot_TargetPosition[(Player number of ArcanicShot_Player)] = (ArcanicShot_TargetPosition[(Player number of ArcanicShot_Player)] offset by 150.00 towards ArcanicShot_Angle[(Player number of ArcanicShot_Player)] degrees)
Custom script:   call RemoveLocation( udg_ArcanicShot_CasterPosition[ GetConvertedPlayerId(udg_ArcanicShot_Player) ] )
-------- On inflige les dommages ArcanicShot_Damages à  l'unité --------
Unité - Cause ArcanicShot_Caster[(Player number of ArcanicShot_Player)] to damage ArcanicShot_Target[(Player number of ArcanicShot_Player)], dealing ArcanicShot_Dmg[(Player number of ArcanicShot_Player)] damage of attack type Sorts and damage type Magique
-------- On téléporte l'unité au point ArcanicShot_TargetPosition --------
Unité - Move ArcanicShot_Target[(Player number of ArcanicShot_Player)] instantly to ArcanicShot_TargetPosition[(Player number of ArcanicShot_Player)]
-------- On reprécise la nouvelle position de l'unité --------
Set ArcanicShot_TargetPosition[(Player number of ArcanicShot_Player)] = (Position of ArcanicShot_Target[(Player number of ArcanicShot_Player)])
-------- On crée l'effet à  la nouvelle position de l'unité --------
Effet spécial - Create a special effect at ArcanicShot_TargetPosition[(Player number of ArcanicShot_Player)] using AbilitiesSpellsItemsAIreAIreTarget.mdl
Effet spécial - Destroy (Last created special effect)
Custom script:   call RemoveLocation( udg_ArcanicShot_TargetPosition[ GetConvertedPlayerId(udg_ArcanicShot_Player) ] )


_________________
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: 02/10/14 20:22    Sujet du message: Citer

Toujours pas MUI mec :/, utilise les hashtables ( plus conseillé ) ou l'indexing.
_________________
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é
 gisgalion
Membre honoraire


Inscrit le: 30 Oct 2013
Messages: 284
Sujets: 21
Spécialité en worldedit: Spellmaker


MessagePosté le: 03/10/14 12:40    Sujet du message: Citer

Mise à jour, j'espère que c'est MUI maintenant, c'est la première fois que je me sers des Hashtables :/
_________________
Le vaste monde vous entoure de tous côtés ; vous pouvez vous enclore, mais vous ne pouvez éternellement le tenir en dehors de vos clôtures.

John Ronald Reuel Tolkien.

Hâtez-vous lentement, et sans perdre courage,
Vingt fois sur le métier remettez votre ouvrage.
Polissez-le sans cesse, et le repolissez.
Ajoutez quelquefois, et souvent effacez.

Boileau
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: 03/10/14 16:36    Sujet du message: Citer

C'est déjà mieux, néanmoins si 2 unités cible la même unité, le premier lancer sera réécris donc 1 seul fonctionnera, tu dois donc utilisais l'ID de ta dummy et non de ta cible.
_________________
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é
 gisgalion
Membre honoraire


Inscrit le: 30 Oct 2013
Messages: 284
Sujets: 21
Spécialité en worldedit: Spellmaker


MessagePosté le: 03/10/14 16:47    Sujet du message: Citer

Euh, je comprend pas trop, je dois utiliser l'ID de mon dummy pour quelle partie ? (J'essaye vraiment de comprendre mais j'ai encore du mal ^^')
_________________
Le vaste monde vous entoure de tous côtés ; vous pouvez vous enclore, mais vous ne pouvez éternellement le tenir en dehors de vos clôtures.

John Ronald Reuel Tolkien.

Hâtez-vous lentement, et sans perdre courage,
Vingt fois sur le métier remettez votre ouvrage.
Polissez-le sans cesse, et le repolissez.
Ajoutez quelquefois, et souvent effacez.

Boileau
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: 03/10/14 16:54    Sujet du message: Citer

Key of ( Target of ability being cast ) --> Key of ( TaDummyUnit )
_________________
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é
 gisgalion
Membre honoraire


Inscrit le: 30 Oct 2013
Messages: 284
Sujets: 21
Spécialité en worldedit: Spellmaker


MessagePosté le: 03/10/14 16:58    Sujet du message: Citer

Ah oui d'accord. Mais du coup, je change ensuite le Key of (Triggering unit) en Key of (Damages Source) ? J'ai bien compris ?

Juste une autre question, lorsque on ajoute un temps d'expiration, l'unité est-elle remove ou tuée à la fin ?
_________________
Le vaste monde vous entoure de tous côtés ; vous pouvez vous enclore, mais vous ne pouvez éternellement le tenir en dehors de vos clôtures.

John Ronald Reuel Tolkien.

Hâtez-vous lentement, et sans perdre courage,
Vingt fois sur le métier remettez votre ouvrage.
Polissez-le sans cesse, et le repolissez.
Ajoutez quelquefois, et souvent effacez.

Boileau
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: 03/10/14 17:06    Sujet du message: Citer

tué, du coup ca fonctionne toujours il me semble. Ah moins qu'il n'ai pas de décomposition.
_________________
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é
 gisgalion
Membre honoraire


Inscrit le: 30 Oct 2013
Messages: 284
Sujets: 21
Spécialité en worldedit: Spellmaker


MessagePosté le: 03/10/14 17:07    Sujet du message: Citer

Après un petit test , je crois qu'il est tué, il me semble qu'on peut ressusciter un héros tué de cette façon.

Mise à jour du sort.

Il sera possible de télécharger la nouvelle version de la carte dans la soirée.

EDIT : Map exemple mise à jour.
_________________
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: 04/10/14 10:30    Sujet du message: Citer

Utilise plutôt ta variable dummy au lieu de last created unit pour la key.
Et clear hashtable ce n'est pas triggering unit mais event damage source
_________________
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é
 gisgalion
Membre honoraire


Inscrit le: 30 Oct 2013
Messages: 284
Sujets: 21
Spécialité en worldedit: Spellmaker


MessagePosté le: 04/10/14 10:39    Sujet du message: Citer

Effectivement, j'avais pas vu pour le clear hashtable ^^'
Par contre, je n'ai pas ma variable dummy dans mes choix d'ID pour la Key :/
_________________
Le vaste monde vous entoure de tous côtés ; vous pouvez vous enclore, mais vous ne pouvez éternellement le tenir en dehors de vos clôtures.

John Ronald Reuel Tolkien.

Hâtez-vous lentement, et sans perdre courage,
Vingt fois sur le métier remettez votre ouvrage.
Polissez-le sans cesse, et le repolissez.
Ajoutez quelquefois, et souvent effacez.

Boileau
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: 04/10/14 10:44    Sujet du message: Citer

le mieux pour les hashtable en GUI c'est de maitriser les customs script, car l'interface GUI est pourrit d'après moi pour ces dernières, de plus tu pourrais facilement utiliser des local.
_________________
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é
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Les sorts -> Modèles 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