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=ca14703d03590a5d6e09d63934a3faf4Mé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

Problème de conception
Aller à la page Précédente  1, 2
 
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
 Sapeur-Goblin
Floodeur prématuré


Inscrit le: 14 Oct 2009
Messages: 719
Sujets: 40
Spécialité en worldedit: Les bugs
Médailles: 1 (En savoir plus...)
Créateur d'unité (Quantité : 1)

MessagePosté le: 03/02/13 20:51    Sujet du message: Citer

Non, q reste une variable globale non array.
Voici comment je voyais la chose :
Jass:
globals
    real q = 0
englobals

struct Event
    private static real it = 0
    private real r

    static method create takes nothing returns thistype
        local thistype this = allocate()
        set it = it + 0.01
        set r = it
        return this
    endmethod

    method fire takes nothing returns nothing
        set q = r
        set q = 0
    endmethod

    method destroy takes nothing returns nothing
        call deallocate()
    endmethod

    method register takes trigger t returns nothing
        call RegisterTriggerVariableMachin(t, q, r)
    endmethod

endstruct


Ainsi, lorsque l'on crée un instance X, X.r = 0.01.
On register un trigger t qui se déclenche lorsque q = X.r, soit 0.01.
On détruit X, on recrée. X.r = 0.02 cette fois-ci. En faisant X.fire(), q = 0.02, donc t n'est pas déclenché.

Edit : Le problème c'est que le déclencheur leak d'un event, mais bon, c'est pas très grave. Et aussi c'est pas très propre Wink. Quelqu'un a une meilleure solution?
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 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...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 04/02/13 19:53    Sujet du message: Citer

Pour être franc j'ai pas envie d'y réfléchir en fait Rolling Eyes
Et de toute façon tant que ca reste pour toi osef que ca soit propre ou non, du moment que ca fonctionne correctement.
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Sapeur-Goblin
Floodeur prématuré


Inscrit le: 14 Oct 2009
Messages: 719
Sujets: 40
Spécialité en worldedit: Les bugs
Médailles: 1 (En savoir plus...)
Créateur d'unité (Quantité : 1)

MessagePosté le: 04/02/13 20:49    Sujet du message: Citer

Ok, pas grave, de toute façon je ne suis pas sûr qu'il existe une façon de faire ça proprement.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Sapeur-Goblin
Floodeur prématuré


Inscrit le: 14 Oct 2009
Messages: 719
Sujets: 40
Spécialité en worldedit: Les bugs
Médailles: 1 (En savoir plus...)
Créateur d'unité (Quantité : 1)

MessagePosté le: 17/02/13 18:33    Sujet du message: Citer

Petit problème : GetTriggerEventId renvoie le même identifiant pour deux Event (lib' de Nestharus) différents Surprised. Comment marche cette fonction?

Peut-être que je devrais complètement changer de méthode sinon?
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Tirlititi



Inscrit le: 21 Fév 2010
Messages: 1785
Sujets: 22
Spécialité en worldedit: La modestie
Médailles: 1 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 17/02/13 21:08    Sujet du message: Citer

Ben ça doit être que tous les events de Nestharus utilisent le même event jass... J'ai jamais eu de problème avec cette fonction, moi.

Elle s'utilise comme ça, normalement :
Jass:
if GetTriggerEventId()==EVENT_PLAYER_LEAVE then
    // ....
elseif GetTriggerEventId()==EVENT_PLAYER_DEFEAT then
    // ....²
endif

_________________
Warcraft III, c'était mieux avant. Y'avait des purs chefs-d'oeuvres du mapping !
Road Of Glory (par moi)
Casse-briques (par moi)
Temple de Glace (par moi)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Sapeur-Goblin
Floodeur prématuré


Inscrit le: 14 Oct 2009
Messages: 719
Sujets: 40
Spécialité en worldedit: Les bugs
Médailles: 1 (En savoir plus...)
Créateur d'unité (Quantité : 1)

MessagePosté le: 17/02/13 21:31    Sujet du message: Citer

Ok, ça explique tout, merci Smile.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Sapeur-Goblin
Floodeur prématuré


Inscrit le: 14 Oct 2009
Messages: 719
Sujets: 40
Spécialité en worldedit: Les bugs
Médailles: 1 (En savoir plus...)
Créateur d'unité (Quantité : 1)

MessagePosté le: 18/02/13 17:30    Sujet du message: Citer

J'ai un peu modifié la librairy Event et je comprends pas du tout un truc. J'ai ajouté un membre static last pour connaître l'événement qui a été déclenché. Ce qui donne dans la méthode fire :
Jass:

    local thistype p = last
    set q=0
    set q=this
    set last = this
    call TriggerEvaluate(e[this])
    set last = p


Et ce qui est bizarre, c'est que les déclencheurs se comportent comme si cette méthode était comme ça :
Jass:

    local thistype p = last
    set q=0
    set q=this
    set last = this
    set last = p
    call TriggerEvaluate(e[this])


En effet, quand j'utilise Event.last, j'obtiens toujours 0. Et quand je mets en commentaire
Jass:
set last = p

j'obtiens la bonne valeur.

Comment c'est possible? Un TriggerEvaluate déclenche les actions plus tard? J'ai aussi testé avec TriggerExecute, et même problème.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Tirlititi



Inscrit le: 21 Fév 2010
Messages: 1785
Sujets: 22
Spécialité en worldedit: La modestie
Médailles: 1 (En savoir plus...)
Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 18/02/13 17:52    Sujet du message: Citer

Difficile de dire avec ce petit bout de code, mais TriggerEvaluate est instantané.
Mets donc des "thistype.last" à la place de last seulement parce que là c'est vraiment moche et ça ne devrait pas être accepté par le compilateur à mon sens (déjà j'ai du mal avec ".last"...).

Gogo gadget-o-DebugMsg ensuite.
_________________
Warcraft III, c'était mieux avant. Y'avait des purs chefs-d'oeuvres du mapping !
Road Of Glory (par moi)
Casse-briques (par moi)
Temple de Glace (par moi)
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Sapeur-Goblin
Floodeur prématuré


Inscrit le: 14 Oct 2009
Messages: 719
Sujets: 40
Spécialité en worldedit: Les bugs
Médailles: 1 (En savoir plus...)
Créateur d'unité (Quantité : 1)

MessagePosté le: 18/02/13 18:02    Sujet du message: Citer

Je suis un boulet x).
J'avais totalement zappé qu'une partie des actions étaient déclenchées par
Jass:

    set q=0
    set q=this

Et thistype.last n'était mis à jour qu'après ces deux actions.
Merci, ça marche maintenant.
_________________
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
Aller à la page Précédente  1, 2
Page 2 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