Mass Join Protection

By wikkedfin on Dec 11, 2009

Mass Join Protection script.. just put it in Remotes and Right-Click in any channel and enable it.

on *:load: {
  set %massjoin.prot on
  set %mass.join.max 4
  set %massjoin.time 3
}

menu status,channel,menubar {
  Mass Join Protection ( %massjoin.prot ) ( %mass.join.max joins / %massjoin.time seconds )
  .Activate:/set %massjoin.prot on | /echo Mass Join Clone Protection has been turned 4ON
  .Adjust:set %mass.join.max $?"Max Clones Join?" | set %massjoin.time $?"Time(seconds)?" 
  .Disable:set %massjoin.prot off |  /echo Mass Join Clone Protection is Switched 4OFF
}

on ^1:join:#: {
  if (%massjoin.prot = on) && ($me isop $chan) {
    if ($nick == $me) { return } | inc %Mass.joins. $+ $address($nick,2)
    if ([ %Mass.joins. [ $+ [ $address($nick,2) ] ] ] > %Mass.join.Max) {
      .mode $chan +b $address($nick,2) 
      unset %Mass.joins. $+ $address($nick,2) | filter $address($nick,2) 04Detected POSSIBLE clone mass join | halt
    }
    .timer 1 %Massjoin.Time unset %Mass.joins. $+ $address($nick,2)
  }
}
alias filter.kick {
  if ($me isop $$1) {
    %i = 0
    :inc
    inc %i
    if ($nick(#,%i) == $null) { halt }
    if ($nick(#,%i) == $me) { inc %i }
    if ($address($nick(#,%i),2) = $$2) {
      kick $$1 $nick(#,%i) 04Detected POSSIBLE clone mass join
    }
    goto inc
  }
}

Comments

Sign in to comment.
johnfm   -  Mar 27, 2011

i need mass join kill or kline on snotice.

 Respond  
Cheiron   -  Dec 12, 2009

/mode #channel +f[6j#R5]5 for example if you are on unreal ircd's also and /mode #channel +j 1 3 for example for a per user join/part protection

 Respond  
Master-Of-Death   -  Dec 12, 2009

agreed

on @*:JOIN:*:{ inc -u5 %mass 1
if (!%nick) {
set -u5 %nick $nick
}
elseif (%nick) && (!%nick1) {
set -u5 %nick1 $nick
}
elseif (%nick1) && (!%nick2) {
set -u5 %nick2 $nick
}
elseif ($address($nick,2) == %banmask) {
raw -q mode +b $address($nick,2)
raw -q kick # $address($nick,2)
}
elseif (%mass >= 3) {
raw -q kick # %nick Mass Join
raw -q kick # %nick1 Mass Join
raw -q kick # %nick2 Mass Join
}
else {
set -u3 %banmask $address($nick,2)
}
}
 Respond  
Silo   -  Dec 11, 2009

things like

elseif (%nick !== $null) && (%nick1 == $null)

can also be made to look cleaner using ! as a prefix:

elseif (%nick) && (!%nick1)

You don't to use things "doesn't equal null" with a variable like that since %nick either exists or it doesn't.

 Respond  
Master-Of-Death   -  Dec 11, 2009
raw JOIN:*:{ inc -u5 %mass 1
if (%nick == $null) { 
set -u5 %nick $nick
}
elseif (%nick !== $null) && (%nick1 == $null) { 
set -u5 %nick1 $nick
}
elseif (%nick1 !== $null) && (%nick2 == $null) {
set -u5 %nick2 $nick
}
elseif ($address($nick,2) == %banmask) { 
raw -q mode +b $address($nick,2)
raw -q kick # $address($nick,2)
}
elseif (%mass >= 3) {
raw -q kick # %nick Mass Join
raw -q kick # %nick1 Mass Join
raw -q kick # %nick2 Mass Join
}
else { 
set -u3 %banmask $address($nick,2)
}
}
 Respond  
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.