Quiz Memorial Forum

Welcome Guest ( Log In | Register )

14 Pages V « < 11 12 13 14 >  
Reply to this topicStart new topic
> Викторина (Quiz.tcl) v1.19 Lite
Alvor
post Sep 2 2008, 12:56 PM
Post #241


Участник
***

Group: Members
Posts: 30
Joined: 9-March 07
Member No.: 76



Несложную для знающих tcl ) Подскажи хотя бы какие поля нужно перенести:
--XTRA quiz score ... - это понятно
--XTRA ATIME
--XTRA TMPTIME
--XTRA TIME
--XTRA idle
--XTRA created
может еще что-то есть... какие поля именно викторинные? Спасибо )
PS: Перевел вопросы в MySQL базу, все нормально (пока что), но при рестарте выдает ошибку
QUOTE
Tcl error [::tpub::idxsave]: can't read "qpos": no such variable

плюс ко всему бот жутко тормозит и жрет проц. Как старый так и новый. Юзерфайл тупо перекинул на нового, с пустым юзерфайлом играл быстро и проц не хапал. Из-за чего может быть такое?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Kreon
post Sep 2 2008, 04:34 PM
Post #242


Developer
******

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



QUOTE(Alvor @ Sep 2 2008, 01:56 PM) *

Несложную для знающих tcl

Абстрактная конструкция, которая скорее всего не запустится, но делать надо примерно таким образом:
CODE
# для сохранения в файл
proc quizsave {} {
    set i 0
    if {[catch {set fn [open "file.txt" w+]} r]} {putlog "cant open file for writing: $r"; return}
    foreach user [userlist] {
        if {[set xtra [getuser $user xtra quiz]] == ""} { continue }
        set hosts [getuser $user hosts]
        puts $fn [join [list $user $xtra $hosts] "¤"]
        incr i
    }
    close $fn
    putlog "$i users saved"
}
# для чтения из файла
proc quizload {} {
    set i 0
    if {[catch {set fn [open "file.txt" r]} r]} {putlog "cant open file for reading: $r"; return}
    while {![eof $fn]} {
        if {[set line [string trim [gets $fn]]] == ""} { continue }
        set line [split $line "¤"]
        if {[llength $line] != 3} {putlog "@\#\$\%^&*!! unreadable data in file!"; continue}
        adduser [lindex $line 0]
        setuser [lindex $line 0] xtra quiz [lindex $line 1]
        foreach host [lindex $line 2] {
            setuser [lindex $line 0] hosts $host
        }
        incr i
    }
    close $fn
    putlog "$i users loaded"
}

При желании туда же можно добавить по аналогии перенос полей --XTRA ATIME, --XTRA TMPTIME, --XTRA TIME, --XTRA idle и --XTRA created. А можно и не добавлять.
Использование: на старом боте набрать .tcl quizsave, переложить сгенерированный файл, на новом набрать .tcl quizload

QUOTE(Alvor @ Sep 2 2008, 01:56 PM) *
плюс ко всему бот жутко тормозит и жрет проц. Как старый так и новый. Юзерфайл тупо перекинул на нового, с пустым юзерфайлом играл быстро и проц не хапал. Из-за чего может быть такое?
Сколько пользователей?
Очень ресурсоемки процедуры ::tpub::stats_write и ::tpub::top_write. Нет смысла держать и то, и другое включенным. Если используется php-скрипт для вывода статистики игры на сайт - необходимо первое, если хтмл - второе. Возможно есть резон отключить их в конфиге совсем, либо выставить время обновления реже.
Если лагает постоянно сама игра - может быть стоит подумать об апгрейде железа.


--------------------
Не понял сам - не дай понять другому
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alvor
post Sep 2 2008, 05:30 PM
Post #243


Участник
***

Group: Members
Posts: 30
Joined: 9-March 07
Member No.: 76



Перенеслось отлично, спасибо )
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Гином
post Sep 26 2008, 02:15 AM
Post #244


Посетитель
*

Group: Members
Posts: 4
Joined: 29-June 08
Member No.: 238



1. Подскажите как сменить базу вопросов без потери статистики игроками?
2. Может кто встречал хелп по (Quiz.tcl) v1.19 Lite одним текстовым файлом?

С уважением Гином.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alvor
post Sep 26 2008, 07:45 AM
Post #245


Участник
***

Group: Members
Posts: 30
Joined: 9-March 07
Member No.: 76



А в чем проблема? Меняешь файл с вопросами на новый, даешь боту команду !rehash questions и играешь с новой базой. Статистика игроков хранится в юзер-файле бота и никак от базы вопросов не зависит.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Гином
post Sep 28 2008, 07:22 AM
Post #246


