amd86, give this one a shot:
on @*:join:#:c joinflood
alias xyjoinflood return 7 5
alias -l c {
tokenize 32 $($+($,xy,$1),2)
var %times $1, %period $2, %4 $chr(44), %f $+($network,%4,#,%4,$site,%4,$1)
hinc -mu2 Prot %f %period
if ($hget(Prot,%f) < $calc(%period * (%times - 1))) { return }
hdel Prot %f | var %f = $+(W,%4,%f)
hinc -u5 prot %f
if ($hget(Prot,%f) < 2) {
ban -k # $nick 2 No flooding! $nick has flooded more than %times times within %period seconds.
}
}