Вот весь скрипт :
#####################################################################################
#
# :::[ T h e R u s s i a n E g g d r o p R e s o u r c e ]:::
# ____ __
# / __/___ _ ___ _ ___/ /____ ___ ___ ___ ____ ___ _ ____ __ __
# / _/ / _ `// _ `// _ // __// _ \ / _ \ / _ \ / __// _ `/ / __// // /
# /___/ \_, / \_, / \_,_//_/ \___// .__/ __ \___//_/ \_, / __ /_/ \___/
# /___/ /___/ /_/ /_/ /___/ /_/
#
#
#####################################################################################
#
# statslev.tcl
#
# Описание:
# Выдает звание и уровень пользователя в зависимости от его общительности.
# Отключать через флаг .chanset #chan +nopubstatslev
# Остальные настройки втыкаем ниже.
#
# Автор: Deniska <deniska@eggdrop.org.ru>
#
# Поддержка: irc.eggdrop.org.ru @ #eggdrop
#
#####################################################################################
#######################
namespace eval statslev {}
foreach bind [binds "::statslev::*"] { catch {unbind [lindex $bind 0] [lindex $bind 1] [lindex $bind 2] [lindex $bind 4]} }
foreach p [array names statslev *] { catch {unset statslev($p) } }
setudef flag nopubstatslev
if { ![info exists egglib(ver)] } {
putlog "***********************************************"
putlog " egglib_pub NOT FOUND !"
putlog " Download last version of egglib_pub here:"
putlog " http://eggdrop.org.ru/scripts/egglib_pub.zip"
putlog "***********************************************"
return
}
if { [expr {$egglib(ver) < 1.4}] } {
putlog "***********************************************"
putlog " YOUR VERSION OF egglib_pub IS TOO OLD !"
putlog " Download last version of egglib_pub here:"
putlog " http://eggdrop.org.ru/scripts/egglib_pub.zip"
putlog "***********************************************"
putlog " version installed : $egglib(ver)"
putlog " version required: 1.4"
return
}
#######################
# Аффтар
set statslev(author) "Deniska <deniska@eggdrop.org.ru>"
# Версия этого говноскрипта
set statslev(ver) "1.0"
# Сколько слов пользователь должен наболтать на один уровень
set statslev(level) "2000"
# За какой уровень какое звание будет даваться
# Первая строка - когда слов недостаточно даже на первый уровень
set statslev(rangs) {
"Никто и ничто"
"Начинающее трепло"
"Болтун"
"Опытный оратор"
}
#######################
bind pub - !звание ::statslev::prang
bind pub - !ранг ::statslev::prang
bind pub - !rang ::statslev::prang
bind msg - !звание ::statslev::mrang
bind msg - !ранг ::statslev::mrang
bind msg - !rang ::statslev::mrang
proc ::statslev::prang { nick uhost hand chan text } {
global statslev
if { [channel get $chan nopubstatslev] } { return }
set data [::egglib::readdata "data/$::botnick.statsmod.dat"]
if { [llength $text] > 1 } {
putserv "privmsg $chan :$nick, используй \002!звание\002 или \002!звание <имя>\002"
return
}
if { $text == "" } {
set vict [nick2hand $nick $chan]
} else {
set vict [nick2hand $text $chan]
}
if { $vict == "" } {
putserv "privmsg $chan :$nick, я не нашёл этого пользователя у себя в базе."
return
}
set num [lsearch -regexp $data "$chan $vict.*?"]
if { $num == "-1" } {
putserv "privmsg $chan :$nick, у меня нет статистики на этого пользователя."
return
}
set line [lindex $data $num]
set userstat [lindex [split $line] 3]
set userlevel 0
while { $userstat > $statslev(level) } {
set userstat [expr $userstat-$statslev(level)]
incr userlevel
}
set outline [lindex $statslev(rangs) $userlevel]
if { $outline == "" } {
putserv "privmsg $chan :Звание на этот уровень не задано."
return
}
putserv "privmsg $chan :$vict: уровень - $userlevel. Звание - $outline"
}
putlog "statslev.tcl $statslev(ver) by $statslev(author) loaded"
#
# :::[ T h e R u s s i a n E g g d r o p R e s o u r c e ]:::
# ____ __
# / __/___ _ ___ _ ___/ /____ ___ ___ ___ ____ ___ _ ____ __ __
# / _/ / _ `// _ `// _ // __// _ \ / _ \ / _ \ / __// _ `/ / __// // /
# /___/ \_, / \_, / \_,_//_/ \___// .__/ __ \___//_/ \_, / __ /_/ \___/
# /___/ /___/ /_/ /_/ /___/ /_/
#
#
#####################################################################################
#
# statslev.tcl
#
# Описание:
# Выдает звание и уровень пользователя в зависимости от его общительности.
# Отключать через флаг .chanset #chan +nopubstatslev
# Остальные настройки втыкаем ниже.
#
# Автор: Deniska <deniska@eggdrop.org.ru>
#
# Поддержка: irc.eggdrop.org.ru @ #eggdrop
#
#####################################################################################
#######################
namespace eval statslev {}
foreach bind [binds "::statslev::*"] { catch {unbind [lindex $bind 0] [lindex $bind 1] [lindex $bind 2] [lindex $bind 4]} }
foreach p [array names statslev *] { catch {unset statslev($p) } }
setudef flag nopubstatslev
if { ![info exists egglib(ver)] } {
putlog "***********************************************"
putlog " egglib_pub NOT FOUND !"
putlog " Download last version of egglib_pub here:"
putlog " http://eggdrop.org.ru/scripts/egglib_pub.zip"
putlog "***********************************************"
return
}
if { [expr {$egglib(ver) < 1.4}] } {
putlog "***********************************************"
putlog " YOUR VERSION OF egglib_pub IS TOO OLD !"
putlog " Download last version of egglib_pub here:"
putlog " http://eggdrop.org.ru/scripts/egglib_pub.zip"
putlog "***********************************************"
putlog " version installed : $egglib(ver)"
putlog " version required: 1.4"
return
}
#######################
# Аффтар
set statslev(author) "Deniska <deniska@eggdrop.org.ru>"
# Версия этого говноскрипта
set statslev(ver) "1.0"
# Сколько слов пользователь должен наболтать на один уровень
set statslev(level) "2000"
# За какой уровень какое звание будет даваться
# Первая строка - когда слов недостаточно даже на первый уровень
set statslev(rangs) {
"Никто и ничто"
"Начинающее трепло"
"Болтун"
"Опытный оратор"
}
#######################
bind pub - !звание ::statslev::prang
bind pub - !ранг ::statslev::prang
bind pub - !rang ::statslev::prang
bind msg - !звание ::statslev::mrang
bind msg - !ранг ::statslev::mrang
bind msg - !rang ::statslev::mrang
proc ::statslev::prang { nick uhost hand chan text } {
global statslev
if { [channel get $chan nopubstatslev] } { return }
set data [::egglib::readdata "data/$::botnick.statsmod.dat"]
if { [llength $text] > 1 } {
putserv "privmsg $chan :$nick, используй \002!звание\002 или \002!звание <имя>\002"
return
}
if { $text == "" } {
set vict [nick2hand $nick $chan]
} else {
set vict [nick2hand $text $chan]
}
if { $vict == "" } {
putserv "privmsg $chan :$nick, я не нашёл этого пользователя у себя в базе."
return
}
set num [lsearch -regexp $data "$chan $vict.*?"]
if { $num == "-1" } {
putserv "privmsg $chan :$nick, у меня нет статистики на этого пользователя."
return
}
set line [lindex $data $num]
set userstat [lindex [split $line] 3]
set userlevel 0
while { $userstat > $statslev(level) } {
set userstat [expr $userstat-$statslev(level)]
incr userlevel
}
set outline [lindex $statslev(rangs) $userlevel]
if { $outline == "" } {
putserv "privmsg $chan :Звание на этот уровень не задано."
return
}
putserv "privmsg $chan :$vict: уровень - $userlevel. Звание - $outline"
}
putlog "statslev.tcl $statslev(ver) by $statslev(author) loaded"