Посетитель
*

Group: Members
Posts: 4
Joined: 29-June 08
Member No.: 238



Подскажите как настроить время правильно в конфиге, выставляю set conf(timelimit) {0-2 10-24} значит время игры с 2 ночи до 10 утра. насамом деле викторина по какому то другому времени запускается.. другие скрипты видят время правильно, тоесть если я например в 02:00 наберу команду
!время скрипт покажет что время локальное 02:00 ..
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alvor
post Sep 28 2008, 11:31 AM
Post #247


Участник
***

Group: Members
Posts: 30
Joined: 9-March 07
Member No.: 76



Имхо это значит что вермя игры с полуночи до 2х ночи и с 10 утра до полуночи ) Если тебе надо с 2 до 10 попробуй поставить set conf(timelimit) {2-10}
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Sin
post Oct 1 2008, 04:59 PM
Post #248


Посетитель
*

Group: Members
Posts: 5
Joined: 17-May 07
Member No.: 96



подскажите пожалуйста что делать в данной ситуации:
патилайн:
CODE

[17:36] %KriSTinka% рег
[17:36] %xANGELx% рег
[17:36] Tcl error in script for 'timer644':
[17:36] Query Failed: MySQL server has gone away

ирк
CODE

17:36:39 <KriSTinka> !рег
17:36:40 <Krevedko> KriSTinka, вы добавлены в список активных игроков. Всего зарегистрировано 2 игрока.
17:36:40 <Kamaelic> !рег
17:36:41 <Krevedko> Kamaelic, вы добавлены в список активных игроков. Всего зарегистрировано 3 игрока.
17:36:42 <Krevedko> Отлично, народа хватает, начинаем игру!
17:36:44 <Krevedko> Добро пожаловать на нашу викторину!  Начинаем игру.  В базе данных 242677 вопросов.

и собственно все останавливается
егг 1.6.19
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Kreon
post Oct 1 2008, 07:32 PM
Post #249


Developer
******

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



Сервер закрывает подключение, если больше 8 часов не было обращений к БД.

Попробуйте добавить куда-нибудь в конфиг бота или викторины bind time - {?0 * * * *} mysql_ping
Если не поможет, тогда так:
CODE
bind time - {00 * * * *} send_crap_to_bd;
proc send_crap_to_bd {m h d M Y} {
    if {[mysql_connected]} {mysql_query "select 2+2"}
}

Более красивым решением возможно будет добавить функцию my_mysql_query, через которую вызывать mysql_query через catch, с помощью которого можно будет зафиксировать эту ошибку и в случае, если она произошла, переподключаться к бд и высылать этот запрос повторно. А в скрипте викторины соответственно поменять все mysql_query на my_mysql_query.

Я вот ещё обратил внимание, что такая дрянь проявляется только когда бот подключен по tcp к sql'ю. Когда база данных указана как localhost - такого не происходит. Так что если есть возможность, указывайте не 127.0.0.1 при подключении к бд, а localhost. Если база где-то в другом месте - такое, конечно, не прокатит.


--------------------
Не понял сам - не дай понять другому
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Sin
post Oct 22 2008, 04:48 PM
Post #250


Посетитель
*

Group: Members
Posts: 5
Joined: 17-May 07
Member No.: 96



база на локалхосте.. твое решение пока не пробовал, но хочу спросить:
в пыхе есть функция mysql_pconnect - постоянное соединение в бд.. поддерживаецо автоматически.. есть ли альтернатива на tcl? данной функцией можно было бы обойтись без костылей..
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Kreon
post Oct 22 2008, 05:02 PM
Post #251


Developer
******

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



На mysql_mod есть только такой mysql_connect, какой есть.
С другой стороны если вы знаете Си, то можно модифицировать mysql_mod и добавить в него любую функцию из библиотеки стандартного mysql-клиента, или написать собственный обработчик, который бы все красиво автоматически поддерживал. Ну или переделать работу с SQL'ем в скрипте на какую-нибудь другую либу, например, mysqltcl.

А у меня лично игра запущена на CentOS 5.2 с шедшим в комплекте MySQL-сервером, бот коннектится к localhost'у, раз в час отправляет mysql_ping, и ничего не дисконнектит.


--------------------
Не понял сам - не дай понять другому
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
CooK
post Nov 1 2008, 06:54 PM
Post #252


Посетитель
*

Group: Members
Posts: 6
Joined: --
Member No.: 44



