Показ списка команд(!help) и подсчет количества просмотров.

Решение вопросов при работе с TCL скриптами.

Модератор: Модераторы

Показ списка команд(!help) и подсчет количества просмотров.

Сообщение Sparkle » 19 ноя 2011 04:44

Подскажите пожалуйста, как сделать чтобы при команде !help когда бот пишет в приват команды, и было написано (Файл был просмотрен "цифры" раз(а) ?
Sparkle
 
Сообщения: 83
Зарегистрирован: 27 окт 2011 13:58
Благодарил (а): 17 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.18+suzi

Re: !help

Сообщение Vertigo » 19 ноя 2011 06:11

Наверно этот скрипт имелся ввиду?
Аватара пользователя
Vertigo
 
Сообщения: 107
Зарегистрирован: 20 авг 2008 23:49
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 37 раз.
Версия бота: Eggdrop 1.8

Re: !help

Сообщение Sparkle » 19 ноя 2011 11:38

За скрипт конечно спасибо, но мне нужно из него выдрать код который пишет (Файл был просмотрен "цифры" раз(а), и вставить в свой, и желательно чтобы показывало в самом начале..

Вот мой!
TCL: [ Скачать ] [ Скрыть ]
proc ::help::msg_help { nick uhost hand args } {
        global help
        set helplines [utimers]
        foreach line $helplines { if {"help:reset $uhost" == [lindex $line 1]} { set helptime [lindex $line 0] } }
        if { [info exists help(host,$uhost)] } {
        set temp $helptime
        ::egglib::out $nick $nick "\00310Пожалуйста ждите. Запрос не чаще одного раза в \00305[::help::duration $help(flood_time)]. \00310Вам осталось ждать \00305[::help::duration $temp] "
        return
        }
        set help(host,$uhost) 1
        set help(timer,$uhost) [utimer $help(flood_time) [list help:reset $uhost ] ]
        ::help::help $nick $uhost $hand $nick $args 0
        putlog "\[$nick\] Read Help"
}

proc ::help::pub_help { nick uhost hand chan args } {
        global help lastbind
        if {[channel get $chan nopubhelp]} {::egglib::outn $nick "\0033Использование команды \037$lastbind\037 на этом канале запрещено";return}
        set helplines [utimers]
        foreach line $helplines { if {"help:reset $uhost" == [lindex $line 1]} { set helptime [lindex $line 0] } }
        if { [info exists help(host,$uhost)] } {
        set temp $helptime
        ::egglib::outn $nick "\00310Пожалуйста ждите. Запрос не чаще одного раза в \00305[::help::duration $help(flood_time)]. \00310Вам осталось ждать \00305[::help::duration $temp] "
        return
        }
        set help(host,$uhost) 1
        set help(timer,$uhost) [utimer $help(flood_time) [list help:reset $uhost ] ]
        ::help::help $nick $uhost $hand $chan $args 0
        putlog "\[$chan/$nick\] Read Help"
}

proc ::help::help { nick uhost hand chan args } {
        global help
        set file [open $help(file) r]
        while {![eof $file]} {
        putquick "PRIVMSG $nick  :[gets $file]"
        }
       close $file
 }

proc ::help::duration {seconds} {
        set years [expr {$seconds / 31449600}]
        set seconds [expr {$seconds % 31449600}]
        set weeks [expr {$seconds / 604800}]
        set seconds [expr {$seconds % 604800}]
        set days [expr {$seconds / 86400}]
        set seconds [expr {$seconds % 86400}]
        set hours [expr {$seconds / 3600}]
        set seconds [expr {$seconds % 3600}]
        set minutes [expr {$seconds / 60}]
        set seconds [expr {$seconds % 60}]
        set res ""
        if {$years != 0} {lappend res [::help::numstr $years "03лет05" "03год05" "03года05"]}
        if {$weeks != 0} {lappend res [::help::numstr $weeks "03недель05" "03неделю05" "03недели05"]}
        if {$days != 0} {lappend res [::help::numstr $days "03дней05" "03день05" "03дня05"]}
        if {$hours != 0} {lappend res [::help::numstr $hours "03часов05" "03час05" "03часа05"]}
        if {$minutes != 0} {lappend res [::help::numstr $minutes "03минут05" "03минуту05" "03минуты05"]}
        if {$seconds != 0} {lappend res [::help::numstr $seconds "03секунд05" "03секунду05" "03секунды05"]}
        return [join $res ", "]
}

proc ::help::numstr {val str1 str2 str3} {
        set d1 [expr $val % 10]
        set d2 [expr $val % 100]
        if {$d2 < 10 || $d2 > 19} {
                if {$d1 == 1} {return "$val $str2"}
                if {$d1 >= 2 && $d1 <= 4} {return "$val $str3"}
        }
        return "$val $str1"
}

proc help:reset { uhost } {
        global help
        catch {killutimer $help(timer,$uhost)}
        catch {unset help(timer,$uhost)}
        catch {unset help(host,$uhost)}
}
Sparkle
 
Сообщения: 83
Зарегистрирован: 27 окт 2011 13:58
Благодарил (а): 17 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.18+suzi

Re: !help

Сообщение tvrsh » 19 ноя 2011 12:48

help.tcl - Выводит список доступных команд по запросу пользователя. Также ведет подсчет количества просмотров.

TCL: [ Скачать ] [ Скрыть ]
        # Считываем данные из файла с командами.
        set data [::egglib::readdata "$help(file)"]
        # Если первая строка в нем это цифра ...
        if { [isnumber [lindex $data 0]] } {
            # ... то сохраняем в переменную все остальные строки кроме первой.
            set data2 [lrange $data 1 end]
            # И перебирая кажду строку по очереди ...
            foreach line $data2 {
                # ... если она не пустая, то ...
                if { $line != "" } {
                    # ... пишем ее в приват нику.
                    putserv "privmsg $nick :$line"
                }
            }
            # Создаем счетчик в котором к первой строке из файла прибавляем единицу.
            set counter [expr [lindex $data 0] + 1]
            # И пишем в приват нику про колиичество просмотров файла.
            putserv "privmsg $nick :Этот файл просмотрели $counter ра[lindex {. з за з} [numgrp $counter]]."
            # Добавляем это значение в переменную с командами, которые только что выводили нику в приват.
            set data2 [linsert $data2 0 $counter]
            # И записываем эту переменную в файл.
            ::egglib::writedata "$help(file)" $data2
            # А если первая строка в начальном файле не цифра, значит его еще ни разу не просматривали.
            } else {
                # Также пишем его построчно нику в приват.
                foreach line $data {
                    if { $line != "" } {
                        putserv "privmsg $nick :$line"
                    }
                }
                # Сообщаем о том, что это первой просмотр файла.
                putserv "privmsg $nick :Этот файл просмотрели 1 раз."
                # Вставляем первой строкой единицу.
                set data [linsert $data 0 "1"]
                # Сохраняем все в файл.
                ::egglib::writedata "$help(file)" $data
            }
 
Have fun.
-
Получить помощь можно на каналах #egghelp в сети IrcNet.ru и #eggdrop в сети RusNet(Ключ канала eggdrop).
Перед созданием новой темы внимательно читайте Правила оформления топиков.
Аватара пользователя
tvrsh
 
Сообщения: 1230
Зарегистрирован: 19 авг 2008 16:55
Откуда: Russian Federation, Podolsk
Благодарил (а): 6 раз.
Поблагодарили: 130 раз.
Версия бота: Eggdrop 1.6.20+suzi


Вернуться в TCL скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron