случайную строку на порядковый из базы кальков

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

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

случайную строку на порядковый из базы кальков

Сообщение ayaal_86 » 02 фев 2012 06:48

Сделайте пожалуйста чтоб выводил по списку с базы.

proc ::calc::randomdata {{chan ""}} {
global calc
if {$chan == "" } {set chandata $calc(data)} else {set chandata [::calc::getchancalcs $calc(data) $chan]}
if {[llength $chandata] > 0} {
set rnum [rand [llength $chandata]]
set num 0
foreach cdata $chandata {
if {$num == $rnum} {return $cdata}
incr num
}
}
putlog "\[calc\] error: can't get random calc data for channel $chan!"
return ""
}
ayaal_86
 
Сообщения: 29
Зарегистрирован: 28 дек 2011 08:12
Благодарил (а): 6 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21+suzi

Re: случайную строку на порядковый из базы кальков

Сообщение tvrsh » 02 фев 2012 13:55

Сделайте пожалуйста чтоб грамотно писать пост читать его понятно было.
Have fun.
-
Получить помощь можно на каналах #egghelp в сети IrcNet.ru и #eggdrop в сети RusNet(Ключ канала eggdrop).
Перед созданием новой темы внимательно читайте Правила оформления топиков.
Аватара пользователя
tvrsh
 
Сообщения: 1230
Зарегистрирован: 19 авг 2008 16:55
Откуда: Russian Federation, Podolsk
Благодарил (а): 6 раз.
Поблагодарили: 130 раз.
Версия бота: Eggdrop 1.6.20+suzi

Re: случайную строку на порядковый из базы кальков

Сообщение ayaal_86 » 02 фев 2012 18:59

В скрипте calc.tcl с флагом на канале !set +announcecalc данная процедура выводит сообщение рандомно.
Перепишите пожалуйста процедуру чтоб сменил по порядку с базы.
ayaal_86
 
Сообщения: 29
Зарегистрирован: 28 дек 2011 08:12
Благодарил (а): 6 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21+suzi

Re: случайную строку на порядковый из базы кальков

Сообщение tvrsh » 02 фев 2012 20:04

Попробуй так:
TCL: [ Скачать ] [ Скрыть ]
proc ::calc::randomdata {{chan ""}} {
        global calc
        if {$chan == "" } {set chandata $calc(data)} else {set chandata [::calc::getchancalcs $calc(data) $chan]}
        if {[llength $chandata] > 0} {
            if {[info exists num] && $num != "" && $num <= [llength $chandata]} {
                return [lindex $chandata $num]
                incr num
            } else {
                set num 0
                return [lindex $chandata $num]
            }
        }
        putlog "\[calc\] error: can't get random calc data for channel $chan!"
        return ""
}
 


Когда ты показываешь код, то пользуйся меню "подсветка синтаксиса". Выделяй код, и в выпадающем меню выбирай язык TCL. А тэг Quote нужен для показа каких-либо цитат. Например, лога ошибки из-за которой мой вариант процедуры не будет работать.

И вообще, если ты скачивал этот скрипт с архива, то там была ссылка Тема на форуме туда и надо было писать. Это нужно для того, чтобы все вопросы по скрипту были в одной теме, а не с непонятно какими названиями разбросаны по форуму.
Have fun.
-
Получить помощь можно на каналах #egghelp в сети IrcNet.ru и #eggdrop в сети RusNet(Ключ канала eggdrop).
Перед созданием новой темы внимательно читайте Правила оформления топиков.
Аватара пользователя
tvrsh
 
Сообщения: 1230
Зарегистрирован: 19 авг 2008 16:55
Откуда: Russian Federation, Podolsk
Благодарил (а): 6 раз.
Поблагодарили: 130 раз.
Версия бота: Eggdrop 1.6.20+suzi

Re: случайную строку на порядковый из базы кальков

Сообщение ayaal_86 » 03 фев 2012 01:44

Не получается, берет из списка первого калька и выводит только его.
ayaal_86
 
