Code:
 on ^*:text:*:#:{
  if $hget(ignore,$nick) || $hfind(ignore,$address($nick,5),1).data {
    halt
  }
  else echo $chan $+(<,$nick,>) $1-
}
menu nicklist,channel {
  Add to Ignore : add.ignore $iif($snicks,$snicks,$$?="Nicks to be ignored")
  Remove from Ignore : rem.ignore $iif($snicks,$snicks,$$?="Nicks to be removed")
}
alias add.ignore {
  var %nicks = $replace($1-,$chr(44),$chr(32)), %a = 1, %b = $numtok(%nicks,32)
  while %a <= %b {
    .hadd -m Ignore $gettok(%nicks,%a,32) $iif($address($nick,5),$v1,$false)
    inc %a
  }
}
alias rem.ignore {
  var %nicks = $replace($1-,$chr(44),$chr(32)), %a = 1, %b = $numtok(%nicks,32)
  while %a <= %b {
    .hdel Ignore $gettok(%nicks,%a,32)
    inc %a
  }
}
on *:start:{
  if !$hget(ignore) { .hmake Ignore 10 }
  if $exists(ignore.hsh) { .hload Ignore ignore.hsh }
}
on *:exit:{
  .hsave -o Ignore ignore.hsh
}
on *:disconnect:{
  .hsave -o Ignore ignore.hsh
}
 


I coded this as part of a massive channel control project that I'm working on. It has been tested and does work. If you really want the address to be stored in wildcard format, let me know which mask you want to work with (it's easiest to work with only 1 mask, rather than have to check for all of the possibilities). If you prefer to re-code it yourself, details regarding using wildcards in a hash table can be found under /help $hfind (note the parameter options near the bottom).