• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

Simple Filter Sytem v1.0

Level 5
Joined
Jan 18, 2007
Messages
59
Simple Filter Sytem v1.01

**************************************************************************************
*************************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
==============================================================================
JASS:
library SFS initializer init
globals
private integer array SFSB
boolexpr SFS = null
constant integer Null = -1
constant integer True = 1
constant integer False = 0
endglobals
private function H2I takes handle h returns integer
    return h
    return 0
endfunction
private function I2B takes integer i returns boolean
    return i
    return false
endfunction
function ClearFilter takes nothing returns nothing
    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 takes player p, integer Enemy, integer Visibility, unittype u, integer OnlyThatUnit, integer Alive returns nothing
if p!= null then
   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 takes nothing returns boolean
    local unit u = GetFilterUnit()
    local boolean r = true
    if SFSB[0] != Null and SFSB[1]!=Null then
        if IsUnitEnemy(u,Player(SFSB[0]))!=I2B(SFSB[1]) then
           return false
        endif
    endif
    if SFSB[2] != Null then
        if IsUnitVisible(u,Player(SFSB[0]))!=I2B(SFSB[2]) then
            return false
        endif
    endif
    if SFSB[3]!=Null then
       if IsUnitType(u,ConvertUnitType(SFSB[4]))!=I2B(SFSB[3]) then
            return false
        endif
    endif
    if SFSB[5]!=Null then
       if (GetWidgetLife(u)>.405)!=I2B(SFSB[5]) then
          return false
        endif
    endif
    set u = null
    return r     
endfunction
private function init takes nothing returns nothing
set SFS=Condition(function SFSCon)
endfunction
endlibrary

this is just a remix of Panda's AFS
Download SFS v1.01
 
Last edited:
Level 5
Joined
Jan 18, 2007
Messages
59
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
 
Top