#################################################################################################################################################################
#THIS IS SCRIPT IS MADE BY COMPUTERTECH AND BLACKSHADOW
#################################################################################################################################################################
#Have A Script Request Use The Contact Options Below#
#####################################################
#CONTACT OPTIONS
#
#ComputerTech
#IRC IRC.FREENODE.NET ##COMPUTERTECH123
#EMAIL COMPUTERTECH312@GMAIL.COM
#GitHub page : https://github.com/computertech312
#####################################################
#BLaCkShaDoW
#IRC us.undernet.org #tcl-help
#EMAIL blackshadow@tclscripts.net ##
#GitHub page : https://github.com/tclscripts/
#####################################################
#ComputerTech Productions #
#####################################################
#Commands
#
# +999 To Activate The LockMode
# -999 To DeActivate The LockMode
# .clonescan to activate kickban scan
# !masskick kicks everyone not oped off the channel
#
#################################################################################################################################################################
# START OF EDITING
#################################################################################################################################################################
# put # before die below
#die "Please Make Sure You Have Edited lockdown.tcl The Way You Want It"
# Here you set the maximum number of clones to which the bot will act according to the configuration
set scn(maxclone) "3"
# Here you set the time frame in which the bot will scan the clone channel
set scn(time) "30"
#Set here what flags the clone scan command can activate. ( .clonescan )
set scn(flags) "o|o"
#Set to 1 for kickban
#Set to 0 for notify
set scn(what) "0"
#If you set to scn (what) "1" set the reason for the kickban here.
set scn(reason) "This host% host% has exceeded the number of clones accepted on %chan%. For more info contact Operators."
#If you have set to scn (what) "1" set here the duration of the money. (minute)
set scn(btime) "30"
#################################################################################################################################################################
#END OF EDITING # NO EDTING NEEDED BELOW
#################################################################################################################################################################
bind pub - "+999" do_lock_mode
bind pub - "-999" do_unlock_mode
bind pub $scn(flags) .clonescan scanner
setudef flag clonescan
bind pub n|m !masskick massk
proc do_lock_mode {nick ushost handle chan text} {
if {![botisop $chan]} {
putserv "privmsg $chan :/ I'm not op'd "
return 0
}
if {![isop $nick $chan]} {
putserv "privmsg $chan :Sorry $nick, but you are not op'd in $chan right now"
return 0
}
putserv "mode $chan +imVk lock"
}
proc do_unlock_mode {nick ushost handle chan text} {
if {![botisop $chan]} {
putserv "privmsg $chan :/ I'm not op'd "
return 0
}
if {![isop $nick $chan]} {
putserv "privmsg $chan :Sorry $nick, but you are not op'd in $chan right now"
return 0
}
putserv "mode $chan -imVk lock"
}
if {![info exists clonescanner_running]} {
timer $scn(time) clonescan:timer
set clonescanner_running 1
}
proc scanner {nick host hand chan arg} {
global scn
array set clones [list]
clonescan:act $chan $nick $hand 0 0
}
proc clonescan:timer {} {
global scn
set type 1
set channels ""
foreach chan [channels] {
if {[validchan $chan] && [channel get $chan clonescan]} {
lappend channels $chan
}
}
if {$channels != ""} {
clonescan:act $channels "nick" "chan1" 1 0
}
}
proc clonescan:act {channels nick hand type counter} {
global scn botnick
set chan [lindex $channels $counter]
set cc [expr $counter + 1]
set found_clones 0
set found_mask ""
set theclones ""
array set clones [list]
if {$chan != ""} {
set replace(%chan%) $chan
foreach user [chanlist $chan] {
set host [string tolower [lindex [split [getchanhost $user $chan] @] 1]]
if {[string match "*undernet.org*" $host]} {
continue
}
set replace(%host%) $host
lappend clones($host) $user
}
foreach clone [array names clones] {
set userlist [join $clones($clone)]
if {[llength [split $userlist]] >= $scn(maxclone)} {
set found_clones 1
lappend found_mask $clone
lappend theclones $clones($clone)
if {$type == "0"} {
putserv "PRIVMSG $nick :We Found [llength [split $userlist]] clones on $chan from the host $clone. these are: [join $clones($clone) ", "]"
}
}
}
if {$found_clones == "1"} {
if {$type == "1"} {
putserv " @$chan :[llength [split $theclones]] $found_mask. These are: [join $theclones " ,"]"
}
if {$scn(what) == "1"} {
foreach m $found_mask {
set mask "*!*@$m"
set replace(%chan%) $chan
set reason [string map [array get replace] $scn(reason)]
newchanban $chan $mask $botnick $reason $scn(btime)
}
}
}
}
if {([lindex $channels $cc] != "") && ($type == "1")} {
utimer 5 [list clonescan:act $channels $nick $hand $type $cc]
}
if {($type == "0") && ($found_clones == "0")} {
putserv "PRIVMSG $chan :\005\[BT\]\005 We didn't find clones on $chan."
}
}
proc massk {nick host hand chan var} {
global botnick
if {$var != ""} { set reason $var } else { set reason "cleaning up channel" }
if {[isop $botnick $chan]} {
putlog "masskick activated on $chan by $nick!"
putquick "MODE $chan +im"
timer 2 "puthelp \"MODE $chan -im\""
foreach user [chanlist $chan] {
if {![isop $user $chan] && ![matchattr [nick2hand $user $chan] b|b $chan] && ![matchattr [nick2hand $user $chan] o|o $chan]} {
putkick $chan $user $reason
}
}
} else { puthelp "NOTICE $nick :Gimme ops first!" }
}
putlog "lockdown.tcl Created By ComputerTech and BLaCkShaDoW Loaded Successfully"
##########################################################################################################################################
#CREATED BY COMPUTERTECH AND BLACKSHADOW
##########################################################################################################################################