Сообщения: 29
Зарегистрирован: 28 дек 2011 08:12
Благодарил (а): 6 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21+suzi

Re: случайную строку на порядковый из базы кальков

Сообщение tvrsh » 03 фев 2012 17:44

Поменяй местами строки
                return [lindex $chandata $num]
                incr num

И при рехаше бота все будет начинаться заново, так что не рехашь его во время проверки.

А вообще какой смысла выводить кальки по порядку? Для чего?
Have fun.
-
Получить помощь можно на каналах #egghelp в сети IrcNet.ru и #eggdrop в сети RusNet(Ключ канала eggdrop).
Перед созданием новой темы внимательно читайте Правила оформления топиков.

За это сообщение автора tvrsh поблагодарил:
ayaal_86 (04 фев 2012 05:06)
Аватара пользователя
tvrsh
 
Сообщения: 1230
Зарегистрирован: 19 авг 2008 16:55
Откуда: Russian Federation, Podolsk
Благодарил (а): 6 раз.
Поблагодарили: 130 раз.
Версия бота: Eggdrop 1.6.20+suzi

Re: случайную строку на порядковый из базы кальков

Сообщение Spoofing » 03 фев 2012 17:47

tvrsh писал(а):А вообще какой смысла выводить кальки по порядку? Для чего?
рандом совсем не рандомный, может быть. я тоже все базы такого рода вывожу по порядку.
Spoofing
 
Сообщения: 51
Зарегистрирован: 10 июн 2009 12:55
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
Версия бота:

Re: случайную строку на порядковый из базы кальков

Сообщение ayaal_86 » 03 фев 2012 18:54

Все равно так же, ничего не изменилось. Еще посмотри пожалуйста. ;)
ayaal_86
 
Сообщения: 29
Зарегистрирован: 28 дек 2011 08:12
Благодарил (а): 6 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21+suzi

Re: случайную строку на порядковый из базы кальков

Сообщение ayaal_86 » 04 фев 2012 05:06

tvrsh помоги пожалуйста. скрипт очень важен.
Заранее, Благодарю!!!
ayaal_86
 
Сообщения: 29
Зарегистрирован: 28 дек 2011 08:12
Благодарил (а): 6 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21+suzi

Re: случайную строку на порядковый из базы кальков

Сообщение tvrsh » 04 фев 2012 12:10

Have fun.
-
Получить помощь можно на каналах #egghelp в сети IrcNet.ru и #eggdrop в сети RusNet(Ключ канала eggdrop).
Перед созданием новой темы внимательно читайте Правила оформления топиков.
Аватара пользователя
tvrsh
 
Сообщения: 1230
Зарегистрирован: 19 авг 2008 16:55
Откуда: Russian Federation, Podolsk
Благодарил (а): 6 раз.
Поблагодарили: 130 раз.
Версия бота: Eggdrop 1.6.20+suzi

Re: случайную строку на порядковый из базы кальков

Сообщение ayaal_86 » 04 фев 2012 13:08

Данная процедура по твоим данным шас выглядит так:

TCL: [ Скачать ] [ Скрыть ]
proc ::calc::randomdata {{chan ""}} {
 global calc
 if {$chan == "" } {set chandata $calc(data)} else {set chandata [::calc::getchancalcs $calc(data) $chan]}
 if {[llength $chandata] > 0} {
 set rnum [rand [llength $chandata]]
 if {$calc(random) == "0"} {
             if {[info exists calc(num)] && $calc(num) != "" && $calc(num) <= [llength $chandata]} {
                 incr calc(num)
                 return [lindex $chandata $calc(num)]
             } else {
                 set calc(num) 0
                 return [lindex $chandata $calc(num)]
             }
         } else {
                 set rnum [rand [llength $chandata]]
                 set num 0
                 foreach cdata $chandata {
                         if {$num == $rnum} {return $cdata}
                         incr num
                 }
             }
 }
 putlog "\[calc\] error: can't get random calc data for channel $chan!"
 return ""
}

