you could try this (i havend added warnings but it sets ban first time see if this works u can add warning later, also make sure you have the putmode code loaded for mode stacking) :

Code


on *:JOIN:#chan,#chan1,#chan2,#chan3,#chan4,#chan5:{
  if ($round($calc($regex($nick,/[A-Z]/g) / $regex($nick,/[A-Za-z]/g) * 100),0) > 40) {
    if ($+(~q:,$address($nick,2)) !isban $chan) { putmode $chan +b $+(~q:,$address($nick,2))  } 
  } 
}



ON  *:nick: {
  var %loopnckz = 1
  while ( $comchan($newnick,%%loopnckz) != $null )  {
    var %chan $v1   
    if (!$istok(#chan #chan1 #chan2 #chan3 #chan4 #chan5 ,%chan,32)) { break }  	
    if ($nick(%chan,$me,@%&~)) {
   if ($round($calc($regex($nick,/[A-Z]/g) / $regex($nick,/[A-Za-z]/g) * 100),0) > 40) { 
   if ($newnick isvoice %chan) { putmode %chan -v $newnick }
    if ($+(~q:,$address($newnick,2)) !isban %chan) { putmode %chan +b $+(~q:,$address($newnick,2))  } 
    }
    inc %%loopnckz
  }
}