Викторина (Quiz.tcl) v1.19 Lite |
Викторина (Quiz.tcl) v1.19 Lite |
Alvor |
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 плюс ко всему бот жутко тормозит и жрет проц. Как старый так и новый. Юзерфайл тупо перекинул на нового, с пустым юзерфайлом играл быстро и проц не хапал. Из-за чего может быть такое? |
Kreon |
Sep 2 2008, 04:34 PM
Post
#242
|
Developer Group: Root Admin Posts: 396 Joined: -- From: Внешние пределы Member No.: 2 |
Несложную для знающих 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 плюс ко всему бот жутко тормозит и жрет проц. Как старый так и новый. Юзерфайл тупо перекинул на нового, с пустым юзерфайлом играл быстро и проц не хапал. Из-за чего может быть такое? Сколько пользователей?Очень ресурсоемки процедуры ::tpub::stats_write и ::tpub::top_write. Нет смысла держать и то, и другое включенным. Если используется php-скрипт для вывода статистики игры на сайт - необходимо первое, если хтмл - второе. Возможно есть резон отключить их в конфиге совсем, либо выставить время обновления реже. Если лагает постоянно сама игра - может быть стоит подумать об апгрейде железа. -------------------- Не понял сам - не дай понять другому
|
Alvor |
Sep 2 2008, 05:30 PM
Post
#243
|
Участник Group: Members Posts: 30 Joined: 9-March 07 Member No.: 76 |
Перенеслось отлично, спасибо )
|
Гином |
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 одним текстовым файлом? С уважением Гином. |
Alvor |
Sep 26 2008, 07:45 AM
Post
#245
|
Участник Group: Members Posts: 30 Joined: 9-March 07 Member No.: 76 |
А в чем проблема? Меняешь файл с вопросами на новый, даешь боту команду !rehash questions и играешь с новой базой. Статистика игроков хранится в юзер-файле бота и никак от базы вопросов не зависит.
|
Гином |
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 .. |
Alvor |
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}
|
Sin |
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 |
Kreon |
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. Если база где-то в другом месте - такое, конечно, не прокатит. -------------------- Не понял сам - не дай понять другому
|
Sin |
Oct 22 2008, 04:48 PM
Post
#250
|
Посетитель Group: Members Posts: 5 Joined: 17-May 07 Member No.: 96 |
база на локалхосте.. твое решение пока не пробовал, но хочу спросить:
в пыхе есть функция mysql_pconnect - постоянное соединение в бд.. поддерживаецо автоматически.. есть ли альтернатива на tcl? данной функцией можно было бы обойтись без костылей.. |
Kreon |
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, и ничего не дисконнектит. -------------------- Не понял сам - не дай понять другому
|
CooK |
Nov 1 2008, 06:54 PM
Post
#252
|
Посетитель Group: Members Posts: 6 Joined: -- Member No.: 44 |
Kreon, раньше в предыдущих версиях была такая переменная, которая указывала через сколько сек. можно взять первую подсказку (защита от тех, кто не читая вопроса требует подсказку)... Что нужно сделать, чтобы внедрить эту функцию?
|
Гином |
Nov 3 2008, 08:18 PM
Post
#253
|
Посетитель Group: Members Posts: 4 Joined: 29-June 08 Member No.: 238 |
помогите добавить в v1.19 Lite проверку на время запуска в команду !рег
Проблема с следующем в запрещенное время запуска по команде !старт скрипт отвечает, время игры ограниченно правилами канала, а на команду !рег начинает регить и пытаться запустить скрипт викторины вследствии чего нагрузка на оперативку и выскакивают ошибки в паттилайн |
lem1x |
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 очков) место Как поменять ? |
Nuri4 |
Nov 21 2008, 06:45 AM
Post
#255
|
Посетитель Group: Members Posts: 1 Joined: 21-November 08 Member No.: 260 |
народ подскажите какую кодировку выбирать в MySQL и в какой кодировке должен быть файл с вопросами перед конвертацией???
уже по всякому перепробывал и нечего не получяется... или может ктото готовой БД MySQL поделится для windrоpa??? |
Kreon |
Nov 21 2008, 04:04 PM
Post
#256
|
Developer Group: Root Admin Posts: 396 Joined: -- From: Внешние пределы Member No.: 2 |
Ну можно по-разному. Самый примитивный вариант - всё в cp1251.
Как настроить MySQL в данном случае - в интернете есть очень большое число статей. MySQL по умолчанию работает или в юникоде, или в latin1/sweden, поэтому и не получается. -------------------- Не понял сам - не дай понять другому
|
SHEWREKOOK |
Nov 23 2008, 03:50 AM
Post
#257
|
Новичок Group: Members Posts: 11 Joined: 7-January 08 Member No.: 166 |
помогите добавить в 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] |
Sin |
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 данную ошибку уже видел несколько раз.. появляется редко. Сначала увидел её на боте который обслуживал викторину и другой канал. Потом разделил ботов.. викторину обслуживает новый бот, и вот теперь ошибка вылезла на нем... Подскажите в чем проблема пожалуйста |
Kreon |
Nov 27 2008, 11:44 PM
Post
#259
|
Developer Group: Root Admin Posts: 396 Joined: -- From: Внешние пределы Member No.: 2 |
Не пользуйтесь системой ограничения минимального количества игроков для запуска игры.
Она там кривая. -------------------- Не понял сам - не дай понять другому
|
Alvor |
Nov 28 2008, 09:42 AM
Post
#260
|
Участник Group: Members Posts: 30 Joined: 9-March 07 Member No.: 76 |
|
Lo-Fi Version | Time is now: 21st May 2024 - 06:22 PM |