buyrun size direk bu kodun orjinalini çevrilmemiş halini vereyim..bundan daha iyi badnick scripti piyasada yok. pek çoğunu denemiş biri olarak rahatlıkla söyleyebilirim.
not: kopyala -yapıştır yaparken Windows notepad ile eklenen kodlarda kayma bozulma bazı karakterlerin yok olması vs gibi problemler olabiliyor.bu tür kodlarda size bu kodları kaydetmek için
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] notepad++'yı önerebilirim bu tür sorunlar bunla olmaz copy-paste olayında..
Kod: Kodu kopyalamak için üzerine çift tıklayın!
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# BADNICK.TCL
set badnick_version "2.3"
# PREVIOUS CHANGELOG:
# (removed the changelog entries about e-ops; using the eBotnet system made it unused)
# Unk: 12Jan2004: TODO: Allow these to be done in PM.. Find a way to doglobal securly.
# Unk: 11Jan2004: Initial creation
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# TODO:
# Check the ban mask format, probably using a regexp.
# Add a way to do it in PM.. bind msg o|o blahbadnick #chan *!*@*
# Make the banlist date/time readable for humans :)
#
#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# init on rehash
set listbadnick 0
unset listbadnick
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# LISTBANS - LISTBADNICK
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bind pub - 'ListBadNick BadNick:pub:ListBadNick
bind pub - 'ListBadNicks BadNick:pub:ListBadNick
bind pub - 'ListBans BadNick:pub:ListBadNick
proc BadNick:pub:ListBadNick {nick uhost hand chan arg} {
if { ![isop $nick $chan] && ![ishalfop $nick $chan] } {
return 0
}
global listbadnick
if { [ info exists listbadnick ] == 1 } {
putserv "PRIVMSG $nick :Someone is currently viewing a Banlist, please try again later."
return 0
}
set listbadnick 1
puthelp "PRIVMSG $nick :Start Internal Banlist for $chan:"
foreach ban [banlist $chan] {
# hostmask, comment, expiration timestamp, time added, last time active, and creator
# ban mask
set banmask [lindex $ban 0]
# comment
set bancomment [lindex $ban 1]
# expire - not used, all are perm
# set banexpire [ctime [expr [lindex $ban 2]]]
# time added
set bantimeadded [ctime [expr [lindex $ban 3]]]
# time last active
set banlastactive [ctime [expr [unixtime] - [lindex $ban 4]]]
# creator
set bancreator [lindex $ban 5]
if { $arg == "full" | $arg == "all" } {
puthelp "PRIVMSG $nick :$chan Banlist: $banmask ($bancomment) added by $bancreator on $bantimeadded (Last active: $banlastactive)"
} elseif { $arg == "raw" } {
puthelp "PRIVMSG $nick :$chan Banlist: $ban"
} else {
puthelp "PRIVMSG $nick :$chan Banlist: $banmask ($bancomment) by $bancreator"
}
}
puthelp "PRIVMSG $nick :End Internal Banlist for $chan"
unset listbadnick
}
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ADDBAN - ADDBADNICK
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bind pub - 'AddBadNick BadNick:pub:AddBadNick
bind pub - 'AddBan BadNick:pub:AddBadNick
proc BadNick:pub:AddBadNick {nick uhost hand chan arg} {
# Where the hell does this come from ??
global EngNickChangeTrigWarn EngNickChangeMsgBan EngNickChangeBanTime
if { ![isop $nick $chan] && ![ishalfop $nick $chan] } {
return 0
}
set name [lindex [split $arg] 0]
set reason [join [lrange [split $arg] 1 end]];
if { $reason == "" } {
puthelp "NOTICE $nick :Please provide a reason."
return 0
}
# No need to retest the reason, we just did it...
if { ($name == "") || ($reason == "") } {
puthelp "NOTICE $nick :Please provide a name and a reason."
return 0
}
if {( [string first "!" $name ] == -1 )} {
newchanban $chan $name!*@* $nick \"$reason\" 0 none
puthelp "NOTICE $nick :$name!*@* should be added to $chan nickban list."
} else {
newchanban $chan $name $nick \"$reason\" 0 none
puthelp "NOTICE $nick :$name should be added to $chan nickban list."
}
}
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# REMBAN - REMBADNICK
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bind pub - 'RemBadNick BadNick:pub:RemBadNick
bind pub - 'RemBan BadNick:pub:RemBadNick
proc BadNick:pub:RemBadNick {nick uhost hand chan arg} {
# Where the hell does this come from ??
global EngNickChangeTrigWarn EngNickChangeMsgBan EngNickChangeBanTime
if { ![isop $nick $chan] && ![ishalfop $nick $chan] } {
return 0
}
if { ($arg == "") } {
puthelp "NOTICE $nick :You need to tell me which ban to remove =)"
return 0
}
set name [lindex $arg 0]
if {( [string first "!" $name ] == -1 )} {
if ([killchanban $chan $name!*@*]) {
puthelp "NOTICE $nick :$name!*@* should be removed from $chan nickban list"
} else {
puthelp "NOTICE $nick!*@* :Nickban wasn't removed."
}
return 0
}
if ([killchanban $chan $name]) {
puthelp "NOTICE $nick :$name should be removed from $chan nickban list"
} else {
puthelp "NOTICE $nick :Nickban wasn't removed!"
}
}
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# FILTER
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
proc BadNick:filter {str} {
# regsub -all --
{\003[0-9]{0,2}(,[0-9]{0,2})?|\017|\037|\002|\026|\006|\007} $str "" str
regsub -all -nocase {[^a-z*?@!]} $str "" str
return $str
}
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
putlog "BadNick v$badnick_version loaded."