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
|
Posté le: 01/09/08 18:05 Sujet du message: Comment tester un filtre sur une unité ? |
|
|
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 |
|
 |
Magus Membre a fort taux de post

Inscrit le: 13 Oct 2007 Messages: 994 Sujets: 25 Spécialité en worldedit: Codeur
|
Posté le: 02/09/08 09:59 Sujet du message: |
|
|
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 |
|
 |
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...)
|
Posté le: 06/09/08 12:13 Sujet du message: |
|
|
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 |
|
 |
Magus Membre a fort taux de post

Inscrit le: 13 Oct 2007 Messages: 994 Sujets: 25 Spécialité en worldedit: Codeur
|
|
Revenir en haut |
|
 |
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...)
|
Posté le: 06/09/08 13:36 Sujet du message: |
|
|
Un ex ? _________________
|
|
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/08 13:43 Sujet du message: |
|
|
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 |
|
 |
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...)
|
Posté le: 06/09/08 14:06 Sujet du message: |
|
|
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 |
|
 |
Magus Membre a fort taux de post

Inscrit le: 13 Oct 2007 Messages: 994 Sujets: 25 Spécialité en worldedit: Codeur
|
|
Revenir en haut |
|
 |
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...)
|
Posté le: 06/09/08 15:59 Sujet du message: |
|
|
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 |
|
 |
Magus Membre a fort taux de post

Inscrit le: 13 Oct 2007 Messages: 994 Sujets: 25 Spécialité en worldedit: Codeur
|
|
Revenir en haut |
|
 |
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...)
|
|
Revenir en haut |
|
 |
|