$comchan is not updated while the script is running, so it's same in what order you make the kicks.
About the "3 No such channel", are you sure you don't have some other script making that?


Code:
alias kball {
  ;  A raw KICK reason needs to start with a colon if it contains multiple words.
  if ($2) var %reason = $+(:,$2-)
  else var %reason = :Get out!
  var %nick = $1
  var %i = $comchan(%nick,0)
  while (%i) {
    var %chan = $comchan(%nick,%i)
    if ($me isop %chan) .raw $+(MODE %chan +b $address(%nick,2),$crlf,KICK %chan %nick %reason)
    dec %i
  }
}



Code:
//if ( khaled isgod ) echo yes | else echo no