.

luorax

Invasion in Duskwood
Reaction score
67
JASS:
globals
    private integer array BlackList
    private integer StackLevel=0
endglobals

private function AddToList takes integer id returns nothing
    set StackLevel=StackLevel+1  // Not giving value to "BlackList[0]"
    set BlackList[StackLevel]=id
endfunction

private function Filter takes unit toFilter returns boolean
    local integer id=GetUnitTypeId(toFilter)
    local integer i=1
    loop
        exitwhen i>StackLevel
        if id==BlackList<i> then
            return false
        endif
        set i=i+1
    endloop
    return true
endfunction</i>


Simple as that. Alternatively, if those units share an attribute (like they're all creeps, etc), you can create a Sphere based dummy ability and check if the unit has that ability. That's what I'm doing on my map for heroes, creeps, minions, towers, and so forth.
 

NoobImbaPro

You can change this now in User CP.
Reaction score
60
Dude learn jass more and then come to make scripts, arrays are your best friend. Do as luorax says.
Try to make more things with arrays until you learn them for good. Don't stop only on what they give you.
 

tommerbob

Minecraft. :D
Reaction score
110
Dude learn jass more and then come to make scripts, arrays are your best friend. Do as luorax says.
Try to make more things with arrays until you learn them for good. Don't stop only on what they give you.

Your comment is both rude and unnecessary, learn some respect. If you have nothing constructive to add to the conversation, don't say anything.
 

kingkingyyk3

Visitor (Welcome to the Jungle, Baby!)
Reaction score
216
Actually the best way would be using array for O(1) checking, either table or hashing unit id into array will do.
JASS:
library Test requires Table initializer OnInit

globals
    private Table UnitTypeFilter
endglobals

function BlacklistUnitType takes integer uid returns nothing
    set UnitTypeFilter[uid]=1
endfunction

function IsUnitTypeBlacklisted takes integer uid returns boolean
    return UnitTypeFilter[uid]==1
endfunction

private function OnInit takes nothing returns nothing
    set UnitTypeFilter=Table.create()
endfunction

endlibrary

When the blacklist becomes bigger, this script will become faster than O(n) searching, which was introduced in luorax and your script.
 

NoobImbaPro

You can change this now in User CP.
Reaction score
60
@tommerbob
So giving some helpful advice became disrespectful?
If everyone came here after reading only "if then else" and wrote his question about making something better
without giving a try himself it wouldn't be a spam?

@kingkingyyk3
He should first learn O(n) complexity with loops before coming to O(1) hashed in arrays, but well done mate.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top