Страница 15 из 19

Re: Проблемы с викториной v1.8 by Sergio + new addons.

СообщениеДобавлено: 14 дек 2011 17:06
tvrsh
Sparkle, замени
putquick "privmsg $chan :\00310[lindex $phrasesmol [rand [llength $phrasesmol]]] \00303[expr {[users isremort $hand] ? "\002$nick\002" : $nick}]\00310[lindex $phraseverotv [rand [llength $phraseverotv]]] -> \"\002[tolower $rans]\002\" <-, был получен за \00304\002\002[okr $time]\002\002\00310 [lindex {. секунду секунды секунд} [numgrp $time]]$ransput$rscore\003"
на
putquick "privmsg $chan :\00310[lindex $phrasesmol [rand [llength $phrasesmol]]] \00303[expr {[users isremort $hand] ? "\002$nick\002" : $nick}]\00310[lindex $phraseverotv [rand [llength $phraseverotv]]] -> \"\002[tolower $rans]\002\" <-, был получен за \00304\002\002[okr $time]\002\002\00310 [lindex {. секунду секунды секунд} [numgrp $time]]$ransput\003"

putquick "privmsg $chan :\00310$rscore\003"

Re: Проблемы с викториной v1.8 by Sergio + new addons.

СообщениеДобавлено: 19 дек 2011 14:01
Sparkle
Возможно ли сделать так?
Вопрос: ........ (12 букв, 1 слово)

Вопрос: ........ (7 букв, 2 слова)

Если возможно, и если конечно не трудно, помогите пожалуйста!

Re: Проблемы с викториной v1.8 by Sergio + new addons.

