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

Comment tester un filtre sur une unité ?

 
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
 Magus
Membre a fort taux de post


Inscrit le: 13 Oct 2007
Messages: 994
Sujets: 25
Spécialité en worldedit: Codeur


MessagePosté le: 01/09/08 18:05    Sujet du message: Comment tester un filtre sur une unité ? Citer

Voila, j'ai un filtre (même plusieurs) de type boolexpr.
Et j'ai une unité.
J'aimerais connaitre le résultat du filtre sur cette unité. Comment je fais ?
J'ai pas trouvé de fonction pour simplement tester un boolexpr et de toutes façons il faudrait pouvoir affecter la valeur renvoyé par "GetFilterUnit()".

Quelqu'un à une idée ?
_________________
- 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
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Magus
Membre a fort taux de post


Inscrit le: 13 Oct 2007
Messages: 994
Sujets: 25
Spécialité en worldedit: Codeur


MessagePosté le: 02/09/08 09:59    Sujet du message: Citer

Laissez tomber. Plus besoin :/
_________________
- 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
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 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: 06/09/08 12:13    Sujet du message: Citer

Tu peux créer un trigger et ajouter le filtre en condition puis utiliser TriggerEvaluate.
Si ca te chante tu peux même recycler les trigger avec TriggerClearConditions.

Enfin je suis peut être à côté de la plaque, car je ne suis pas du tout certain d'avoir compris ce que tu voulais.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Magus
Membre a fort taux de post


Inscrit le: 13 Oct 2007
Messages: 994
Sujets: 25
Spécialité en worldedit: Codeur


MessagePosté le: 06/09/08 13:30    Sujet du message: Citer

Ce que j'appelle un filtre c'est ce qu'on utilise pour créer les groupes. Les fonctions basés sur GetEnumUnit() et qui renvoie un boolean.
J'essayais de trouver un moyen de tester un filtre sur une unité, sans être obligé de passer par un groupe ou je ne sais quoi.
Mais finalement j'ai contourné le problème Very Happy
_________________
- 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
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 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: 06/09/08 13:36    Sujet du message: Citer

Un ex ?
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Magus
Membre a fort taux de post


Inscrit le: 13 Oct 2007
Messages: 994
Sujets: 25
Spécialité en worldedit: Codeur


MessagePosté le: 06/09/08 13:43    Sujet du message: Citer

Jass:
//Un filtre
function bouh takes nothing returns boolean
    return IsUnitDeadBJ(GetEnumUnit())  //On s'en fous c'est pour l'exmple
endfunction

function test takes nothing returns nothing
    //Utilisation normale d'un filtre :
    local group g = CreateGroup()
    call GroupEnumUnitsOfPlayer(g, Player(0), Condition(function bouh))
endfunction

function test2 takes unit uneUnite returns nothing
    //Voila, j'ai une unité, et j'ai la boolexpr Condition(function bouh)).
    //Comment je peux savoir le résultat du filtre bouh si on lui injecte uneUnite ?
    call TesterFiltreSurUnite(Condition(function bouh), uneUnite)   //Evidement cette fonction n'existe pas, ça m'aurait arrrangé :D
endfunction


Voila.
_________________
- 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
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 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: 06/09/08 14:06    Sujet du message: Citer

Le plus simple serait d'utiliser une nouvelle fonction prenant en paramètre une unité et retournant un booléen.

Mais si tu souhaites éviter la multiplication de fonctions tu peux faire ceci, bien que je ne trouves pas cela très sexy, et bien sûr moins performant :

Jass:


globals
   unit U= null
endglobals

//Un filtre
function bouh takes nothing returns boolean
    if U== null then
       set U= GetEnumUnit()
    endif
    if IsUnitDeadBJ(U) then
       set U= null
       return true
    endif
    set U= null
    return false
endfunction

function test takes nothing returns nothing
    //Utilisation normale d'un filtre :
    local group g = CreateGroup()
    call GroupEnumUnitsOfPlayer(g, Player(0), Condition(function bouh))
endfunction

function test2 takes unit uneUnite returns nothing
   local boolean b

    set U= <une Unité>
    set b= bouh()
   
endfunction

_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Magus
Membre a fort taux de post


Inscrit le: 13 Oct 2007
Messages: 994
Sujets: 25
Spécialité en worldedit: Codeur


MessagePosté le: 06/09/08 14:23    Sujet du message: Citer

Troll-Brain a écrit:
Le plus simple serait d'utiliser une nouvelle fonction prenant en paramètre une unité et retournant un booléen.

Mais si tu souhaites éviter la multiplication de fonctions tu peux faire ceci, bien que je ne trouves pas cela très sexy, et bien sûr moins performant :

Jass:


globals
   unit U= null
endglobals

//Un filtre
function bouh takes nothing returns boolean
    if U== null then
       set U= GetEnumUnit()
    endif
    if IsUnitDeadBJ(U) then
       set U= null
       return true
    endif
    set U= null
    return false
endfunction

function test takes nothing returns nothing
    //Utilisation normale d'un filtre :
    local group g = CreateGroup()
    call GroupEnumUnitsOfPlayer(g, Player(0), Condition(function bouh))
endfunction

function test2 takes unit uneUnite returns nothing
   local boolean b

    set U= <une Unité>
    set b= bouh()
   
endfunction


Oui mais dans l'idée c'était une libraire qui demandait a l'utilisateur de donner des filtres, donc si je commence a demander a celui qui s'en sert "ouai faut faire ton filtre comme ça et pas autrement !!!" ça allait embêter Very Happy
_________________
- 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
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 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: 06/09/08 15:59    Sujet du message: Citer

Voilà ma solution :

Jass:
globals
    group G= CreateGroup()
    boolexpr B
    unit U= null
endglobals

function Check takes nothing returns boolean
    return GetFilterUnit()== U
endfunction

function TesterFiltreSurUnite takes conditionfunc filtre , unit u returns boolean
    call GroupClear(G)
    set U= u
    set B= And(filtre,Condition(function Check)) // Condition(function Check) devrait être remplacée par une variable globale boolexpr définie par une fonction initializer
    call GroupEnumUnitsInRange(G,GetUnitX(u),GetUnitY(u),0.0,B)
    call DestroyBoolExpr(B)

    return FirstOfGroup(G)== u
endfunction


PS : Tu confonds GetFilterUnit() (GroupEnum...) et GetEnumUnit() (ForGroup).
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Magus
Membre a fort taux de post


Inscrit le: 13 Oct 2007
Messages: 994
Sujets: 25
Spécialité en worldedit: Codeur


MessagePosté le: 06/09/08 16:04    Sujet du message: Citer

Effectivement j'ai confondu les 2. Et ta solution est bonne.
Mais bon comme je t'ai dit je n'en ai plus du tout besoin j'ai contourner le problème autrement Very Happy
_________________
- 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
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 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: 06/09/08 16:08    Sujet du message: Citer

Je ne pouvais savoir dans quelle mesure tu avais contourné le problème, si c'était simplement par dépit que tu t'étais tourné vers une autre solution et que celle ci ne t'aurait pas mieux satisfait.

Pi j'aime bien étaler mes solutions Very Happy
_________________
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