Викторина (Quiz.tcl) v1.19 Lite |
Викторина (Quiz.tcl) v1.19 Lite |
Kreon |
May 30 2006, 04:20 PM
Post
#21
|
Developer Group: Root Admin Posts: 396 Joined: -- From: Внешние пределы Member No.: 2 |
Всё равно пишет ту же ошибку, и это происходит непосредственно в тот момент, когда логически предполагается остановка игры? Ошибка такая?
QUOTE no such user - * Если да... то подозрительно это. Ибо такая ошибка может возникнуть только при вызове tpub::users get с неверным параметром пользователя, а последнее изменение в скрипте предполагает, что на вызове процедуры остановки игры эта функция более вообще не вызывается Вообще... глупо, но попробуйте в скрипте найти CODE #array set usr [set xtra [users get [nick2hand $nick]]] и удалить эту строчку, потом сделайте .rehash боту. |
alexy |
May 30 2006, 04:59 PM
Post
#22
|
Участник Group: Members Posts: 32 Joined: -- Member No.: 27 |
С закомментированной строкой игра останавливается.
В патилайне тоже всё ОК на ошибки ругани нет И что это значит, доктор??? *10 В морг? Добавлено спустя 3 минуты 4 секунды: Виноват, но из последнего исправления вставил только этот кусок CODE proc ::tpub::cmd_рег {nick chan text} { return [cmd_reg $nick $chan $text] } proc ::tpub::cmd_reg {nick chan text} { variable g variable conf; variable game if {$text == "?help?"} { return [usage $nick $chan рег "" "если включен лимит по игрокам, то добавляет вас к числу играющих."] } if {![info exists conf(mpeople)] || [lindex $conf(channels) 0] != $chan} { return 0 } if {![info exists g]} { set g $nick } else { if {[lsearch -regexp $g $nick] >= 0} {putlog "$g"; putnot $nick "Ты уже зарегистрирован в игру."; return 0} lappend g $nick } timer $conf(tcheck) [list tpub::checkusr $nick] putmsg $chan "\00304$nick, вы добавлены в список активных игроков. Всего зарегистрирова[lindex {. н но но} [numgrp [llength $g]]] \00304[llength $g] [lindex {. игрок игрока игроков} [numgrp [llength $g]]].\003" if {[llength $g]==$conf(mpeople) && ![info exists game]} {putmsg $chan "\00304Отлично, народа хватает, начинаем игру!\003"; cmd_start $nick $chan $text } } proc ::tpub::cmd_анрег {nick chan text} { return [cmd_unreg $nick $chan $text] } proc ::tpub::cmd_unreg {nick chan text} { variable g; variable conf; variable game; global botnick if {$text == "?help?"} { return [usage $nick $chan анрег "" "если включен лимит по игрокам, то удаляет вас из списка активных игроков."] } if {![info exists conf(mpeople)]} {return} if {![info exists g]} {putnot $nick "нет зарегистрированных игроков."; return} if {[set k [lsearch -exact $g $nick]] == -1} {putnot $nick "Вас нет в списке зарегистрированных игроков."; return} set g [lreplace $g $k $k] putmsg $chan "\00304$nick, вы были удалены из списка активных игроков.\003" if {[info exists game] && (![llength $g] || [llength $g] < $conf(mpeople))} { unset g putmsg [lindex $conf(channels) 0] "\00304Осталось слишком мало активных игроков. :(\003"; cmd_stop $botnick [lindex $conf(channels) 0] "" return } } if {[info exists ::tpub::conf(mpeople)]} { bind nick - * ::tpub::tchgnick } else { catch {unbind nick - * ::tpub::tchgnick}} proc ::tpub::tchgnick {nick uhost hand chan newnick} { variable g if {[info exists g] && [set k [lsearch -exact $nick $g]] != -1} { set g [lreplace $g $k $k $newnick] } } proc ::tpub::checkusr {nick} { variable g; variable conf; global botnick; variable game if {![info exists conf(mpeople)] || ![info exists g] || ([info exists g] && [set k [lsearch -exact $g $nick]] == -1)} {return} # проверим, а на канале ли человек... if {![onchan $nick [lindex $conf(channels) 0]]} { set g [lreplace $g $k $k] putmsg [lindex $conf(channels) 0] "\00304$nick удален из списка активных игроков за уход с канала." # а может он молчит слишком долго? } elseif {[getchanidle $nick [lindex $conf(channels) 0]] > $conf(tidle)} { set g [lreplace $g $k $k] putmsg [lindex $conf(channels) 0] "\00304$nick удален из списка активных игроков за молчание." } # посмотрим, сколько осталось людей if {![llength $g] || [llength $g] < $conf(mpeople)} { unset g if {[info exists game]} {putmsg [lindex $conf(channels) 0] "\00304Осталось слишком активных игроков.\003"; cmd_stop $botnick [lindex $conf(channels) 0] ""} return } # можно продолжить цикл timer $conf(tcheck) [list tpub::checkusr $nick]} |
Kreon |
May 30 2006, 05:04 PM
Post
#23
|
Developer Group: Root Admin Posts: 396 Joined: -- From: Внешние пределы Member No.: 2 |
/me не поняло.
В обновленном скрипте эта строка уже была закомментирована, соответственно там ошибок уже не должно было быть. И если её удалить - то смысл остается тот же самый. В любом случае, сейчас игра останавливается когда игроков становится слишком мало? Так? Значит все правильно. Или в чем проблема? Добавлено спустя 2 минуты 22 секунды: А. Ну вот Там изменению подверглась не эта часть, а обработка ответов и команда cmd_stop... Могу порекомендовать делать diff между файлами, или при обновлении менять весь скрипт целиком кроме конфига (ибо конфиг не меняется, если явно не указываю об обратном). |
alexy |
May 30 2006, 05:07 PM
Post
#24
|
Участник Group: Members Posts: 32 Joined: -- Member No.: 27 |
QUOTE(Kreon) Там изменению подверглась не эта часть, а обработка ответов и команда cmd_stop... Могу порекомендовать делать diff между файлами, или при обновлении менять весь скрипт целиком кроме конфига (ибо конфиг не меняется, если явно не указываю об обратном).
Сорррри Лениво было менять настройки, пути и пр. Посчитал себя умнее чем нада, решил вставить только тот кусок, ладушки щаз заменю всё полностью. Спасибо |
Kreon |
May 30 2006, 05:18 PM
Post
#25
|
Developer Group: Root Admin Posts: 396 Joined: -- From: Внешние пределы Member No.: 2 |
Ну вот настройки и пути менять не надо Замените только то, что после конфига идет.
|
alexy |
May 30 2006, 05:24 PM
Post
#26
|
Участник Group: Members Posts: 32 Joined: -- Member No.: 27 |
QUOTE(Kreon) Ну вот настройки и пути менять не надо Замените только то, что после конфига идет.
да я про локальные пути, до вопросов, статистики, бэкапа А как насчёт случайного вывода правильного ответа? Сделать ведь можно что-б бот давал ответ раз в 10 вопросов например. Если никто не отвечает разумеется |
Kreon |
May 30 2006, 08:17 PM
Post
#27
|
Developer Group: Root Admin Posts: 396 Joined: -- From: Внешние пределы Member No.: 2 |
Случайный - это одно. А раз в десять ответов - другое. Ибо оно фиксировано.
На самом деле, я вот думаю, что тут это излишне - надо либо всегда отображать ответы, либо не отображать их вообще. Но реализовать эту функцию можно. Только уточните: нужно, чтобы бот давал ответ именно произвольно, либо через каждые n вопросов? |
Anonymous |
May 30 2006, 08:37 PM
Post
#28
|
Unregistered |
Че то нереальные вещи творятся *03
У юзеров переодически пропадают очки, у кого по 50, а у кого ваще стираются его данные в базе %) |
Kreon |
May 30 2006, 08:40 PM
Post
#29
|
Developer Group: Root Admin Posts: 396 Joined: -- From: Внешние пределы Member No.: 2 |
Может кто-то завладел доступом к боту?
|
Anonymous |
May 30 2006, 08:49 PM
Post
#30
|
Unregistered |
очень и очень мало вероятно.... ну ща попробуем...
|
Anonymous |
May 30 2006, 08:53 PM
Post
#31
|
Unregistered |
хм... вот бот висит на шелле, править с шела возможности нету, ну как бы если не взломали доступ на шел...если делать все из патти... тоже самое - нужен пароль и совпадение масок...каким образом еще можно завладеть? сижу вот и туплю...
|
Kreon |
May 30 2006, 09:04 PM
Post
#32
|
Developer Group: Root Admin Posts: 396 Joined: -- From: Внешние пределы Member No.: 2 |
Ну так ведь есть же команда !set, через которую можно число очков уж поменять так точно
Самопроизвольное пропадание очков по каким-то ошибкам скрипта.... это ещё более маловероятно. Интересно узнать мнение товарища alexy, не наблюдал ли он такого же. Но все равно это - слишком странно. |
Anonymous |
May 30 2006, 09:24 PM
Post
#33
|
Unregistered |
ну к доступу !set имеют люди с определенным флагом , а чтобы поставить себе флаг нужно иметь доступ в патти... я естественно ваще никаму ничего не давал
|
alexy |
May 30 2006, 11:55 PM
Post
#34
|
Участник Group: Members Posts: 32 Joined: -- Member No.: 27 |
QUOTE(Kreon) Только уточните: нужно, чтобы бот давал ответ именно произвольно, либо через каждые n вопросов?
Ну что то типа RND ИЗ 20 ИЛИ 15 Я это делал но криво, TCL практически не знаю насчёт очей, всё в порядке. *02 только если займёшься случ.выводом ответа, кинь прямо кусочек скрипта сюда, а? учится тоже нада. Пжжжжалста *17 |
Anonymous |
May 31 2006, 03:05 PM
Post
#35
|
Unregistered |
че нить по поводу !х моно поделать? чтобы отменить
|
Kreon |
May 31 2006, 06:36 PM
Post
#36
|
Developer Group: Root Admin Posts: 396 Joined: -- From: Внешние пределы Member No.: 2 |
LesbiAnka, обновил в первом сообщении файл. Для ручного обновления, вкрадце чего там изменено:
[list] # разрешить досрочный запрос подсказок? [1/0] set conf(hint) 0[/CODE] [*]Функция cmd_hind: CODE proc ::tpub::cmd_hint {nick chan text} { variable game [list]
variable conf if {$text == "?help?"} { return [usage $nick $chan хинт "" "выдаёт подсказку по текущему вопросу, последующие подсказки выдаются с задержкой в 15 секунд. Вывод каждой подсказки отнимает одно очко от первоначальной стоимости вопроса (3 очка)."] } if {![info exists game] || $game(chan) != $chan || ![info exists game(question)] || !$conf(hint)} { return 0 } if {[info exists game(alreadyhint)]} { return 0 } set game(alreadyhint) 1 tmr_hint $game(qid) } Добавлено спустя 9 минут 53 секунды: alexy, что насчет вывода случайного ответа, делаем так: 1. В конфиге ставим set conf(showright) в 0. 2. Ищем в скрипте код CODE if {[info exists conf(showright)] && $conf(showright)} {
putmsg $game(chan) "\0033Никто не ответил на вопрос, правильный ответ был \00304$rans\00303." } else { putmsg $game(chan) "\0033Никто не ответил на вопрос, следующий через $conf(nextqn) [lindex {. секунду секунды секунд} [numgrp $conf(nextqn)]].\003" } И меняем на что-то типа: CODE if {([info exists conf(showright)] && $conf(showright)) || [rand 8] == 1 } {
putmsg $game(chan) "\0033Никто не ответил на вопрос, правильный ответ был \00304$rans\00303." } else { putmsg $game(chan) "\0033Никто не ответил на вопрос, следующий через $conf(nextqn) [lindex {. секунду секунды секунд} [numgrp $conf(nextqn)]].\003" } Смысл того, как оно работает: [rand 8] выдает случайное число от 0 до 7. Если оно оказывается равно 1, то показываем правильный ответ. Если нет - значит, нет. |
alexy |
May 31 2006, 08:33 PM
Post
#37
|
Участник Group: Members Posts: 32 Joined: -- Member No.: 27 |
QUOTE(Kreon) Смысл того, как оно работает: [rand 8] выдает случайное число от 0 до 7. Если оно оказывается равно 1, то показываем правильный ответ. Если нет - значит, нет. Гуд!!!! То что нужно *04 А я игрался в conf(showright) 0, там RND ставил просто замечательно, сёдня ещё Windrop 1.6.18RC1+fast2 RUS поставил, тьфу тьфу всё работает а какие будут идеи по закрытию слишком хитрых юзеров , которые с двух окон регистрируются?для командной игры |
Kreon |
May 31 2006, 09:18 PM
Post
#38
|
Developer Group: Root Admin Posts: 396 Joined: -- From: Внешние пределы Member No.: 2 |
Кстати что насчет использования пропатченных виндропов/еггдропов с викториной. В таком случае необходимо убрать из скрипта строку
CODE set text [encoding convertfrom [encoding system] $text]
для избежания возможных глюков, ибо она там уже больше не нужна. И конечно поставить .tcl encoding system cp1251. |
alexy |
May 31 2006, 10:16 PM
Post
#39
|
Участник Group: Members Posts: 32 Joined: -- Member No.: 27 |
QUOTE(Kreon) И конечно поставить .tcl encoding system cp1251. кхм а ставть куда? |
Kreon |
May 31 2006, 10:31 PM
Post
#40
|
Developer Group: Root Admin Posts: 396 Joined: -- From: Внешние пределы Member No.: 2 |
Либо в еггдроп.конф написать encoding system cp1251, либо с партилайна набрать команду .tcl encoding system cp1251. Лучше первый вариант
|
Lo-Fi Version | Time is now: 4th June 2024 - 12:40 AM |