Дело в том что по списку не меняет т.е. вывод чередуется. а в не которых случаях пропускает некоторые.
ayaal_86
 
Сообщения: 29
Зарегистрирован: 28 дек 2011 08:12
Благодарил (а): 6 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21+suzi

Re: случайную строку на порядковый из базы кальков

Сообщение tvrsh » 04 фев 2012 15:05

Лог вывода в канал:
<@lamestbot> * cron = From scripts ...
<@lamestbot> * cron = From scripts ...
<@lamestbot> * cron = From scripts ...
<@lamestbot> * eggdrop = Скачать архив ...
<@lamestbot> * putty = свободно распространяемый ...
<@lamestbot> * tunnel = PUTTY: Connection > SSH > ...
Содержимое базы:
TEXT: [ Скачать ] [ Скрыть ]
#egghelp tvrsh 1148886654 cron = 14From 10scripts
#egghelp tvrsh 1148886675 autobotchk = cron  
#egghelp tvrsh 1148886684 botchk = cron  
#egghelp tvrsh 1148886709 эггдроп = eggdrop  
#egghelp tvrsh 1148886799 путти = putty  
#egghelp tvrsh 1148886911 tunnel = 4PUTTY: 10Connection 5> 10SSH 5> 10tunnels

Все прекрасно работает.
Have fun.
-
Получить помощь можно на каналах #egghelp в сети IrcNet.ru и #eggdrop в сети RusNet(Ключ канала eggdrop).
Перед созданием новой темы внимательно читайте Правила оформления топиков.
Аватара пользователя
tvrsh
 
Сообщения: 1230
Зарегистрирован: 19 авг 2008 16:55
Откуда: Russian Federation, Podolsk
Благодарил (а): 6 раз.
Поблагодарили: 130 раз.
Версия бота: Eggdrop 1.6.20+suzi

Re: случайную строку на порядковый из базы кальков

Сообщение tvrsh » 04 фев 2012 16:12

