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=0744bfe04d4d96f6b58f50ac683773e2Mé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

Unité finit le lancement dune compétence : Actions ( Oopas )

 
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
 zazaa
Membre actif


Inscrit le: 05 Aoû 2008
Messages: 197
Sujets: 24



MessagePosté le: 15/11/08 15:13    Sujet du message: Unité finit le lancement dune compétence : Actions ( Oopas ) Citer

Salut
Voilà mon problème : avec l'événement "unité termine le lancement d'une compétence", on ne peut pas récupérer le point cible
pour ça je le récupère quand l'unité est en train de lancer le sort, et je crée un sous-trigger qui détecte quand l'unité finit le sort et j'utilise le point sauvegardé :
Secret:

Jass:
function Trig_bombe_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'ANcs'
endfunction

function Trig_bombe_Actions takes nothing returns nothing
local location l = GetSpellTargetLoc()
local unit u = GetSpellAbilityUnit()
local trigger t = CreateTrigger()
local string s = H2S(t)

call StoreInteger(udg_GC, s, "location", H2I(l) )
call TriggerRegisterUnitEvent( t, u, EVENT_UNIT_SPELL_FINISH )
call TriggerAddCondition( t, Condition( function Trig_bombe_Conditions2 ) )
call TriggerAddAction( t, function Trig_bombe_Actions2 )

set u = null
set l = null
set t = null

endfunction
//===========================================================================
function InitTrig_bombe takes nothing returns nothing
    set gg_trg_bombe = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_bombe, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_bombe, Condition( function Trig_bombe_Conditions ) )
    call TriggerAddAction( gg_trg_bombe, function Trig_bombe_Actions )
endfunction


Problème : le déclencheur se fait environ 1 fois sur 5, et quand il se fait, il se fait à tous les points ou il y a eu des essais ratés en meme temps d'ou un enorme lagg qui plante l'ordi Sad
Alors si vous avez une meilleure méthode merci
_________________
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: 15/11/08 16:13    Sujet du message: Citer

A unit initie l'effet d'une compétence.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 zazaa
Membre actif


Inscrit le: 05 Aoû 2008
Messages: 197
Sujets: 24



MessagePosté le: 15/11/08 16:43    Sujet du message: Citer

ici c'est un sort basé sur roquettes, qui crée une bombe à l'endroit ou le projectile touche le sol :

EVENT_PLAYER_UNIT_SPELL_EFFECT = unité initie l'effect d'une compétence

pourquoi pas directement?
sa detecte quand l'unité lance le sort et sa fait las action a ce moment la :
le projectile de roquette ne mettra pas le meme temps si l'unité cible a coté d'elle ou a l'autre bout de la map ;
en fait il faudrait calculer un wait entre le point cible, la position de l'unité, et la vitesse du projectile ( si y'a pas de solution pour detecter si l'unit termine le sort c'est ce que je ferais )

(recoit un ordre avec point pour cible c'est pareil, j'ai testé les 2 : de meme que si elle cible + loin que la portée du sort l'action se fera avant qu'elle ait fini le sort )


edit : le bug a l'air de venir du fait qu'on bouge l'unité avant quelle ait fini la competence (a verifier)
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7146
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 15/11/08 17:52    Sujet du message: Citer

Le point cible ne fonctionne pas avec l'event termine/achève une compétence.
Je peux me tromper mais je ne crois pas que l'arrivée des roquettes coïncide avec l'event achève une compétence ( à tester sur une grande distance).
Je crois que la solution du calcul de la distance est la meilleure option.
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 zazaa
Membre actif


Inscrit le: 05 Aoû 2008
Messages: 197
Sujets: 24



MessagePosté le: 15/11/08 18:29    Sujet du message: Citer

Oui la fin des roquettes est détectée
En fait le bug vient bien du fait que si l'unité reçoit un ordre entre le début et la fin de la compétence, l'event "termine une competence" n'est pas pris en compte, même si c'est un projectile

le fait de se faire pause ou sleep est considéré aussi comme un ordre Shocked
du coup sa a l'air de fonctionner avec ca :
Jass:
local force f = CreateForce()

call UnitAddAbility( u, 'Avul' )
call UnitAddAbility( u, 'ACmi' )
call ForceAddPlayer(f, GetOwningPlayer(u))
call SetUserControlForceOff( f )

_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7146
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Rédacteur de tuto #3 (Quantité : 1) Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 15/11/08 18:55    Sujet du message: Citer

zazaa a écrit:
Oui la fin des roquettes est détectée
En fait le bug vient bien du fait que si l'unité reçoit un ordre entre le début et la fin de la compétence, l'event "termine une competence" n'est pas pris en compte, même si c'est un projectile

le fait de se faire pause ou sleep est considéré aussi comme un ordre Shocked
du coup sa a l'air de fonctionner avec ca :
Jass:
local force f = CreateForce()

call UnitAddAbility( u, 'Avul' )
call UnitAddAbility( u, 'ACmi' )
call ForceAddPlayer(f, GetOwningPlayer(u))
call SetUserControlForceOff( f )


termine une compétence se produit justement quand un sort est interrompu (ou juste après achève quand le lancement du sort est achevé), t'es certaine qu'il ne se déclenche pas hmm ?

Sinon pour la pause/stun d'une unité tu peux consulter mon topic "la foire aux bugs" dans le forum autre.
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 zazaa
Membre actif


Inscrit le: 05 Aoû 2008
Messages: 197
Sujets: 24



MessagePosté le: 15/11/08 19:20    Sujet du message: Citer

Uiui certaine :

je m'en suis aperçue en augmentant le range des roquettes, car j'en avait marre de bouger mon bonhome pour eviter qui'il explose Razz
du coups on lui donne pas d'ordre sa bug plus

alors j'ai essayer de le pause pour eviter qu'on lui donne des ordres ( le sort de roquette dure entre 0 et 3 sec ) et de le depauser apres

alors pause unit sa annule l'ordre
et le fait de creer un dummy qui sleep le hero sa annule aussi

enfin sa annule pas vraiment car si on relance le sort apres et qu'il reussit, il se fait à tous les points en meme temps
alors pour l'event du 1er trigger j'ai mis : EVENT_PLAYER_UNIT_SPELL_CHANNEL ( sa recupere les points et c'est plus rapide )

et au cas ou on clique à la vitesse de la lumiere :
Jass:
call TriggerSleepAction( 5.00 )
if GetUnitAbilityLevelSwapped('ACmi', u) > 0 then
    call UnitRemoveAbility( u, 'ACmi' )
    call UnitRemoveAbility( u, 'Avul' )
    call SetUserControlForceOn( f )
    call TriggerClearActions( t )
    call DestroyTrigger( t )
endif

_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7146
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 15/11/08 19:58    Sujet du message: Citer

Mouai je suis sceptique, on se comprend peut être mal, mais je doute fortement que l'évènement ne se produise pas.
Je testerais moi même et confirmerais ma goujaterie et la trop grande confiance en moi ou bien ton manque d'expérience Razz
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 zazaa
Membre actif


Inscrit le: 05 Aoû 2008
Messages: 197
Sujets: 24



MessagePosté le: 15/11/08 20:15    Sujet du message: Citer

Rhoo tu me crois pas Crying or Very sad

si tu veux je te passe la map avec le trigger buggé le temps de copier coller et d'enlever mes modifs
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7146
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 15/11/08 21:52    Sujet du message: Citer

Il doit y avoir un manque de compréhension, j'ai testé et l'event termine se produit bien :

http://communots.free.fr/upload/testRoquette12267822.w3x
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 zazaa
Membre actif


Inscrit le: 05 Aoû 2008
Messages: 197
Sujets: 24



MessagePosté le: 15/11/08 22:13    Sujet du message: Citer

fait le bouger ton ingénieur et tu verras que l'evenement acheve n'y est pas^^

http://www.megaupload.com/fr/?d=NKHI5NUV

prend la warden lance le sort et fait la bouger apres tu relance le sort sans la faire bouger tu verra t'aura 2 bombes Shocked
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7146
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 15/11/08 22:18    Sujet du message: Citer

zazaa a écrit:
fait le bouger ton ingénieur et tu verras que l'evenement acheve n'y est pas^^

Acheve ne se produit que si le sort se termine correctement.
Termine se produit quand le sort est interrompu, ou en même temps que achève, enfin un pouillème après.

Quand je bouge mon ingénieur termine se produit bien mais pas achève, normal quoi.

C'est ce que j'ai essayé de t'expliquer tu ne sembles pas avoir saisi la différence entre termine et achève.
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 zazaa
Membre actif


Inscrit le: 05 Aoû 2008
Messages: 197
Sujets: 24



MessagePosté le: 15/11/08 23:07    Sujet du message: Citer

C'etait pour ca que je posait une question
j'avais pas compris que quand on donne un ordre ca annule l'event unit acheve une competence (termine n'existant pas) mais sa prend en compte arrete
dans se cas si je lance le trigger quand mon bonhome arrete, y'aura quand meme un truc qui va toucher le sol mais le trigger va se lancer avant.

On c'est juste mal compris : pour moi termine = acheve et arrete c'est une autre histoire mais je m'en suis pas occupée

Donc il faut bloquer le bonhome pour qu'il puisse achever sa compétence

C'etait la question existentielle du soir et sur ce je me coucherais plus intelligente ( ou pas ) et desolée de t'avoir fait perdre ton temps
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Troll-Brain
Ri1kamoua


Inscrit le: 23 Aoû 2007
Messages: 7146
Sujets: 147
Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance
Médailles: 2 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 16/11/08 10:15    Sujet du message: Citer

Y'a aucun soucis, ce forum est là pour aider à apprendre.
Par contre je ne trouve pas cela élégant de forcer l'utilisateur à achever le spell, enfin stoi qui voit.
_________________
Le violet, c'est moche.
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
La question posée dans ce topic a été résolue !

 
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