Kreon, раньше в предыдущих версиях была такая переменная, которая указывала через сколько сек. можно взять первую подсказку (защита от тех, кто не читая вопроса требует подсказку)... Что нужно сделать, чтобы внедрить эту функцию?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Гином
post Nov 3 2008, 08:18 PM
Post #253


Посетитель
*

Group: Members
Posts: 4
Joined: 29-June 08
Member No.: 238



помогите добавить в v1.19 Lite проверку на время запуска в команду !рег
Проблема с следующем в запрещенное время запуска по команде !старт скрипт отвечает, время игры ограниченно правилами канала, а на команду !рег начинает регить и пытаться запустить скрипт викторины вследствии чего нагрузка на оперативку и выскакивают ошибки в паттилайн
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
lem1x
post Nov 8 2008, 11:54 AM
Post #254


Участник
***

Group: Members
Posts: 32
Joined: 7-March 08
Member No.: 199



Kreon такой вопрос-раньше у меня по викторине в топе был ник ~PaMupec~ а теперь просто на Роман изменилось-это из-за хендла?
<~PaMupec~> !место
<ShpioN> Роман(Эрудит) занимает 7-е(3119 очков) место

Как поменять ?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Nuri4
post Nov 21 2008, 06:45 AM
Post #255


Посетитель
*

Group: Members
Posts: 1
Joined: 21-November 08
Member No.: 260



народ подскажите какую кодировку выбирать в MySQL и в какой кодировке должен быть файл с вопросами перед конвертацией???
уже по всякому перепробывал и нечего не получяется... или может ктото готовой БД MySQL поделится для windrоpa???
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Kreon
post Nov 21 2008, 04:04 PM
Post #256


Developer
******

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



Ну можно по-разному. Самый примитивный вариант - всё в cp1251.
Как настроить MySQL в данном случае - в интернете есть очень большое число статей. MySQL по умолчанию работает или в юникоде, или в latin1/sweden, поэтому и не получается.


--------------------
Не понял сам - не дай понять другому
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
SHEWREKOOK
post Nov 23 2008, 03:50 AM
Post #257


Новичок
**

Group: Members
Posts: 11
Joined: 7-January 08
Member No.: 166



QUOTE(Гином @ Nov 3 2008, 10:18 PM) *

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

я сделал так:
CODE
proc ::tpub::cmd_рег {nick chan text} { return [cmd_reg $nick $chan $text] }
proc ::tpub::cmd_reg {nick chan text} {
variable conf; variable game; global regusers
    if {$text == "?help?"} { return [usage $nick $chan рег "" "если включен лимит по игрокам, то добавляет вас к числу играющих"] }
    if {![info exists conf(mpeople)] || [lindex $conf(channels) 0] != $chan} { return 0 }
        [b]if {![checktime]} {
        putmsg $chan "$nick, запуск викторины на данный момент невозможен - время работы ограничено моим хозяином."
        return 0
    }[/b]

просто взяв эту проверку из процедуры старта викторины. Соответственно, изменив причину на свою, получите и решение проблемы.


---
Оформляйте исходный код скриптов в тэги [CODE]
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Sin
post Nov 27 2008, 08:16 PM
Post #258


Посетитель
*

Group: Members
Posts: 5
Joined: 17-May 07
Member No.: 96



Вновь прошу помощи...:
error executing рег: list element in braces followed by "_and`Snake" instead of space
данную ошибку уже видел несколько раз.. появляется редко. Сначала увидел её на боте который обслуживал викторину и другой канал. Потом разделил ботов.. викторину обслуживает новый бот, и вот теперь ошибка вылезла на нем... Подскажите в чем проблема пожалуйста
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Kreon
post Nov 27 2008, 11:44 PM
Post #259


Developer
******

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



Не пользуйтесь системой ограничения минимального количества игроков для запуска игры.
Она там кривая.


--------------------
Не понял сам - не дай понять другому
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alvor
post Nov 28 2008, 09:42 AM
Post #260


Участник
***

Group: Members
Posts: 30
Joined: 9-March 07
Member No.: 76



QUOTE(Kreon @ Nov 27 2008, 11:44 PM) *

Не пользуйтесь системой ограничения минимального количества игроков для запуска игры.
Она там кривая.

Подтверждаю. smile.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

14 Pages V « < 11 12 13 14 >
Reply to this topicStart new topic
5 User(s) are reading this topic (5 Guests and 0 Anonymous Users)
0 Members:

 



Lo-Fi Version Time is now: 28th April 2024 - 11:41 PM
Design by GPF © 2006