%flood . [ $+ [ $nick ] ] is a perfectly good way to set a variable, so I'm not sure what you mean with that comment.
/silence is not a mIRC command, but is provided by the network you are on, so it does'work on some (like DALnet) and not others (like Efnet)
Third, if you are worried about users sending you a valid message in those 5 measely seconds you are ignoring everything, then you should get your priorities straightened out. If a channel flood occurs, the only thing that matters is stopping it. And if you're that worried about missing a query, just ignore the channel alone then.