There's no point in checking if ($nick(#,0)) <= 1 because it could never go below 1 for as long as you're in the channel..

Here's some basic ones.

on *:QUIT:{ if ($nick != $me) { var %x = 1 | while ($comchan($nick,%x)) { var %v1 = $v1 | if ($nick($v1,0) == 1) { hop -c %v1 } | inc %x } }
on *:PART:#:{ if ($nick != $me) && ($nick($chan,0) == 1) { hop -c $chan } }

However, I extended some, and I don't think the next on quit works.

1.No point cycling a channel that's +i.
2.No point in cycling a channel when you're op.
3.If the channel is +r, ChanServ will -oh you you so you still get the +v, so no point in hopping it if you are +v.

Code:
on !*:part:#: { 
  if ($nick($chan,0) > 2) { /halt }
  else {
    if ($me isreg $chan) { 
      if (i !isin $chan($active).mode) {
        /hop $chan | /mode $chan +vh $me $me | echo $chan on part event
      } 
    }
  } 
}
on !*:quit: { 
  var %i = 1 
  while ($comchan($nick,%i)) { 
    if ($nick($comchan($nick,%i),0) > 2) { /halt }
    else {
      if (r !isincs $chan($chan).mode) && (i !isin $chan($chan).mode) {
        if ($me isreg $comchan($nick,%i)) {
          /hop -c $comchan($nick,1) | /mode $comchan($nick,%i) +vh $me $me 
        }
      } 
      if (r isincs $chan($chan).mode) {
        if ($me isreg $comchan($nick,%i)) {
          /hop -c $comchan($nick,%i)) | /mode $comchan($nick,%i) +vh $me $me
        }
      }
      inc %i 
    } 
    unset %i 
  } 
}