Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
Rommstein60 MODÉRATEUR À LA RETRAITE
Inscrit le: 23 Aoû 2007 Messages: 4766 Sujets: 136 Spécialité en worldedit: Keskesapeutfout' Médailles: 1 (En savoir plus...)
|
Posté le: 06/09/09 10:27 Sujet du message: Un sort de cible en vJass |
|
|
Kikou les gens.
Alors voilà, je viens de me rendre compte que je ne savais pas vraiment comme j'allais procéder pour faire des sorts "de cible" pour AL. J'appelle sort de cible un sort qui requiert une cible, et qui envoie un projectile sur cette cible, projectile qui infligera des dégâts. Au début je me disais je vais attendre (Distance entre le lanceur et la cible/Vitesse du projectile), puis j'inflige des dégâts, mais c'est vraiment moche comme technique.
Donc ayant récemment appris pas mal de trucs, voici mon nouveau raisonnement, et je voudrais que des personnes plus qualifiées que moi me disent si il est juste :
- Je crée une unité dummy, modèle nul, pas d'ombre, avec comme projectile d'attaque le projectile que je souhaite pour mon sort. Je lui met 1 d'attaque.
- Par déclencheur, lorsque mon sort est lancé, je crée un dummy du type précédent, je lui ordonne d'attaquer la cible, puis très peu de temps après je bouge ce dummy dans un coin de la map où on ne pourra pas le voir.
- Je crée un nouveau déclencheur avec comme évènement l'unité ciblée subit des dégâts. Grâce aux hashtable, je sauve l'ID du dummy précédemment créé dans la ligne n°ID du déclencheur créé.
- Dans ce déclencheur je met comme condition que l'unité qui lui a infligé les dégât n'est autre que le dummy créé, puis je met en route mes actions principales.
C'est juste ou pas comme raisonnement ? Et à la fin du lancement du déclencheur créé, y a-t-il moyen de le supprimer pour éviter un leak ?
Merci ! _________________
Leçon n°1 du WorldEdit : « Le violet > Troll-Brain » |
|
Revenir en haut |
|
|
Magus Membre a fort taux de post
Inscrit le: 13 Oct 2007 Messages: 994 Sujets: 25 Spécialité en worldedit: Codeur
|
Posté le: 06/09/09 10:32 Sujet du message: |
|
|
Oui il est possible de supprimer le déclencheur dynamique que tu as créé mais il faut garder un lien vers les actions de ce dernier si tu en utilises. Car il faut les supprimer avant de supprimer le déclencheur.
Sinon tu peux aussi ne pas utiliser d'action et ne mettre qu'une condition à ton déclencheur. Mais tu n'auras pas le droit à certaines fonctions (du genre PolledWait et TriggerSleepAction).
Mais euh ... pourquoi tu ne te bases pas sur une compétence du genre bombe d'acide ? Si je me souviens bien avec cette compétence tu peux la modifier pour avoir une sort avec projectile sans effet secondaire.
Tu peux aussi utiliser chaine d'éclair en virant les rebonds au pire.
EDIT : Pour le premier raisonnement oui c'est un peu moche. Parce que la cible bouge le projectile va le suivre et mettre plus de temps que prévu pour l'atteindre. _________________
- La théorie c'est quand rien ne fonctionne mais tout le monde sait pourquoi.
- La pratique c'est quand tout fonctionne mais personne ne sait pourquoi.
- Chez moi la théorie et la pratique sont réunies, rien ne fonctionne et personne ne sait pourquoi.
Dernière édition par Magus le 06/09/09 10:35; édité 1 fois |
|
Revenir en haut |
|
|
Rommstein60 MODÉRATEUR À LA RETRAITE
Inscrit le: 23 Aoû 2007 Messages: 4766 Sujets: 136 Spécialité en worldedit: Keskesapeutfout' Médailles: 1 (En savoir plus...)
|
Posté le: 06/09/09 10:34 Sujet du message: |
|
|
Mhhhh...
C'est pas bête, mais comment je vérifie que les dégâts reçus par la cible sont ceux du sort et non d'autre part ? _________________
Leçon n°1 du WorldEdit : « Le violet > Troll-Brain » |
|
Revenir en haut |
|
|
Magus Membre a fort taux de post
Inscrit le: 13 Oct 2007 Messages: 994 Sujets: 25 Spécialité en worldedit: Codeur
|
|
Revenir en haut |
|
|
Rommstein60 MODÉRATEUR À LA RETRAITE
Inscrit le: 23 Aoû 2007 Messages: 4766 Sujets: 136 Spécialité en worldedit: Keskesapeutfout' Médailles: 1 (En savoir plus...)
|
Posté le: 06/09/09 10:39 Sujet du message: |
|
|
Mhhh...
C'est fiable comme technique ... ?
Moi je préfère la mienne, tu peux juste m'indiquer avec du code comment supprimer les actions avant le déclo comme tu as dit stp ? La solution des conditions, j'ai pas trop compris, mais je pense que je préfère éviter. _________________
Leçon n°1 du WorldEdit : « Le violet > Troll-Brain » |
|
Revenir en haut |
|
|
Magus Membre a fort taux de post
Inscrit le: 13 Oct 2007 Messages: 994 Sujets: 25 Spécialité en worldedit: Codeur
|
Posté le: 06/09/09 10:53 Sujet du message: |
|
|
Jass: | local trigger t = CreateAction()
local triggeraction actions
...
...
...
set actions = TriggerAddAction(t, function blablabla)
...
...
...
//Si ton déclencheur à des conditions :
call TriggerClearConditions(t)
call TriggerRemoveAction(t, actions)
call DestroyTrigger(t)
|
La j'ai fais simple avec des variables locales. Au pire pour garder une trace facilement tu peux utiliser une hashtable ça fonctionnera parfaitement.
Sinon la technique du buff est fiable je pense. Vu qu'on peut détecter le buff et que l'évènement "une unité subit des dégâts" vient juste après que l'unité ait pris des dégâts. Donc le buff sera bien la.
Par contre si tu mets "0" en dégâts pour le sort je sais pas si l'évènement est fait :/ _________________
- La théorie c'est quand rien ne fonctionne mais tout le monde sait pourquoi.
- La pratique c'est quand tout fonctionne mais personne ne sait pourquoi.
- Chez moi la théorie et la pratique sont réunies, rien ne fonctionne et personne ne sait pourquoi. |
|
Revenir en haut |
|
|
Brissou de Mourièssou Créateur de sorts, depuis 1936.
Inscrit le: 30 Aoû 2007 Messages: 1510 Sujets: 26 Spécialité en worldedit: Développer des jeux vidéos pour le fun, donc world edit c'est comme faire une addition. Médailles: 2 (En savoir plus...)
|
Posté le: 06/09/09 11:35 Sujet du message: |
|
|
Ta solution est juste gg =D _________________
|
|
Revenir en haut |
|
|
Bantas Anomalie floodiforme
Inscrit le: 21 Aoû 2007 Messages: 1524 Sujets: 37
Médailles: 1 (En savoir plus...)
|
Posté le: 06/09/09 12:02 Sujet du message: |
|
|
Imo, si le projectile met plus de 3 secondes à atteindre sa cible, c'est qu'il y a un problème quelque part. Donc tu peux juste utiliser UnitApplyTimedLife sur ton lanceur de projos pour t'en débarasser quand tu n'en as plus besoin. Sinon, inutile de bouger l'unité dans un coin de la map : Il suffit de lui donner un temps de rechargement pour son attaque plus long que sa (courte) durée de vie. _________________
|
|
Revenir en haut |
|
|
Rommstein60 MODÉRATEUR À LA RETRAITE
Inscrit le: 23 Aoû 2007 Messages: 4766 Sujets: 136 Spécialité en worldedit: Keskesapeutfout' Médailles: 1 (En savoir plus...)
|
Posté le: 06/09/09 12:05 Sujet du message: |
|
|
J'y avais pensé Bantas(ounay), mais je trouve ça sale de laisser un dummy en plein champ de bataille, donc je le remove dès que le sort s'est lancé et on n'en parle plus. ^^ _________________
Leçon n°1 du WorldEdit : « Le violet > Troll-Brain » |
|
Revenir en haut |
|
|
Bantas Anomalie floodiforme
Inscrit le: 21 Aoû 2007 Messages: 1524 Sujets: 37
Médailles: 1 (En savoir plus...)
|
Posté le: 06/09/09 12:07 Sujet du message: |
|
|
Rommstein60 a écrit: | mais je trouve ça sale de laisser un dummy en plein champ de bataille, | Il me semblait pourtant qu'une unité avec Infestation était un peu coupée du monde et ne pouvait plus être touchée par des dégâts de zone ni sélectionnée dans un groupe via les GroupEnum.. _________________
|
|
Revenir en haut |
|
|
profet Instanton Gravitationnel Singulier
Inscrit le: 21 Aoû 2007 Messages: 1633 Sujets: 53 Spécialité en worldedit: Pain d'épice multitâche (terrain, scripts, textures, modèles...) Médailles: 2 (En savoir plus...)
|
Posté le: 06/09/09 12:09 Sujet du message: |
|
|
Magus a écrit: | et que l'évènement "une unité subit des dégâts" vient juste après que l'unité ait pris des dégâts |
Juste AVANT _________________
Bêta Systems: 70%
Bêta Spells: 13%
Bêta Arts & graphics: 70% |
|
Revenir en haut |
|
|
Rommstein60 MODÉRATEUR À LA RETRAITE
Inscrit le: 23 Aoû 2007 Messages: 4766 Sujets: 136 Spécialité en worldedit: Keskesapeutfout' Médailles: 1 (En savoir plus...)
|
|
Revenir en haut |
|
|
Bantas Anomalie floodiforme
Inscrit le: 21 Aoû 2007 Messages: 1524 Sujets: 37
Médailles: 1 (En savoir plus...)
|
Posté le: 06/09/09 12:14 Sujet du message: |
|
|
Ah sinon il faudrait mettre un modificateur négatif de dégâts à ton dummy (genre Griffe d'attaques avec -1). Je ne suis pas sûr que l'évenement marche encore (ça paraîtrait logique qu'il marche) mais ça éviterait des effets collatéraux. _________________
|
|
Revenir en haut |
|
|
Troll-Brain Ri1kamoua
Inscrit le: 23 Aoû 2007 Messages: 7143 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
Posté le: 06/09/09 12:17 Sujet du message: |
|
|
Je crois que l'unité ne possède pas le buff quand l'event "l'unité subit des dégâts" se déclenche, il faut utiliser un timer(0).
Enfin je crois, à vérifier.
Puis même y'a des buffs qui stackent et d'autres pas, pas très fiable comme méthode.
Sinon pour la dummy , je crois qu'on peut l'énumérer avec "unit of type" ou "unit in region" un truc du genre, mais par contre in game elle n'a aucune interaction avec les autres unités (dans le sens où elle n'est targetable en aucune manière) _________________
Le violet, c'est moche. |
|
Revenir en haut |
|
|
Magus Membre a fort taux de post
Inscrit le: 13 Oct 2007 Messages: 994 Sujets: 25 Spécialité en worldedit: Codeur
|
Posté le: 06/09/09 12:28 Sujet du message: |
|
|
profet a écrit: | Magus a écrit: | et que l'évènement "une unité subit des dégâts" vient juste après que l'unité ait pris des dégâts |
Juste AVANT |
C'est bizarre je me souvenais avoir eu un problème avec cette évènement justement. Je voulais faire une "esquive" par déclencheur. Donc je rendait à l'unité les points de vies qu'elle avait perdu. Le problème c'est que ça marchait jamais quand l'unité mourrait à cause de l'attaque parce qu'elle était morte avant que je puisse lui rendre les points de vies :/ _________________
- La théorie c'est quand rien ne fonctionne mais tout le monde sait pourquoi.
- La pratique c'est quand tout fonctionne mais personne ne sait pourquoi.
- Chez moi la théorie et la pratique sont réunies, rien ne fonctionne et personne ne sait pourquoi. |
|
Revenir en haut |
|
|
|