Aradan uzun zaman geçti, hatırlamakta da zorlandım bu konuyu, bir arkadaş msnden bu kodla ilgili yardım istedi; çalıştıramamış. Ben de zaten o zaman kodu denemediğimi yazmıştım, ufak tefek hatalar varmış kodta. Gözüme çarpanlarını düzelttim. Bu haliyle kullanılabiliyor.
İşte çalışan hali:
PHP Kod: Kodu kopyalamak için üzerine çift tıklayın!
####################################################################
# BANLANSIN.tcl
# Kullanıcıların kanalda rahatsızlık verenleri oylama
# yolu ile botunuza attırmasını sağlayacak olan, daha öncesinde
# mIRC tabanlı örneğini gördüğümüz özelliğin istekler doğrultusunda
# TCL scripting ile baştan kodlanmış halidir.
# Mümkün olduğunca ayarlanabilir şekilde hazırladım.
#
# Yapımcı : SaW (Nebiliymben)
# İletişim:
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
# 24 Ekim 2008 Cuma (edit: 5 eylül 2009)
#
####################################################################
# Bu özelliğin çalışmasını istediğiniz kanalları
# Aralarına boşluk bırakarak belirtiniz.
# Botun bulunduğu bütün kanallarda çalışmasını istiyorsanız "*" yazınız.
set bn(kanallar) "#Kanal1 #kanal2 #kanal3"
# Ban süresini giriniz. (0'dan daha büyük rakam belirtiniz.)
# Süreyi dakika cinsinden belirtiniz.
set bn(bansure) 15
# Belirtilen kişilerin banlanması için gereken oy adedini giriniz.
# (Bir kişi sadece bir oy kullanabilir.)
set bn(oyadeti) 4
# Oylama süresini giriniz. Süre sonunda oylama sıfırlanacaktır.
# Süreyi saniye cinsinden belirtiniz.
set bn(oysure) 120
# Oylama sonuçlarının kişiye notice ile bildirilmesi için 1,
# kanala mesaj halinde bildirilmesi için 2 yazınız.
set bn(msgtype) 1
bind pub - !banla banla:rey
if {$bn(msgtype) != "1" && $bn(msgtype) != "2"} {
putlog "Geçersiz Mesaj tipi! bn(msgtype) 1 ya da 2 olabilir."
die
}
proc banla:rey {nick uhost hand chan arg} {
global bn botnick
if {([lsearch -exact $bn(kanallar) $chan] == -1) && ($chan != "*")} {return}
if {![isop $botnick $chan]} {return}
if {[llength $arg] < 1} { putquick "NOTICE $nick :Banlanmasını\
istediğiniz \037nicki\037 belirtmediniz!"
return
}
if {[llength $arg] > 1} { putquick "NOTICE $nick :Bu komutu \037sadece\
bir nick\037 için kullanabilirsiniz!"
return
}
set bnick $arg
if {![onchan $bnick $chan]} { putquick "NOTICE $nick :Banlanmasını\
istediğiniz nick şuanda bu kanalda bulunmuyor!"
return
}
if {[isop $bnick $chan]} { putquick "NOTICE $nick :Banlanmasını\
istediğiniz kişi bir \037kanal yetkilisidir!\037"
putquick "NOTICE $bnick :$nick sizin $chan kanalından banlanmanız\
için oy kullanmaya çalıştı."
return
}
if {$bn(msgtype) == 1} { set bildiri NOTICE ; set bilecek $nick }
if {$bn(msgtype) == 2} { set bildiri PRIVMSG ; set bilecek $chan }
if {![info exists bn([set onick [md5 [string tolower [getchanhost $bnick $chan]]]])]} {
if {![info exists bn([set rnick [md5 [string tolower [getchanhost $nick $chan]$onick]]])]} {
putlog "buradayim: $onick - $rnick"
set bn($rnick) 1
utimer $bn(oysure) [list unset bn($rnick)]
} elseif {[info exists bn([set rnick [md5 [string tolower [getchanhost $nick $chan]$onick]]])]} {
putlog "buradayim0: $onick - $rnick"
putquick "NOTICE $nick :Bu nick için zaten oy kullandınız!"
return
}
set bn($onick) 1
utimer $bn(oysure) [list oyTime $onick]
putquick "NOTICE $nick :$bnick nickinin $chan kanalından banlanması\
için verdiğiniz oy kaydedilmiştir."
putquick "$bildiri $bilecek :[expr $bn(oyadeti)-1] kişinin daha oy kullanması\
halinde kişi $chan kanalından banlanacaktır."
return
}
if {[info exists bn([set onick [md5 [string tolower [getchanhost $bnick $chan]]]])]} {
if {![info exists bn([set rnick [md5 [string tolower [getchanhost $nick $chan]$onick]]])]} {
putlog "buradayim1: $onick - $rnick"
set bn($rnick) 1
utimer $bn(oysure) [list unset bn($rnick)]
} elseif {[info exists bn([set rnick [md5 [string tolower [getchanhost $nick $chan]$onick]]])]} {
putlog "buradayim2: $onick - $rnick"
putquick "NOTICE $nick :Bu nick için zaten oy kullandınız!"
return
}
incr bn($onick)
if {$bn($onick) < $bn(oyadeti)} {
putquick "NOTICE $nick :$bnick nickinin $chan kanalından banlanması\
için verdiğiniz oy kaydedilmiştir."
putquick "$bildiri $bilecek :[expr $bn(oyadeti)-$bn($onick)] kişinin daha oy kullanması\
halinde kişi $chan kanalından banlanacaktır. Kullanılan oy sayısı: $bn($onick)"
return
}
if {$bn($onick) == $bn(oyadeti)} {
putquick "MODE $chan +b *!*@[getchanhost $bnick $chan]"
putquick "KICK $chan $bnick Yapılan oylama sonucunda verdiğiniz rahatsızlıktan\
dolayı $bn(bansure) dk $chan kanalından uzaklaştırıldınız!"
timer $bn(bansure) [list pushmode $chan -b *!*@[getchanhost $bnick $chan]]
unset bn($rnick)
unset bn($onick)
}
}
}
proc oyTime onick {
global bn
if {[info exists bn($onick)]} {
incr bn($onick) -1
if {$bn($onick) <= 0} {unset bn($onick)}
}
}
putlog "BANLANSIN.tcl by SaW Başarıyla Yüklendi."