Inscrit le: 30 Oct 2013 Messages: 284 Sujets: 21 Spécialité en worldedit: Spellmaker
Posté le: 24/02/15 15:34 Sujet du message: Appel du Ciel [GUI] [MUI]
Salut tout le monde
J'ai décidé de me lancer dans la création d'un sort ayant pour thème la Lumière dont en voici le résultat final : Heaven Call
L'appel du ciel est un sort de zone en GUI et MUI , très facilement configurable pour d'autres usages.
Voici la liste des variables ainsi que les déclencheurs :
Variables :
HeavenCall_AttackType : Type d'attaque HeavenCall_CasterGroup : Groupe unité HeavenCall_Damages : Réel à déploiement HeavenCall_DamagesType : Type de dommage HeavenCall_DamagesZone : Réel HeavenCall_Hashtable : Table de Hachage HeavenCall_RandomPoint : Point HeavenCall_RaysNumber : Entier à déploiement HeavenCall_Zone : Réel à déploiement HeavenCallCast_CastingUnit : Unité HeavenCallCast_CenterPoint : Point HeavenCallCast_Damages : Réel HeavenCallCast_RaysNumber : Entier HeavenCallCast_Zone : Réel HeavenCall_TimerMax : Rée à déploiement HeavenCallCast_TimerMax : Réel HeavenCall_Timer : Réel HeavenCallCast_TimerReduction : Réel HeavenCall_TimerReduction : Réel à déploiement
Déclencheurs :
Initialisation des variables :
Secret:
Gui:
Trigger:
Initialisation
Evénements
Map initialization
Conditions
Actions
-------- CREDITS : -------- -------- Icône du sort : Resurrect ; Elenai : TheHiveWorkshop -------- -------- Modèle du rayon : Solar Beam ; sniper_zero ; TheHiveWorkshop -------- Table de hachage - Create a hashtable Set HeavenCall_Hashtable = (Last created hashtable) Set HeavenCall_Spell = Appel du ciel Set HeavenCall_AttackType = Magie Set HeavenCall_DamagesType = Divin Set HeavenCall_RaysNumber[1] = 15 Set HeavenCall_RaysNumber[2] = 20 Set HeavenCall_RaysNumber[3] = 30 Set HeavenCall_Damages[1] = 30.00 Set HeavenCall_Damages[2] = 35.00 Set HeavenCall_Damages[3] = 45.00 Set HeavenCall_Zone[1] = 300.00 Set HeavenCall_Zone[2] = 350.00 Set HeavenCall_TimerMax[1] = 0.24 Set HeavenCall_TimerMax[2] = 0.24 Set HeavenCall_TimerMax[3] = 0.24 Set HeavenCall_TimerReduction[1] = 0.03 Set HeavenCall_TimerReduction[2] = 0.03 Set HeavenCall_TimerReduction[3] = 0.03 Set HeavenCall_Zone[1] = 300.00 Set HeavenCall_Zone[2] = 350.00 Set HeavenCall_Zone[3] = 400.00 Set HeavenCall_DamagesZone = 95.00
Lancement du sort
Secret:
Gui:
Trigger:
Casting
Evénements
Unité - A unit Initie l'effet d'une compétence
Conditions
(Ability being cast) Egal à Appel du ciel
Actions
Set HeavenCallCast_CenterPoint = (Target point of ability being cast) Set HeavenCallCast_TimerMax = HeavenCall_TimerMax[(Level of HeavenCall_Spell for (Triggering unit))] Set HeavenCall_Timer = HeavenCallCast_TimerMax Set HeavenCallCast_TimerReduction = HeavenCall_TimerReduction[(Level of HeavenCall_Spell for (Triggering unit))] Set HeavenCallCast_Damages = HeavenCall_Damages[(Level of HeavenCall_Spell for (Triggering unit))] Set HeavenCallCast_RaysNumber = HeavenCall_RaysNumber[(Level of HeavenCall_Spell for (Triggering unit))] Set HeavenCallCast_Zone = HeavenCall_Zone[(Level of HeavenCall_Spell for (Triggering unit))] Table de hachage - Save HeavenCallCast_Damages as 1 of (Key (Triggering unit)) in HeavenCall_Hashtable Table de hachage - Save HeavenCallCast_Zone as 2 of (Key (Triggering unit)) in HeavenCall_Hashtable Table de hachage - Save HeavenCallCast_RaysNumber as 0 of (Key (Triggering unit)) in HeavenCall_Hashtable Table de hachage - Save Handle OfHeavenCallCast_CenterPoint as 3 of (Key (Triggering unit)) in HeavenCall_Hashtable Table de hachage - Save HeavenCall_Timer as 5 of (Key (Triggering unit)) in HeavenCall_Hashtable Table de hachage - Save HeavenCallCast_TimerMax as 6 of (Key (Triggering unit)) in HeavenCall_Hashtable Table de hachage - Save HeavenCallCast_TimerReduction as 7 of (Key (Triggering unit)) in HeavenCall_Hashtable Groupe unité - Add (Triggering unit) to HeavenCall_CasterGroup Déclencheur - Turn on Actions <gen>
Actions
Secret:
Gui:
Trigger:
Actions
Evénements
Temps - Every 0.03 seconds of game time
Conditions
Actions
Groupe unité - Pick every unit in HeavenCall_CasterGroup and do (Actions)
Boucle - Actions
Set HeavenCall_Timer = (Load 5 of (Key (Picked unit)) from HeavenCall_Hashtable) Set HeavenCallCast_TimerMax = (Load 6 of (Key (Picked unit)) from HeavenCall_Hashtable) Set HeavenCallCast_TimerReduction = (Load 7 of (Key (Picked unit)) from HeavenCall_Hashtable) Set HeavenCall_Timer = (HeavenCall_Timer - HeavenCallCast_TimerReduction)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
HeavenCall_Timer Inférieur ou égal à 0.00
Alors - Actions
Set HeavenCallCast_CastingUnit = (Picked unit) Set HeavenCallCast_CenterPoint = (Load 3 of (Key (Picked unit)) in HeavenCall_Hashtable) Set HeavenCallCast_Damages = (Load 1 of (Key (Picked unit)) from HeavenCall_Hashtable) Set HeavenCallCast_Zone = (Load 2 of (Key (Picked unit)) from HeavenCall_Hashtable) Set HeavenCallCast_RaysNumber = (Load 0 of (Key (Picked unit)) from HeavenCall_Hashtable) Set HeavenCallCast_RaysNumber = (HeavenCallCast_RaysNumber - 1) Table de hachage - Save HeavenCallCast_RaysNumber as 0 of (Key (Picked unit)) in HeavenCall_Hashtable
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
HeavenCallCast_RaysNumber Inférieur ou égal à 0
Alors - Actions
Table de hachage - Clear all child hashtables of child (Key (Picked unit)) in HeavenCall_Hashtable Groupe unité - Remove (Picked unit) from HeavenCall_CasterGroup Custom script: call RemoveLocation( udg_HeavenCallCast_CenterPoint )
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(HeavenCall_CasterGroup is empty) Egal à TRUE
Alors - Actions
Déclencheur - Turn off (This trigger)
Sinon - Actions
Sinon - Actions
Set HeavenCall_RandomPoint = (HeavenCallCast_CenterPoint offset by (Random real number between 0.00 and HeavenCallCast_Zone) towards (Random angle) degrees) Effet spécial - Create a special effect at HeavenCall_RandomPoint using war3mapImportedSolar Beam.mdx Effet spécial - Destroy (Last created special effect) Custom script: set bj_wantDestroyGroup =true
Groupe unité - Pick every unit in (Units within HeavenCall_DamagesZone of HeavenCall_RandomPoint matching (((Owner of (Matching unit)) is an enemy of (Owner of HeavenCallCast_CastingUnit)) Egal à TRUE)) and do (Actions)
Boucle - Actions
Unité - Cause HeavenCallCast_CastingUnit to damage (Picked unit), dealing HeavenCallCast_Damages damage of attack type HeavenCall_AttackType and damage type HeavenCall_DamagesType Unité - Create 1 Dummy (etheral) for (Owner of HeavenCallCast_CastingUnit) at HeavenCall_RandomPoint facing Orientation bâtiment par défaut degrees Unité - Add a 0.10 second Générique expiration timer to (Last created unit) Unité - Order (Last created unit) to Mage de sang humain - Bannissement (Picked unit)
Custom script: call RemoveLocation( udg_HeavenCall_RandomPoint ) Set HeavenCall_Timer = HeavenCallCast_TimerMax
Sinon - Actions
Table de hachage - Save HeavenCall_Timer as 5 of (Key (Picked unit)) in HeavenCall_Hashtable
Qu'en dites-vous ?
Merci de me créditer si jamais vous utilisez ou modifiez ce sort _________________
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
Dernière édition par gisgalion le 28/02/15 15:30; édité 3 fois
Inscrit le: 30 Oct 2013 Messages: 284 Sujets: 21 Spécialité en worldedit: Spellmaker
Posté le: 25/02/15 09:41 Sujet du message:
C'est juste une habitude en fait ^^'
Je sais bien qu'il ne peut pas être inférieur à 0 puisque dès qu'il est égal à 0, je retire l'unité du groupe, mais c'est juste une habitude débile XD _________________
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.
Inscrit le: 12 Nov 2011 Messages: 1062 Sujets: 107 Spécialité en worldedit: Inactif(Enfin presque) Médailles: 1 (En savoir plus...)
Posté le: 25/02/15 15:56 Sujet du message:
J'aurais juste quelques suggestions au niveau de l'optimisation:
-Mettre la compétence dans une variable, afin que tout soit customisable au même endroit, sans avoir à toucher au loop
-Utiliser une variable de type timer que tu désincrémente de 0.03 toutes les 0.03 secondes du loop (modifie l'event) qui lorsqu'elle est égale à 0 crée les rayons et dont on peut changer la valeur max au même endroit que pour les autres aspects du sort
-Activer le Loop quand il y a une unité dans le groupe et le désactiver quand il y a en 0.
Après c'est pas nécessaire, juste que ça rend la modification plus simple et optimise un peu la consommation du jeu. _________________
Inscrit le: 30 Oct 2013 Messages: 284 Sujets: 21 Spécialité en worldedit: Spellmaker
Posté le: 27/02/15 23:17 Sujet du message:
Merci pour ces conseils
Je ne peux pas mapper pour l'instant, mais j'aurais quelques questions du coup :
-A quoi servirait de mettre la compétence dans une variable ? Je n'ai pas trop compris l'utilité de ce point en fait :/
-En gros, cela ferait que, en gros, le sort se chargerait avant de balancer tous les rayons d'un coup ? Ais-je bien compris ? Ou me trompe-je complètement ?
-Oki doki . J'imagine que ça réduira la mémoire utilisée par le sort lorsqu'il n'y a aucune unité dans le groupe c'est ça ? _________________
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.
Inscrit le: 12 Nov 2011 Messages: 1062 Sujets: 107 Spécialité en worldedit: Inactif(Enfin presque) Médailles: 1 (En savoir plus...)
Posté le: 28/02/15 14:12 Sujet du message:
gisgalion a écrit:
Merci pour ces conseils
Je ne peux pas mapper pour l'instant, mais j'aurais quelques questions du coup :
-A quoi servirait de mettre la compétence dans une variable ? Je n'ai pas trop compris l'utilité de ce point en fait :/
En général, dans le déclencheur de configuration on met tout ce que l'utilisateur peut avoir envie de modifier sans qu'il ait besoin de naviguer entre tous ceux qui composent le sort. Car il peut utiliser le déclencheur pour ajouter un effet à une compétence non-modifiée par exemple, il n'utilisera pas forcément celle que tu as créée.
-En gros, cela ferait que, en gros, le sort se chargerait avant de balancer tous les rayons d'un coup ? Ais-je bien compris ? Ou me trompe-je complètement ?
Pas vraiment, c'est pour faire en sorte que l'intervalle entre les rayons soit une valeur modifiable(qu'il y ait un temps d'attente plus ou moins long entre chaque rayon (avec une valeur différente pour chaque niveau si nécessaire))
-Oki doki . J'imagine que ça réduira la mémoire utilisée par le sort lorsqu'il n'y a aucune unité dans le groupe c'est ça ?
Oui, parce que sinon le déclencheur tourne dans le vide, il ne fait rien mais demande la mémoire nécessaire à son fonctionnement.
Inscrit le: 30 Oct 2013 Messages: 284 Sujets: 21 Spécialité en worldedit: Spellmaker
Posté le: 28/02/15 14:26 Sujet du message:
Merci beaucoup de tes réponses si rapides
Je m'attelle à ceci dès maintenant, j'éditerai dès que possible.
EDIT ; C'est fait
J'ai même rajouté une variable pour déterminer de combien réduire le timer :p _________________
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.
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