### Thanks to C|ty_Hunter, M4rUsCi4, Neiken and all the members of #egghelp for the helpful test.
set ver “1.6″
set csrehash 30
set msgdelay 8
set reasonsfile “scripts/reasons.txt”
set lamahreason “lamer!”
set noexec “Accesso negato. Non e` possibile eseguire comandi kick e ban su utenti della stessa lista o superiore.”
set tmpchans “”
set dynlist “”
set dyntmpchan “”
set tmpnick “”
set gnick “”
set gnuser “”
set gchan “”
set gcmd “”
set timeleft 0
set listinuse 0
set csmask “ChanServ!service@GarantiShell.com”
set liststrig “*list di*”
set xoplist “*) * (*) by *”
set stopcode “*Fine della Lista*”
bind pub – !op giveop
bind pub – !deop takeop
bind pub – !ban buser
bind pub – !kick kickuser
bind pub n !csrehash rehashlists
bind raw – “NOTICE” addoptolist
bind raw – 307 setid
set flood-msg 0
proc checkid {nick} {
putserv “whois $nick”
}
proc setid {from keyword text} {
global gnick gchan gcmd
checkop $gnick $gchan $gcmd
}
proc checklevel {nick channel} {
global tmpchans
foreach tmplevel $tmpchans {
set dynnick [join [lindex [split $tmplevel ":"] 0]]
set dynchan [join [lindex [split $tmplevel ":"] 1]]
set dynlevel [join [lindex [split $tmplevel ":"] 2]]
if {([string tolower $nick] == [string tolower $dynnick]) && ([string tolower $channel] == [string tolower $dynchan])} {
return $dynlevel
}
}
}
proc checkop {nick channel comando} {
global tmpchans gnuser greason noexec
foreach tmpchan $tmpchans {
set dynnick [join [lindex [split $tmpchan ":"] 0]]
set dynchan [join [lindex [split $tmpchan ":"] 1]]
if {([string tolower $gnuser] == [string tolower $dynnick]) && ([string tolower $channel] == [string tolower $dynchan])} {
switch — [string tolower $comando] {
op { putserv “mode $channel +o $nick” }
deop { putserv “mode $channel -o $nick” }
kick { if {[checklevel $gnuser $channel] > [checklevel $nick $channel]} {
putserv “kick $channel $nick :$greason”
} else { putserv “notice $gnuser :$noexec” }
}
ban { if {[checklevel $gnuser $channel] > [checklevel $nick $channel]} {
putserv “mode $channel +b [getchanhost $nick]”
putserv “kick $channel $nick :$greason”
} else { putserv “notice $gnuser :$noexec” }
}
}
}
}
}
proc giveop {nick uhost handle channel text} {
global gcmd gchan gnick gnuser
set gnuser $nick
set gnick $nick
set gchan $channel
set gcmd “op”
checkid $nick
}
proc takeop {nick uhost handle channel text} {
global gcmd gchan gnick gnuser
set gnuser $nick
set gnick $nick
set gchan $channel
set gcmd “deop”
checkid $nick
}
proc buser {nick uhost handle channel text} {
global botnick gcmd gchan gnick gnuser greason lamahreason
set gnuser $nick
set gnick [string tolower [lindex $text 0]]
set gchan $channel
set gcmd “ban”
set greason [join [lrange [split $text] 1 end]]
if {[llength $text] == 1} { set greason [getreason] }
if {[string tolower $gnick] == [string tolower $botnick]} {
putserv “kick $gchan $nick :$lamahreason”
return
}
checkid $nick
}
proc kickuser {nick uhost handle channel text} {
global botnick gcmd gchan gnick gnuser greason lamahreason
set gnuser $nick
set gnick [string tolower [lindex $text 0]]
set gchan $channel
set gcmd “kick”
set greason [join [lrange [split $text] 1 end]]
if {[string tolower [llength $text]] == 1} { set greason [getreason] }
if {[string tolower $gnick] == [string tolower $botnick]} {
putserv “kick $gchan $nick :$lamahreason”
return
}
checkid $nick
}
proc rehashlists {nick uhost handle channel text} {
sendrehash
}
proc getreason {} {
global reasonsfile
set count 0
set file [open $reasonsfile r]
while {![eof $file]} {
set line [gets $file]
set count [expr $count +1]
}
close $file
set count [rand $count]
set file [open $reasonsfile r]
while {$count > 0 && ![eof $file]} {
set line [gets $file]
set count “[expr $count -1]”
}
close $file
return $line
}
proc sendrehash {} {
global tmpchans csrehash
set tmpchans “”
foreach chan [channels] {
checklist aop $chan
}
dccbroadcast “BotServ: Updating CS lists.”
timer $csrehash sendrehash
}
proc checklist {list chan} {
global msgdelay timeleft
set timeleft [expr $timeleft + $msgdelay]
set msgcmd “putserv \”privmsg ChanServ :$list $chan list\”"
utimer $timeleft $msgcmd
}
proc addoptolist {from keyword text} {
global csmask dynlist liststrig xoplist tmpchans dyntmpchan tmpnick stopcode listinuse
regsub -all “\002″ $text “” text
if {[string tolower $from] == [string tolower $csmask]} {
if {[string match [string tolower $liststrig] [string tolower $text]]} {
set dyntmpchan [lindex $text 4]
regsub “:” [lindex $text 1] “” acclevel
switch — [string tolower $acclevel] {
aop { set listinuse 1 }
sop { set listinuse 2 }
co-founder { set listinuse 3 }
}
}
}
if {[string match [string tolower $xoplist] [string tolower $text]]} {
set tmpnick [lindex $text 3]
regsub -all “\002″ $tmpnick “” tmpnick
lappend tmpchans “$tmpnick:$dyntmpchan:$listinuse”
}
if {[string match [string tolower $stopcode] [string tolower $text]]} {
switch — $listinuse {
1 { checklist sop $dyntmpchan }
2 { checklist cf $dyntmpchan }
}
}
}
timer $csrehash sendrehash
putlog “BotServ $ver by Progeny”
- Mynet’e mirc ile girmek
- Kemal Sunal yine MEZARI Anıldı.
- Mahsundan yeni bomba
- Aşk-ı Memnu’dan Sonra Şimdide Aysun KAYACI
- Karısını grup seks için pazarlarken yakalandı
- Koç Müzesi’nde Ergenekon incelemesi
- Evleniyorlar!
- Elbisesinin azizliğine uğradı
- Sarıgül DSP’den istifa etti
- Afrodit tatilde
中文关键字: