Quiz Memorial Forum

Welcome Guest ( Log In | Register )

14 Pages V < 1 2 3 4 > »   
Reply to this topicStart new topic
> Викторина (Quiz.tcl) v1.19 Lite
Kreon
post 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 с неверным параметром пользователя, а последнее изменение в скрипте предполагает, что на вызове процедуры остановки игры эта функция более вообще не вызывается smile.gif

Вообще... глупо, но попробуйте в скрипте найти
CODE
    #array set usr [set xtra [users get [nick2hand $nick]]]
и удалить эту строчку, потом сделайте .rehash боту.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
alexy
post May 30 2006, 04:59 PM
Post #22


Участник
***

Group: Members
Posts: 32
Joined: --
Member No.: 27



С закомментированной строкой игра останавливается.
В патилайне тоже всё ОК на ошибки ругани нет smile.gif

И что это значит, доктор??? *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]}
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Kreon
post May 30 2006, 05:04 PM
Post #23


Developer
******

Group: Root Admin
Posts: 396
Joined: --
From: Внешние пределы
Member No.: 2



/me не поняло.

В обновленном скрипте эта строка уже была закомментирована, соответственно там ошибок уже не должно было быть. И если её удалить - то смысл остается тот же самый.

В любом случае, сейчас игра останавливается когда игроков становится слишком мало? Так? Значит все правильно. Или в чем проблема?

Добавлено спустя 2 минуты 22 секунды:

А. Ну вот smile.gif
Там изменению подверглась не эта часть, а обработка ответов и команда cmd_stop... Могу порекомендовать делать diff между файлами, или при обновлении менять весь скрипт целиком кроме конфига (ибо конфиг не меняется, если явно не указываю об обратном).
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
alexy
post May 30 2006, 05:07 PM
Post #24


Участник
***

Group: Members
Posts: 32
Joined: --
Member No.: 27



QUOTE(Kreon)
Там изменению подверглась не эта часть, а обработка ответов и команда cmd_stop... Могу порекомендовать делать diff между файлами, или при обновлении менять весь скрипт целиком кроме конфига (ибо конфиг не меняется, если явно не указываю об обратном).


Сорррри smile.gif

Лениво было менять настройки, пути и пр.
Посчитал себя умнее чем нада, решил вставить только тот кусок, ладушки щаз заменю всё полностью.

Спасибо smile.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Kreon
post May 30 2006, 05:18 PM
Post #25


Developer
******

Group: Root Admin
Posts: 396
Joined: --
From: Внешние пределы
Member No.: 2



Ну вот настройки и пути менять не надо smile.gif Замените только то, что после конфига идет.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
alexy
post May 30 2006, 05:24 PM
Post #26


Участник
***

Group: Members
Posts: 32
Joined: --
Member No.: 27



QUOTE(Kreon)
Ну вот настройки и пути менять не надо smile.gif Замените только то, что после конфига идет.


да я про локальные пути, до вопросов, статистики, бэкапа


А как насчёт случайного вывода правильного ответа?
Сделать ведь можно что-б бот давал ответ раз в 10 вопросов например.
Если никто не отвечает разумеется
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Kreon
post May 30 2006, 08:17 PM
Post #27


Developer
******

Group: Root Admin
Posts: 396
Joined: --
From: Внешние пределы
Member No.: 2



Случайный - это одно. А раз в десять ответов - другое. smile.gif Ибо оно фиксировано.
На самом деле, я вот думаю, что тут это излишне - надо либо всегда отображать ответы, либо не отображать их вообще. Но реализовать эту функцию можно. Только уточните: нужно, чтобы бот давал ответ именно произвольно, либо через каждые n вопросов?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Anonymous
post May 30 2006, 08:37 PM
Post #28


Unregistered









Че то нереальные вещи творятся smile.gif *03
У юзеров переодически пропадают очки, у кого по 50, а у кого ваще стираются его данные в базе %)
Go to the top of the page
+Quote Post
Kreon
post May 30 2006, 08:40 PM
Post #29


Developer
******

Group: Root Admin
Posts: 396
Joined: --
From: Внешние пределы
Member No.: 2



Может кто-то завладел доступом к боту?smile.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Anonymous
post May 30 2006, 08:49 PM
Post #30


Unregistered









очень и очень мало вероятно.... ну ща попробуем...
Go to the top of the page
+Quote Post
Anonymous
post May 30 2006, 08:53 PM
Post #31


Unregistered









хм... вот бот висит на шелле, править с шела возможности нету, ну как бы если не взломали доступ на шел...если делать все из патти... тоже самое - нужен пароль и совпадение масок...каким образом еще можно завладеть? сижу вот и туплю...
Go to the top of the page
+Quote Post
Kreon
post May 30 2006, 09:04 PM
Post #32


Developer
******

Group: Root Admin
Posts: 396
Joined: --
From: Внешние пределы
Member No.: 2



Ну так ведь есть же команда !set, через которую можно число очков уж поменять так точно smile.gif
Самопроизвольное пропадание очков по каким-то ошибкам скрипта.... это ещё более маловероятно. Интересно узнать мнение товарища alexy, не наблюдал ли он такого же. Но все равно это - слишком странно.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Anonymous
post May 30 2006, 09:24 PM
Post #33


Unregistered









ну к доступу !set имеют люди с определенным флагом , а чтобы поставить себе флаг нужно иметь доступ в патти... я естественно ваще никаму ничего не давал smile.gif
Go to the top of the page
+Quote Post
alexy
post May 30 2006, 11:55 PM
Post #34


Участник
***

Group: Members
Posts: 32
Joined: --
Member No.: 27



QUOTE(Kreon)
Только уточните: нужно, чтобы бот давал ответ именно произвольно, либо через каждые n вопросов?


Ну что то типа RND ИЗ 20 ИЛИ 15
Я это делал но криво, TCL практически не знаю sad.gif

насчёт очей, всё в порядке. *02


только если займёшься случ.выводом ответа, кинь прямо кусочек скрипта сюда, а?
учится тоже нада.
Пжжжжалста *17
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Anonymous
post May 31 2006, 03:05 PM
Post #35


Unregistered









че нить по поводу !х моно поделать? чтобы отменить smile.gif
Go to the top of the page
+Quote Post
Kreon
post 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

    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)

}
[list]

Добавлено спустя 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, то показываем правильный ответ. Если нет - значит, нет.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
alexy
post 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 поставил, тьфу тьфу всё работает smile.gif

а какие будут идеи по закрытию слишком хитрых юзеров , которые с двух окон регистрируются?для командной игры
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Kreon
post 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.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
alexy
post May 31 2006, 10:16 PM
Post #39


Участник
***

Group: Members
Posts: 32
Joined: --
Member No.: 27



QUOTE(Kreon)


И конечно поставить .tcl encoding system cp1251.

кхм а ставть куда?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Kreon
post 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. Лучше первый вариант smile.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

14 Pages V < 1 2 3 4 > » 
Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



Lo-Fi Version Time is now: 29th March 2024 - 11:36 AM
Design by GPF © 2006