**************************************************************************************
*************************Simple Filter System v1.01***********************************
**********************************************************************************
******************************By: Matrix****************************************
Pros:
1) Allow to create filters
2) Consists of 68 lines
3) Can be confugured up to 4 options
Cons:
1) Mb smb find it not very user friendly
====================================================================================
PURPOUSE OF SFS:
====================================================================================
* Simply create filters
* Currently supported alliance, visibility, unittype and aliveness
* These are the only 4 handle types I found that are in need
If you have the need for some other handle types please let me know
====================================================================================
Changelog v1.01
====================================================================================
1) Less size
2) Changed the way of setting filter
3) More Cleaner&Leakless code
====================================================================================
How to implant:
====================================================================================
The system is very easy. The only things you'll have to do to implement the system is to
copy the trigger "SFS" into your map
====================================================================================
Quick function index:
====================================================================================
__________________________________________________________________________________________|
Set Functions - these functions makes ur boolexpr
----------------------------------------------------------------------
function SetSFS takes player p, integer Enemy, integer Visibility, unittype u, integer OnlyThatUnit, integer Alive returns nothing
player p - the player (owner of caster); use null if not needed
integer Enemy - if you want group filter enemies of the player use True; Ally - use False;
if You don't want use this option use Null
integer Visibilty - If you wants group filter only visible units for player p use True; Only Non-Visible use False;
All - use Null
unittype u - the unittype u only (not) allowed to be in group
integer OnlyThatUnit - if You want filter group with only that unit-type use True; Except that unittype use False;
if You don't want use this option use Null
integer Alive - if You want to filter only alive units use True; only dead use False;
All - use Null
__________________________________________________________________________________|
Clear Function
----------------------------------------------------------------------
ClearFilter() // Use only after using filter
__________________________________________________________________________________________|
====================================================================================
How to use:
====================================================================================
* Lets assume you want to create some spell filter
You would do the following:
Example
1. call SetSFS(GetOwningPlayer(GetTriggerUnit()),True,True,null,Null,True)
2. call GroupEnumUnitsInRange(group,x,y,range,SFS)
3. call ClearFilter()
====================================================================================
SPECIAL THANKS TO:
====================================================================================
* PandaMine - AFS from which I did this sys
HOW TO IMPORT:
* Just create a trigger named SFS
* convert it to text and replace the whole trigger text with this one
==============================================================================
Hopefully this system will help you!
~Matrix 7.08.08
==============================================================================
Code
library SFS initializer init globals privateintegerarray SFSB boolexpr SFS = null constantinteger Null = -1 constantinteger True = 1 constantinteger False = 0 endglobals privatefunction H2I takeshandle h returnsinteger return h return 0 endfunction privatefunction I2B takesinteger i returnsboolean return i returnfalse endfunction function ClearFilter takesnothingreturnsnothing set SFSB[0]=Null set SFSB[1]=Null set SFSB[2]=Null set SFSB[3]=Null set SFSB[4]=Null set SFSB[5]=Null endfunction
function SetSFS takesplayer p, integer Enemy, integer Visibility, unittype u, integer OnlyThatUnit, integer Alive returnsnothing if p!= nullthen set SFSB[0] = GetPlayerId(p) else set SFSB[0] = Null endif set SFSB[1] = Enemy set SFSB[2] = Visibility set SFSB[3] = OnlyThatUnit set SFSB[4] = H2I(u) set SFSB[5] = Alive endfunction
function SFSCon takesnothingreturnsboolean localunit u = GetFilterUnit() localboolean r = true if SFSB[0] != Null and SFSB[1]!=Null then if IsUnitEnemy(u,Player(SFSB[0]))!=I2B(SFSB[1])then returnfalse endif endif if SFSB[2] != Null then if IsUnitVisible(u,Player(SFSB[0]))!=I2B(SFSB[2])then returnfalse endif endif if SFSB[3]!=Null then if IsUnitType(u,ConvertUnitType(SFSB[4]))!=I2B(SFSB[3])then returnfalse endif endif if SFSB[5]!=Null then if(GetWidgetLife(u)>.405)!=I2B(SFSB[5])then returnfalse endif endif set u = null return r endfunction privatefunction init takesnothingreturnsnothing set SFS=Condition(function SFSCon) endfunction endlibrary
I dont proud of this sys by the time coz it's not very user friendly and it's just a remix of Panda's Advanced Filter System.
Although I was thinking hard how to do it really SFS but it's a pitty boolean can't be null (only true or false0 otherwise this sys was much simpliest and faster.
I want change it a lot coz I was wondering about filters// they really annoys jassers&spellmakers