Меняй строку
if {[info exists calc(num)] && $calc(num) != "" && $calc(num) <= [llength $chandata]} {
на
if {[info exists calc(num)] && $calc(num) != "" && $calc(num) <= [expr [llength $chandata] - 1]} {
Have fun.
-
Получить помощь можно на каналах #egghelp в сети IrcNet.ru и #eggdrop в сети RusNet(Ключ канала eggdrop).
Перед созданием новой темы внимательно читайте Правила оформления топиков.
Аватара пользователя
tvrsh
 
Сообщения: 1230
Зарегистрирован: 19 авг 2008 16:55
Откуда: Russian Federation, Podolsk
Благодарил (а): 6 раз.
Поблагодарили: 130 раз.
Версия бота: Eggdrop 1.6.20+suzi

Re: случайную строку на порядковый из базы кальков

Сообщение ayaal_86 » 05 фев 2012 01:56

tvrsh спасибо за помошь! :) Я проверил раньше на 2х-3х каналах поэтому не выводил на каждый канал по списку, потом отключил у всех канало announcecalc и включил только на 1 канал чтоб проверить и после этого выводил по списку на канале. Значит если включить более 2-х каналов то он сбивается, т.е. порядок менется таким образом, если включен announcecalc на 2 канала то он пропускается 1 строку, если 3 канала то 2 строки пропускает.
ayaal_86
 
Сообщения: 29
Зарегистрирован: 28 дек 2011 08:12
Благодарил (а): 6 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21+suzi

Re: случайную строку на порядковый из базы кальков

Сообщение tvrsh » 05 фев 2012 10:25

Зачем тебе это? Что ты хочешь сделать? Проще написать новый скрипт, чем переделывать уже существующий.
Have fun.
-
Получить помощь можно на каналах #egghelp в сети IrcNet.ru и #eggdrop в сети RusNet(Ключ канала eggdrop).
Перед созданием новой темы внимательно читайте Правила оформления топиков.
Аватара пользователя
tvrsh
 
Сообщения: 1230
Зарегистрирован: 19 авг 2008 16:55
Откуда: Russian Federation, Podolsk
Благодарил (а): 6 раз.
Поблагодарили: 130 раз.
Версия бота: Eggdrop 1.6.20+suzi

Re: случайную строку на порядковый из базы кальков

Сообщение ayaal_86 » 05 фев 2012 11:33

Я хотел этот calc.tcl переделать на меняющий топик: зачем?!
Преимущества скрипта:
- Легкое в пользовании
- Поддержка более 2х каналов, т.е. можно запустить от 2х и более каналов.
- Его база единая. если лучше было бы отдельная на каналы. чтоб посмотреть базу.
Вот для этого и нужен был данный скрипт.
ayaal_86
 
Сообщения: 29
Зарегистрирован: 28 дек 2011 08:12
Благодарил (а): 6 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21+suzi

Re: случайную строку на порядковый из базы кальков

Сообщение tvrsh » 05 фев 2012 12:11

Изображение
Have fun.
-
Получить помощь можно на каналах #egghelp в сети IrcNet.ru и #eggdrop в сети RusNet(Ключ канала eggdrop).
Перед созданием новой темы внимательно читайте Правила оформления топиков.
Аватара пользователя
tvrsh
 
Сообщения: 1230
Зарегистрирован: 19 авг 2008 16:55
Откуда: Russian Federation, Podolsk
Благодарил (а): 6 раз.
Поблагодарили: 130 раз.
Версия бота: Eggdrop 1.6.20+suzi

Re: случайную строку на порядковый из базы кальков

Сообщение ayaal_86 » 05 фев 2012 13:40

мда :( четко.
ayaal_86
 
Сообщения: 29
Зарегистрирован: 28 дек 2011 08:12
Благодарил (а): 6 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21+suzi

Re: случайную строку на порядковый из базы кальков

Сообщение ayaal_86 » 10 фев 2012 07:59

Есть еще такой вариант рандомный calc-man.tcl
может с этого получится сделать порядковой :D
TCL: [ Скачать ] [ Скрыть ]
proc ::calc::randomcalc {nick chan} {
global calc botnick
if {[validchan $chan]} {set chandata [::calc::getchancalcs $calc(data) $chan]} else {set chandata $calc(data)}
set total [llength $chandata]
if {$total == 0} {return}
set rnum [rand $total]
set num 0
set res ""
foreach q $calc(data) {
if {[validchan $chan] && ![string equal [lindex $q 0] $chan]} {continue}
if {$num == $rnum} {set res $q}
incr num
}
if {$res != ""} {
if {[validchan $chan]} {::calc::out $botnick $chan "$::gcolor(4)* $::gcolor(14)\[$::gcolor(6)[expr {$rnum + 1}]$::gcolor(14)/$num\]\003 \002[lindex $res 3]\017 $::gcolor(14)=\017 [string trim [lindex $res 4]]\017 $::gcolor(14)\[$::gcolor(5)[clock format [lindex $res 2] -format "%d.%m.%Y"]$::gcolor(14)\]"
} else {::calc::out $nick $chan "$::gcolor(4)* $::gcolor(14)\[$::gcolor(6)[expr {$rnum + 1}]$::gcolor(14)/$num\]\003 \002[lindex $res 3]\017 $::gcolor(14)=\017 [string trim [lindex $res 4]]\017 $::gcolor(14)\[$::gcolor(5)[clock format [lindex $res 2] -format "%d.%m.%Y"]$::gcolor(14)\]"}
}      
}
 
ayaal_86
 
Сообщения: 29
Зарегистрирован: 28 дек 2011 08:12
Благодарил (а): 6 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21+suzi

Re: случайную строку на порядковый из базы кальков

Сообщение tvrsh » 10 фев 2012 10:11

Вывод кальков по порядку уже сделан.
В оригинальном скрипте нет процедуры randomcalc и переменных gcolor.
Скрипт не будет работать с этим кодом.
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 скрипты

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

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

cron