Just to clean it up a little...

Code:
on !*:JOIN:#:{
  inc -u10 $+(%,join.,$nick,$chan)
  if ($($+(%,join.,$nick,$chan),2) >= 3) { 
    if ($me isop #) { kick $chan $nick Join Flood Protection }
  }
}


Reasons:
1) You don't need to evaluate (using []'s) when incrementing a dynamic variable. You could use %join. $+ $+($nick,$chan) using the same style that you were using. I just combined everything into $+() rather than only half.

2) $(,2) is imo better than using []'s. []'s are for order of operations and although they usually work for dynamic variable evaluation, that really isn't what their purpose is. $(,2) (short for $eval(,2)) is meant for that type of evaluation. It won't hurt in this script regardless which way you choose, of course.

3) >= instead of == ... if the person rejoins immediately after the kick, the count will be 4 and with ==, the nick won't get kicked.

4) ! on the event line ... this prevents your script from kicking you, which I doubt you want to happen.

5) You *could* use @ on the event line instead of checking isop, but in this case, I would use the isop check where you have it because the way it is now, if you aren't op and someone joins 3 times and then you become op and they join again, you'll kick them. If you use @, the /inc won't happen and so you won't start counting rejoins until you are an op. That could mean more joins before you kick the person.


Invision Support
#Invision on irc.irchighway.net