Well as I tried to explain .. using $ulevel can't work.
That alias would be freezing rather than crashing miRC. You have bracket mismatches and the /dec is outside the while { }....
Edit: Try this...
on me:*:join:#needhelp:inc %who. $+ # | who #
raw 315:*:{
if %who. [ $+ [ $2 ] ] {
unset %who. $+ $2
.timer 0 60 check.idlers $2
halt
}
}
alias check.idlers {
if $chan($$1).ial != $true { echo -ec i $1 IAL is not full for $1 | return }
if $me !isop $1 { echo -ec i $1 You are not opped on $1! | return }
var %i = 1
while $nick($1,%i,r) {
%a = $ifmatch
if !$istok(10 11,$level($ial(%a)),32) && $nick($1,%a).idle > 20 {
ban -ku300 $1 %a 2 Please do not idle. Return in a while if you need help or want to help.
}
inc %i
}
}
raw 352:*:if %who. [ $+ [ $2 ] ] { halt }
To use it as an /alias you must specify the #channelname..
/check.idlers #needhelpEdit again: Added check for your op status.