СообщениеДобавлено: 20 дек 2011 15:41
tvrsh
Замени
TCL: [ Скачать ] [ Скрыть ]
        # подсчет слов в ответе
        if {([string match *\{* [lindex $game(question) 1]])} {
            # Слов в ответе больше 1
            set lln [string length [lindex $game(question) 1]]
            set lln [incr lln -4]
            set ln "$lln [lindex {. буква буквы букв} [numgrp $lln]] \00304(несколько слов)\00307"
        } else {
            # Слов в ответе 1
            set ln "[string length [lindex $game(question) 1]] [lindex {. буква буквы букв} [numgrp [string length [lindex $game(question) 1]]]]\00307"
        }

на
TCL: [ Скачать ] [ Скрыть ]
        # подсчет слов в ответе
        if {([string match *\{* [lindex $game(question) 1]])} {
            # Слов в ответе больше 1
            set slov [string length [lindex $game(question) 1]]
            set lln [incr slov -4]
            set ln "$lln [lindex {. буква буквы букв} [numgrp $lln]] \00304($slov [lindex {. слово слова слов} [numgrp $slov]])\00307"
        } else {
            # Слов в ответе 1
            set ln "[string length [lindex $game(question) 1]] [lindex {. буква буквы букв} [numgrp [string length [lindex $game(question) 1]]]] \00304(1 слово)\00307"
        }


Вроде должно сработать. Только не совсем понятно почему так
set lln [incr lln -4]

Количество букв получается уменьшением переменной на 4. Скрипта нет, точно посмотреть не могу.

Добавлено спустя 27 секунд:
Заменить надо будет в двух местах.

Re: Проблемы с викториной v1.8 by Sergio + new addons.

СообщениеДобавлено: 20 дек 2011 17:33
Sparkle
Вот что вышло. когда в вопросе 2 слова!

11 букв (11 слов)

:(

Re: Проблемы с викториной v1.8 by Sergio + new addons.

СообщениеДобавлено: 21 дек 2011 11:32
tvrsh
Тогда меняй на это:
TCL: [ Скачать ] [ Скрыть ]
        # подсчет слов в ответе
        if {([string match *\{* [lindex $game(question) 1]])} {
            # Слов в ответе больше 1
            set slov [llength [lindex $game(question) 1]]
            set lln [string length [lindex $game(question) 1]]
            set lln [incr lln -4]
            set ln "$lln [lindex {. буква буквы букв} [numgrp $lln]] \00304($slov [lindex {. слово слова слов} [numgrp $slov]])\00307"
        } else {
            # Слов в ответе 1
            set ln "[string length [lindex $game(question) 1]] [lindex {. буква буквы букв} [numgrp [string length [lindex $game(question) 1]]]] \00304(1 слово)\00307"
        }

Re: Проблемы с викториной v1.8 by Sergio + new addons.

СообщениеДобавлено: 21 дек 2011 15:13
Sparkle
tvrsh, Неа, не работает. в вопросе 3 слова.
17 букв (1 слово)
:(

Re: Проблемы с викториной v1.8 by Sergio + new addons.

СообщениеДобавлено: 21 дек 2011 16:04
tvrsh
Ладно. Если не получается исправить, тогда надо писать заново. Только вслепую неудобно.

Меняй на это:
TCL: [ Скачать ] [ Скрыть ]
# Тут будет количество слов в ответе.
set slov [llength [lindex $game(question) 1]]
putlog "1: [lindex $game(question) 1]"
putlog "2: $slov"
# Количество букв равно количеству символов минус количество пробелов между словами. Пробелов на 1 меньше, чем слов.
set lln [expr [string length [join [lindex $game(question) 1]]] - [incr slov -1]]
putlog "3: $lln"
#  А тут текст.
set ln "$lln [lindex {. буква буквы букв} [numgrp $lln]] \00304($slov [lindex {. слово слова слов} [numgrp $slov]])\00307"


И покажи что будет через putlog выводиться в патилайн.

Re: Проблемы с викториной v1.8 by Sergio + new addons.

СообщениеДобавлено: 21 дек 2011 20:14
Sparkle
tvrsh, Не работает.
5 букв (0 слов)

В Патилайне выводятся ответы на вопросы!

1: ракия
2: 1
3: 5
1: технеций
2: 1
3: 8

Re: Проблемы с викториной v1.8 by Sergio + new addons.

СообщениеДобавлено: 21 дек 2011 21:25
tvrsh
Не знаю почему не работает. В путлоге выводится
2: 1
это количество слов в ответе, значит считает правильно. Все правильно заменила?

Re: Проблемы с викториной v1.8 by Sergio + new addons.

СообщениеДобавлено: 22 дек 2011 06:14
Sparkle
tvrsh, Да, в двух местах заменила! Не работает. Все пишет (0 слов)

Re: Проблемы с викториной v1.8 by Sergio + new addons.

СообщениеДобавлено: 26 дек 2011 11:57
Sparkle
Наверное не как не сделать?

Re: Проблемы с викториной v1.8 by Sergio + new addons.

СообщениеДобавлено: 26 дек 2011 14:45
tvrsh
А, понял где ошибка. Она из-за
[incr slov -1]
Тут переменная slov уменьшается на 1.

Замени
[incr slov -1]
на
[expr $slov - 1]


Правильно писать не "не как", а "никак".

Re: Проблемы с викториной v1.8 by Sergio + new addons.

СообщениеДобавлено: 26 дек 2011 15:01
Sparkle
Не работает.
(1 слово)

Re: Проблемы с викториной v1.8 by Sergio + new addons.

СообщениеДобавлено: 26 дек 2011 17:37
tvrsh
Если написано (1 одно) слово, значит так оно и есть.

Re: Проблемы с викториной v1.8 by Sergio + new addons.

СообщениеДобавлено: 26 дек 2011 17:51
Sparkle
В вопросе 2 слова. пишет как одно!

Re: Проблемы с викториной v1.8 by Sergio + new addons.

СообщениеДобавлено: 12 янв 2012 23:26
Corund
Помогите, пожалуйста. Викторину поставил на eggdrop. И теперь у меня глюк с анаграммами.
Как еще можно записать путь к базе с анаграммами в конфиге?

Варианты не прокатывают:
set conf(an_base) [::egglib::readdata quiz/slova.dat]
set conf(an_base) "quiz/slova.dat"
set conf(an_base) "/quiz/slova.dat"
set conf(an_base) quiz/slova.dat
set conf(an_base) /quiz/slova.dat

У меня база slova.dat лежит тут - /home/corund/eggdrop_universe/quiz/slova.dat
Сам бот находится в папке eggdrop_universe
Как еще можно записать путь?

Сейчас выводит наподобие:

TEXT: [ Скачать ] [ Скрыть ]
[22:36:17] < +|Universe| > Вопрос-анаграмма!
[22:36:17] < +|Universe| > Что это за слово: o.vdaastl ?
[22:36:27] < +|Universe| > Подсказка: slo*****t
[22:36:37] < +|Universe| > Подсказка: slov***at
[22:36:47] < +|Universe| > Никто не разгадал анаграмму, правильный ответ - slova.dat.

или пишет "правильный ответ quiz/slova.dat" или "/quiz/slova.dat" и т.д., смотря какой путь указал.

Re: Проблемы с викториной v1.8 by Sergio + new addons.

СообщениеДобавлено: 15 янв 2012 03:03
Sparkle
Скажите пожалуйста, как увеличить очки за правильные ответы? На простые вопросы.

Re: Проблемы с викториной v1.8 by Sergio + new addons.

СообщениеДобавлено: 15 янв 2012 21:46
tvrsh
Corund, в строке
set anagrgame(slovo) [tolower [lindex $conf(an_base) [rand [llength $conf(an_base)]]]]
замени conf(an_base) на andata.
И добавь перед ней
set andata [split [read [open $conf(an_base) "r"]] "\n"]


Добавлено спустя 6 минут 5 секунд:
Sparkle, количество очков указывается в процедуре ::tpub::tmr_ask в переменной game(points).
Увеличь до 5, посмотри что будет.

Re: Проблемы с викториной v1.8 by Sergio + new addons.

СообщениеДобавлено: 18 янв 2012 18:38
Corund
tvrsh, теперь путь к анаграммам видит, и даже выдаёт на канал их, но только первое слово, которое в базе.

Re: Проблемы с викториной v1.8 by Sergio + new addons.

СообщениеДобавлено: 19 янв 2012 10:44
tvrsh
Corund, меняй
        set anagrgame(slovo) [tolower [lindex $conf(an_base) [rand [llength $conf(an_base)]]]]
на это:
TCL: [ Скачать ] [ Скрыть ]
# Открываем для чтения файл с анаграммами.
set anfile [open $conf(an_base) "r"]

# Читаем файл и разбиваем прочитанные данные по новой строке. Создаем из них список.
set andata [split [read $anfile] "\n"]

# Выбираем случайное слово из списка.
set anslovo [lindex $andata [rand [llength $andata]]]

# Преобразуем его к нижнему регистру.
set anagrgame(slovo) [tolower $anslovo]

# Закрываем ранее открытый на чтение файл.
close $anfile

Расписал подробно и добавил комментариев. Теперь точно должно работать.