Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Развлекательные скрипты [PtokaX] _ Trivia Mod

Автор: alex82 20.2.2009, 17:06

Название скрипта: Trivia Mod
Версия: 1.02
Версия API: API2
Автор: alex82

Информация:
Скрипт создан на основе Викторины 1.6 (by NRJ), которая в свою очередь основывается на скрипте Trivia (by chill). big_smile.gif Изменения относительно оригинального скрипта:
* Перевод на API2
* Оптимизация и уплотнение кода
* Некоторые изменения функционала:
- Запоминание последнего состояния игры
- Юзеры могут самостоятельно включать Викторину (отдельные настройки автоотключения)

 Trivia_Mod_v1.02.rar ( 172.88 килобайт ) : 877

 Trivia_Mod_v1.02.7z ( 203.96 килобайт ) : 397


Версия, поддерживающая Lua 5.3:
 Trivia_Mod_v1.02a.7z ( 204.04 килобайт ) : 57


PS. Убедительная просьба сообщать о найденных ошибках.

Автор: Setuper 20.2.2009, 17:44

Хм... Убрав методы, не думаю, что скрипт ускорит свою работу.
Абсолютные пути не прописаны.

Автор: alex82 20.2.2009, 17:49

Цитата(Setuper @ 20.2.2009, 16:44) *
Хм... Убрав методы, не думаю, что скрипт ускорит свою работу.
Функции выполняются медленнее чем методы?

Цитата(Setuper @ 20.2.2009, 16:44) *
Абсолютные пути не прописаны.
PtokaX прекрасно понимает относительные.

Автор: Setuper 20.2.2009, 18:00

Дело в передаче параметров. В функции передача осуществляется через копирование в стек, а в методе передача первого параметра осуществляется по ссылке (без копирования и с непосредственным обращением к адресу памяти).

Абсолютные пути правильно работают в любой версии ptokax, а вот относительные пути в версии 0.4.1.0 работают от папки с ptokax.exe, а в остальных версиях от папки scripts. Всё же мне кажется лучше писать универсальные скрипты, работающие на любой версии, тогда и меньше вопросов будет: "а почему у меня не работает?"

Автор: alex82 20.2.2009, 18:18

По поводу путей. Если админ хаба не в состоянии исправить ОДИН параметр в настройках скрипта для того, чтобы скрипт заработал на его устаревшей версии птоки, то такой админ хабу не нужен, хаб проживёт и без него.

А элементы ООП убраны вовсе не из соображений оптимизации, а для лучшей читаемости кода.

Автор: Setuper 20.2.2009, 19:29

Почему ты так игнорируешь абсолютные пути? Ведь даже на линуксе скрипт работать с относительными путями не будет. Зачем игнорировать если есть возможность сделать скрипт универсальным. Может есть какая-то приина по который ты пытаешься использовать относительный путь?

По поводу ООП я бы так не сказал, скорее это всё же некая эмуляция ООП))) И с методами читаемость кода вовсе не хуже.

Автор: alex82 20.2.2009, 20:38

Потому что, как ты сам знаешь, вызывать Core.GetPtokaXPath() непосредственно в настройках нельзя, а если перенести его в OnStartup, то туда же прийдётся вынести и настройки файлов, либо переопределять их. Так что я не игнорирую абсолютные пути, я просто стараюсь избегать излишнего усложнения. А фанаты абсолютных путей и линуксоиды (которым вообще не привыкать стучать по клаве - им ведь даже для того чтобы посмотреть текстовый файл, наверное, приходится прописывать зависимости и пересобирать ядро big_smile.gif ) могут без проблем прописать путь в переменной path.

Цитата
По поводу ООП я бы так не сказал, скорее это всё же некая эмуляция ООП

Скорее пародия ). Судя по всему, NRJ пытался копировать стиль автора оригинального скрипта. И наваял нечто жуткое.

Автор: Wariner 20.2.2009, 20:44

а если в настройках сделать переменную sPath = "Папка скрипта" а в потом

Код
function OnStartup()
     sPath = Core.GetPtokaXPath().."scripts/"..sPath
      ...
end

Автор: alex82 20.2.2009, 21:01

Цитата(Wariner @ 20.2.2009, 19:44) *
а если в настройках сделать переменную sPath = "Папка скрипта" а в потом
Код
function OnStartup()
     sPath = Core.GetPtokaXPath().."scripts/"..sPath
      ...
end

А если в настройках
Цитата
File = sPath.."filename.lua"

Тогда не катит

Автор: Setuper 20.2.2009, 22:19

Цитата(alex82 @ 20.2.2009, 20:38) *
Потому что, как ты сам знаешь, вызывать Core.GetPtokaXPath() непосредственно в настройках нельзя, а если перенести его в OnStartup, то туда же прийдётся вынести и настройки файлов, либо переопределять их. Так что я не игнорирую абсолютные пути, я просто стараюсь избегать излишнего усложнения. А фанаты абсолютных путей и линуксоиды (которым вообще не привыкать стучать по клаве - им ведь даже для того чтобы посмотреть текстовый файл, наверное, приходится прописывать зависимости и пересобирать ядро big_smile.gif ) могут без проблем прописать путь в переменной path.


Скорее пародия ). Судя по всему, NRJ пытался копировать стиль автора оригинального скрипта. И наваял нечто жуткое.


Твоя позиция насчёт путей мне ясна, но однако я не считаю, что одна дополнительная строчка в функции OnStartup, которая переопределит пути, сильно усложнит скрипт)))

NRJ не пытался ничего копировать. Он просто переводил скрипт с lua4 под lua5 + переводил на русский язык + фиксил некоторые баги + кое что дописывал, но основные принципы построения скрипта он не изменял. А автор скрипта не просто так писал методы, он знал как эффективнее написать код для оптимальной работы скрипта. Может и не столь модульно и наглядно выглядит код, но всё же оптимизированно, а тот кто разбирается в lua, тот должен понять код, как бы заумно он не был написан. По себе могу сказать, что чем больше пишешь, тем всё больше и больше стараешься написать более оптимизированный, красивый и универсальный код и порой находишь простые решения, которые до этого не видел и не воспринимал. Я конечно не хочу навязывать свои принципы, но всё же советую обращать внимание на замечательные (необычные) реализации)))))

Автор: alex82 20.2.2009, 23:06

Цитата
NRJ не пытался ничего копировать. Он просто переводил скрипт с lua4 под lua5 + переводил на русский язык + фиксил некоторые баги + кое что дописывал, но основные принципы построения скрипта он не изменял.

Насколько я понимаю, почти весь класс TrivEx - дело рук NRJ, ну а curTriv - из оригинального скрипта. Если сомневаешься - почитай чейнджлог викторины на проце.

Я ничего не имею против "необычных" реализаций, но какой, черт возьми, смысл в этой функции:
Код
function curTriv:GetGetQues()
    if (self.getques == 1) then    
        return 1
    end
end

Не проще ли взять взять значение переменной напрямую? Или это такой способ оптимизации? И подобных моментов в скрипте было довольно много.

Автор: Setuper 20.2.2009, 23:34

Согласен, что это не оптимизированный кусок кода, но смысл в этом был следующий: любой хороший программист сначала делает некоторый так называемый макет программы. Он ещё не знает будет ли он использовать ту или иную функцию, будет ли на данное место дописан какой-то код. Делаются так называемые функции-заглушки, которые ничего не выполняют, и на место которых должны будут встать функции, которые что-то будут делать. В программе предусматриваются разные варианты и только потом при самой реализации выбирается какой-то один вариант. Так вот в этой функции сначала видимо предполагалось, что после выполнения этого условия должно быть некоторое действие, а не просто возврат значения. Согласен, что после написания стабильной версии должен идти этап оптимизации, который порой бывает затяжным. Но смысл данных кусков кода думаю должен быть понятен.

Принцип написания эффективной программы состоит в тщательном планировании. В С++, в частности, это выражается в величайшем изобретении - наследовании - в построении неких базовых классов, которые потом расширяются.

Автор: alex82 20.2.2009, 23:56

В данном случае мне видится несколько иное обьяснение - NRJ просто не знал как взять значение переменной из другого класса (в оригинальном скрипте она обьявлялась как self.getques, а за пределами класса была, естественно, curTriv.getques). Сие предположение ни в коем случае не бросает тень на вышеназванного кодера, а говорит лишь о том, что он начал модифицировать скрипт на ранних стадиях развития своего программерского таланта.

Автор: MEXAHuK 7.3.2009, 19:17

когда инрает только один человек - то всё нормально. заходит второй (третий и так далее )
то почему то при игре не реагирует на правильные ответы. и очки не плюсуе. только вопросы шлёт и ответы с подсказками пишет

Автор: alex82 7.3.2009, 19:26

Попробуй подвинуть скрипт в самый верх.

Автор: MEXAHuK 7.3.2009, 19:32

не помогло

Автор: alex82 7.3.2009, 19:35

Цитата(MEXAHuK @ 7.3.2009, 18:32) *
не помогло

В каком режиме работает? Игра всем доступна, или только тем, кто присоединился?

Автор: MEXAHuK 7.3.2009, 19:36

только к тем кто присоединился. игра в личке. бот не зарегистрирован на хабе.
вопрос: как можно сделать так чтобы можно было видеть ответы (игро комната) других пользователей?

Автор: alex82 7.3.2009, 20:15

Цитата
игра в личке. бот не зарегистрирован на хабе.

Так не может быть. Бот ВСЕГДА регистрируется если игра ведётся в личке, вне зависимости от настроек.

Проверил режим игры в личке - ошибок не заметил, сообщения нормально ретранслируются всем игрокам.

Автор: li4nost 7.3.2009, 20:38

т.е. викторину можно не пускать в мэйн а играть в привате?
так это, получается, один играть будешь или все кто хочет? и буду лия например видеть, что отвечают другие?

Автор: mariner 7.3.2009, 20:53

можно в приват.
будут играть все.
ответы других будут видны.

Автор: MEXAHuK 7.3.2009, 20:53

тогда странно что за косяк. я один играю: всё норм. второй заходит - и всё: игра просто задаёт вопрос, даёт подсказку и на правильные ответы ноль внимания.
проверь ещё раз и перезалей на всякий пожарный.

Автор: li4nost 7.3.2009, 21:39

Код
[20:38] Синтаксис PtokaX_0.4.1.1\scripts\TriviaMod.lua:324: attempt to call global 'SendToNick' (a nil value)


что может быть такого?
перенес в личку, начались траблы - пиши ответы - но они не засчитываются - как все равно не видят их

Автор: Vizunchik 7.3.2009, 21:49

Цитата(li4nost @ 7.3.2009, 23:39) *
Код
[20:38] Синтаксис PtokaX_0.4.1.1\scripts\TriviaMod.lua:324: attempt to call global 'SendToNick' (a nil value)


что может быть такого?
перенес в личку, начались траблы - пиши ответы - но они не засчитываются - как все равно не видят их

добавь Core. к SendToNick получется Core.SendToNick

Автор: li4nost 7.3.2009, 22:34

спасибо big_smile.gif

Автор: alex82 7.3.2009, 22:35

Исправил. Перезалил.

Автор: FixeR 8.3.2009, 23:38

На версии 1.00 (основа - скрипт NRJ 1.5) были очень обидные баги:
Игра в главном чате, играют все.
1. Не все ответы принимает. Т.е. буквально каким то юзерам не везет - их ответы не принимаются, вместо этого через некоторое время просто идет следующий вопрос. У других всё нормально.
После регистрации на хабе шанс, что ответ не примется снижался.
2. После N неправильных ответов подряд викторина должна выключаться, а она просто бесконечно выводила сообщения в чат "Викторина остановлена, т.к. никто не ответил на...". Не помню как, но это удалось пофиксить.
3. Если в одну и ту же секунду в чат пишут правильный ответ два или более человек (довольно частое явление), то викторина вырубается. Не сказав ни слова.

Будем тестировать 1.01

Автор: alex82 9.3.2009, 0:36

FixeR

Весьма странные глюки.

Дело в том, что работа скрипта в этом режиме уже достаточно хорошо потестилась (на хабе, который я админю, викторина работает именно в этом режиме, и играют в неё довольно часто), и ничего подобного замечено не было.

Единственный баг, исправленный в версии 1.01 - некорректная работа скрипта при игре в личке бота.

Автор: Vizunchik 9.3.2009, 13:47

alex82: как сделать чтобы играли в личке бота и бот не показывался в списке юзеров

Автор: alex82 9.3.2009, 15:59

Цитата(Vizunchik @ 9.3.2009, 12:47) *
alex82: как сделать чтобы играли в личке бота и бот не показывался в списке юзеров
На данный момент никак. Разве что залезть в код и убрать регистрацию бота.

Автор: Vizunchik 9.3.2009, 16:44

Цитата(alex82 @ 9.3.2009, 17:59) *
На данный момент никак. Разве что залезть в код и убрать регистрацию бота.

Это я не нашёл в настройка как сделать чтобы в личке и гра шла все файлы перерыл

Автор: alex82 9.3.2009, 19:53

Цитата(Vizunchik @ 9.3.2009, 15:44) *
как сделать чтобы в личке и гра шла все файлы перерыл
Это настраивается в меню, а не в файлах.

Автор: Vizunchik 9.3.2009, 20:01

при запуске пишет

Код
[22:01] Синтаксис cannot open scripts/TriviaMod/settings.lu: No such file or directory

что делать ?

Автор: MEXAHuK 14.3.2009, 21:21

просьба: сделать ещё одну переменную которая отвечала бы за время между вопросами.
сейчас за это отвечает та же переменная что и за время между подсказками.

Автор: ycaTblu 14.3.2009, 22:32

Цитата(FixeR @ 9.3.2009, 2:38) *
2. После N неправильных ответов подряд викторина должна выключаться, а она просто бесконечно выводила сообщения в чат "Викторина остановлена, т.к. никто не ответил на...". Не помню как, но это удалось пофиксить.


Это скорее всего происходит из-за таймера. Какой то другой скрипт включает таймер с таким же именем и начинается свистопляска.

Возможно что и остальные проблемы, описанные в данном посте, появляются по этой причине

Автор: Drakula 15.3.2009, 19:50

Бот супер=) Хоть недаедает людям, а кому нуна могут включить=)

Автор: Drakula 22.3.2009, 18:15

Обнаружил бог..... очень сильный мя он даводит, оч сильно!!!! Когда ставиш новый скрипт любой, запускаеш викторину всё работает, но когда жмёш выключить команда нерабртает, перезапускаеш хаб всё пашет...... палучается теперь что бы поставить скрипт нужно каждый раз перезагружать хаб???? Прошу оч сильно исправить это!!!!!!!! :'-(

Автор: alex82 22.3.2009, 23:38

Drakula

Перезапуск скриптов не помогает?

Автор: Drakula 22.3.2009, 23:42

Цитата(alex82 @ 23.3.2009, 0:38) *
Drakula

Перезапуск скриптов не помогает?

ну я уж нетакой тупой, когда перезапускаеш скрипт его ваще невключиш, пишет ошибку и неврубает, перезапускаеш хаб всё оке.

Автор: alex82 22.3.2009, 23:47

Цитата
пишет ошибку

Какую?

Автор: Drakula 23.3.2009, 16:29

Цитата(alex82 @ 22.3.2009, 23:47) *
Какую?

Когда скрипт неперазепускаеш непомню чесно и нескажускажу, а когда перезапускаеш скрипт незапускается вообще, вот протестируй у ся сам, поставь викторину после запусти её, поставь новый скрипт(любой) и запусти его, и после папробуй с помощью меню оставанить викторину=) А после её перезапустить и тогда сам всё увидеш= )

Автор: alex82 23.3.2009, 17:25

Проверил.

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

PS. Свою писанину перед отправкой проверяй на ошибки в Ворде. Не позорься.

Автор: Ears 23.3.2009, 21:48

Цитата(Vizunchik @ 9.3.2009, 22:01) *
при запуске пишет
Код
[22:01] Синтаксис cannot open scripts/TriviaMod/settings.lu: No such file or directory

что делать ?


такую же ошибку пишет (

Автор: alex82 23.3.2009, 22:03

Папка TriviaMod на месте?

Автор: li4nost 24.3.2009, 12:08

нашел в нете 134000 вопросов для викториныbig_smile.gif

Автор: Ears 24.3.2009, 15:03

Да папка находиться там где её и положено, но файл не загружаеться (

Автор: Drakula 24.3.2009, 22:38

Цитата(alex82 @ 23.3.2009, 18:25) *
Проверил.

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

PS. Свою писанину перед отправкой проверяй на ошибки в Ворде. Не позорься.

Нащёт ошибок мне пох т.к. я белорус и для мя важнее мой язык, т.к. я понял что ты мне невериш, я те выпишу название ошибки сегодня или завтра, и если снова неповереш или будешь упираться что всё оке, я буду представлять что нидь другое. А если это был глюк компа, то есть винды то извинюсь т.к. недавно она у мя слетела и я её востанавил и её работа в данный момент не ас.

P.S. Ради тебя проверил на ошибки+я не дружу с грамматикой= ) bad_smile.gif

[21:35] Синтаксис scripts/TriviaMod/Functions/Save.lu:31: attempt to index local 'hFile' (a nil value)
Вот какую ошибку выдаёт!!!!!! Что ещё требуется для исправления этой ошибки??? какая инфа????

Автор: Ears 28.3.2009, 15:43

[22:01] Синтаксис cannot open scripts/TriviaMod/settings.lu: No such file or directory

исправил так вот

заместо этого
path = "scripts/"

прописал это
path = "С:/путь до папки птоках/scripts/"

Автор: Drakula 28.3.2009, 17:34

А что нащёт моей проблемы????7 Кто нить знает в чём причина????

Автор: alex82 28.3.2009, 17:39

Цитата(Drakula @ 28.3.2009, 16:34) *
А что нащёт моей проблемы????7 Кто нить знает в чём причина????

Попробуй прописать абсолютный путь:
Код
path = Core.GetPtokaXPath().."scripts/"

Автор: URI 29.3.2009, 12:42

Пожалуйста подскажите, что мне нужно сделать, чтобы бот посылал сообщения в приват?
1. В насторойках указал - играть в личке бота.
2. Сообщения от бота не приходят, но если сам открываешь личку бота (написать ЛС), то сообщения приходят
3. Возможно это как-то связано с тем, что у меня на хабе включена защита от спама - незарегенные пользователи не могут посылать сообщения, но от других ботов (антиреклама и т.п.) сообщения приходят...
4. Если бота надо регить на хабе, то объясните как это сделать - через админку птохи при регистрации нужно указывать пароль, а где его боту прописать не понятно...

извените за ламерский вопрос

Автор: alex82 29.3.2009, 13:42

Цитата(URI @ 29.3.2009, 12:42) *
2. Сообщения от бота не приходят, но если сам открываешь личку бота (написать ЛС), то сообщения приходят
Похоже на глюк клиента.

У других юзеров тоже так?

Автор: Drakula 30.3.2009, 17:40

Цитата(alex82 @ 28.3.2009, 17:39) *
Попробуй прописать абсолютный путь:
Код
path = Core.GetPtokaXPath().."scripts/"


Хочу извинится уже всё как 3 дня номр пашет. Я и перезагружаю текстовые файлы и скрипты ставлю и вика норм пашет+я нечего не изменял. Вопрос из за чего может быть такой глюк????

Сглазил=(

Нуна буит попробовать то что ты мя написал, заранее сенк!

P.S. прошу прошения за мат, не выдержил.

Автор: alex82 30.3.2009, 21:51

Цитата(Drakula @ 30.3.2009, 17:40) *
Вопрос из за чего может быть такой глюк????

Может http://mydc.ru/topic1693.html?

Автор: Drakula 1.4.2009, 11:46

Цитата(alex82 @ 30.3.2009, 21:51) *
Может http://mydc.ru/topic1693.html?


Ня я сначала проверю то что ты мне сказал прописать, а после уже что либо буду делать... а мот это версия протухи левая????? Хотя качал с сайта ихнего=\
Кароч я постараюсь сделать снова такую ошибку и запишу всё... а то картинками и хаписамя можно не всё понять. Или как я уже упомянул левая версия протухи у мя стоит=(

Автор: waild 4.5.2009, 12:40

Сделайте что бы можно было вопросы пропускать

Автор: Drakula 7.6.2009, 15:50

Нашёл несовместимость (скрипт Анкета не полностью функционирует) данного скрипта со скриптом Анкета, тоесть админ меню в нём не работает(в скрипте Анкета). Исправьте пожалуйста что бы вот этот скрипт полностью работал с этой викториной, вот ссылка где находится данный скрипт: http://mydc.ru/topic299.html

Автор: alex82 7.6.2009, 16:06

Цитата(Drakula @ 7.6.2009, 15:50) *
Нашёл несовместимость данного скрипта со скриптом Анкета, тоесть админ меню в нём не работает(в скрипте Анкета). Исправьте пожалуйста что бы вот этот скрипт полностью работал с этой викториной, вот ссылка где находится данный скрипт: http://mydc.ru/topic299.html
Ты уверен что это именно из-за TriviaMod? Если да, то проблема должна решиться установкой скрипта анкет выше викторины.

Автор: Drakula 7.6.2009, 16:21

Цитата(alex82 @ 7.6.2009, 16:06) *
Ты уверен что это именно из-за TriviaMod? Если да, то проблема должна решиться установкой скрипта анкет выше викторины.


щя попробую

Все скрипты были выключены+ну сам смотри:


 

Автор: alex82 7.6.2009, 16:35

Я думал, ты говоришь про команды.

Скрипт может блокировать меню другого скрипта разве что с помощью команды удаления всех меню. Но в TriviaMod такой нету. Так что дело скорее всего в кривости скрипта анкет.

Автор: Drakula 7.6.2009, 16:56

Цитата(alex82 @ 7.6.2009, 16:35) *
Я думал, ты говоришь про команды.

Скрипт может блокировать меню другого скрипта разве что с помощью команды удаления всех меню. Но в TriviaMod такой нету. Так что дело скорее всего в кривости скрипта анкет.


Ну тогда к те просьба, исправь пожалуйста скрипт Анкета+добавь некторые функции которые я написал в теме, буду благодарен тебе! Вот ссылка: http://mydc.ru/topic299.html?view=getlastpost
Или пускай исправит кто нидь другой!!!!

Автор: waild 29.6.2009, 13:11

У меня вопрос. Один решил сменить ник и очки свои терять не хочет, просит чтобы очки перекинул на его новый ник. Я вроде меняю в TrivaMod\Data\Scores потом запускю скрипт заново и ничего.
Как перекинуть-то очки, подскажите плиззз ???????????7

Автор: Setuper 29.6.2009, 14:35

1. Остановить скрипт
2. Изменить ник в базе
3. Запустить скрипт

Автор: mariner 29.6.2009, 18:44

Тестирую это в linux. Гм, все бы ничего, да вот оно выдает вопросы, а ответы не воспринимает. игра в главном чате идет (то есть авторизация не нужна)

Автор: alex82 30.6.2009, 1:18

mariner

Исправил

Автор: valdis73 2.7.2009, 15:59

Спасибо за викторину. Запустилась без багов и работает. Если будут ошибки напишу

Автор: valdis73 3.7.2009, 13:31

waild alex82 у меня вопрос.
Викторина выдаёт правильный ответ в ковычках причём с одной стороны.
Как это убрать?
Получается что все отвечают неверно

[14:24:33 | [ru] DOMOLINK CenterTelecom Tula]  <yura39> могильник
[14:24:35] <Москвичка> Вопрос № 105686 из 243012.
----------------------------------------------------------------------
> Очки: 5 - Варианты ответов: 1
Вопрос: древнее кладбище.
Подсказка: м##и##ни#

----------------------------------------------------------------------
[14:24:49] <Москвичка> Вопрос № 105686 из 243012.
----------------------------------------------------------------------
> Очки: 3 - Варианты ответов: 1
Вопрос: древнее кладбище.
Подсказка: мо#ил#ни#

----------------------------------------------------------------------
[14:24:56 | [ru] DOMOLINK CenterTelecom Tula]  <yura39> могильник

[14:25:00 | Локалка]  <krot25> Москвичка: могильник
[14:25:03] <Москвичка> Правильный ответ: "могильник


"могильник вот пример

Автор: Setuper 3.7.2009, 13:52

Открой скрипт блокнотом, нажми ctrl+f и найди фразу: "Правильный ответ:"

Автор: valdis73 3.7.2009, 14:17

SendMsgToPlayers("Игра была автоматически остановлена, так как на "..tmp.." вопросов подряд не был дан ни один правильный ответ.")


SendMsgToPlayers(curUser.sNick..": Всего очков: ".._Scores[curUser.sNick].Score..", Правильных ответов: ".._Scores[curUser.sNick].AvTime[2]..", Среднее время на ответ: "..string.format("%.2f",_Scores[curUser.sNick].AvTime[3]).." секунд(ы).")


ну а смысла тут чего то изменять нет

Есть вот такая строка
SendMsgToPlayers("На этот вопрос правильно ответил: "..curUser.sNick..", Ответ был: \""..corrans.."\"

Может надо убрать тут? \""..corrans.."\" и получиться
\"..corrans.."\"
Попробую

Автор: Setuper 3.7.2009, 14:35

Код
SendMsgToPlayers("На этот вопрос правильно ответил: "..curUser.sNick..", Ответ был: "..corrans.."

Автор: valdis73 3.7.2009, 14:48

Все пашет. Спасибо

Автор: FixeR 3.7.2009, 17:12

У меня файл questions 15 мб, нормально будет работать?

Автор: Setuper 3.7.2009, 19:26

Я думаю, что 15 метров это ещё мало)))

Автор: alex82 3.7.2009, 20:15

Цитата(FixeR @ 3.7.2009, 17:12) *
У меня файл questions 15 мб, нормально будет работать?
Будет ощутимо тормозить при загрузке вопросов

Автор: FixeR 3.7.2009, 20:57

Изменил одну строчку, у некоторых пользователей не принимает ответы =(

При этом в логах:
scripts\TriviaMod.lua:147: attempt to index field '?' (a nil value)

147ая строчка у меня изменена на это:

Цитата
SendMsgToPlayers("Ответил: "..curUser.sNick.." за "..tmpstring.." -> + "..TrivData.Points.." очков. (Всего очков: ".._Scores[curUser.sNick].Score..", ответов: ".._Scores[curUser.sNick].AvTime[2]..", в среднем на ответ: "..string.format("%.2f",_Scores[curUser.sNick].AvTime[3]).." с.)")


В чате смотрится вот так:
Цитата
Ответил: Апостол -> +5 очко(в). (Очков: 17554, ответов: 3158, среднее время на ответ: 53.98 секунд(ы).

Что не так?

Автор: waild 30.8.2009, 22:18

Народ подскажите где можно взять базу вопросов больше чем 15мб, а то этим чилдренам с хаба уже мало 240000 вопросов??????

Автор: Артём 30.8.2009, 23:09

waild сам потихоньку дописуй)) bad_smile.gif

Автор: Sergey613 26.9.2009, 23:29

Подскажите как сделать чтобы имени игры в списке юзеров хаба нестало?

Автор: Wariner 27.9.2009, 8:57

Открыть скрипт и изменить настройки!

Автор: HackFresse 29.9.2009, 11:23

Поставил скрипт на птоке под freebsd 7.2.

Цитата
«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»
Топ 10 средней затраты времени на вопрос
«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»
№ Ник
1 Zuhel - 0.01 сек
2 Zelebob1 - 0.01 сек
3 Ruslan - 0.02 сек
4 HackFresse - 0.02 сек
5 Death - 0.02 сек
6 Metalolom - 0.02 сек
7 Wasek - 0.02 сек
8 Nikitos - 0.04 сек

Автор: Gate001 16.10.2009, 19:56

Большая просьба-подскажите, как можно в подсказке выводить число букв? Не только звездочки, решеточки и прочее, но и число букв?

UPD: простите, уже сам нашел. Если кому надо будет:
поставить переменные в конфиге

Код
Tcfg.showquestion = 3
Tcfg.Questionmode = 1


UPD2: Понимает только ответы, написанные в строчном регистре... Можно ли сделать так, чтобы понимала и первую заглавную букву, или вообще было нечувствительно к регистру?

Автор: truth 16.10.2009, 22:29

Цитата
UPD2: Понимает только ответы, написанные в строчном регистре... Можно ли сделать так, чтобы понимала и первую заглавную букву, или вообще было нечувствительно к регистру?

Присоединяюсь.

Автор: Trans 17.10.2009, 12:05

В другой теме про Викторину есть моё сообщение ближе к концу, там я выкладывал Викторину с базой и с некоторыми новыми фишками. Там размер букв в ответах не имеет значения.
Вот тут описание я давал: http://mydc.ru/topic794.html?view=findpost&p=19128
А вот тут выложил файлы: http://mydc.ru/topic794.html?view=findpost&p=19274

Автор: truth 17.10.2009, 14:49

Trans, на каком скрипте произведены твои изменения? Если сейчас у меня стоит Trivia Mod (с первой страницы), я поставлю твой - он скушает таблицы очков?

Автор: Trans 17.10.2009, 15:18

Не знаю. Проверь в тестовом режиме - одинаковое ли содержание таблиц. Если да, и если названия одинаковые (если не одинаковы, то переименовать), то можно, наверно.

Автор: alex82 17.10.2009, 16:03

Имена таблиц отличаются, содержимое, насколько я помню, нет.

Автор: Gate001 20.10.2009, 10:20

Обращаюсь к автору скрипта.
Как определяется, какой вопрос будет извлечен из базы и показан? У меня база на 143 тысячи вопросов, а тем не менее пользователи жалуются что вопросы повторяются.
Единственное в чем может быть проблема-я взял твою "родную" базу и слепил ее вручную с другой, найденной мной, базой. Поправил разделители и залил обратно.

Автор: LoGaN 3.11.2009, 19:15

помогите глюк пишет реальное количестао людей и рядом нереальное не пойму в чем проблема/???????????

Автор: TiGRpp 13.11.2009, 1:47

Привет.
Бот зарегистрировался, в чате игра идет. Переключаю на игру в личке бота, и нет такой лички...

Здесь справился. Поначалу не обратил внимания на пункт меня:"Присоединиться к игре"...big_smile.gif

Но вот что интересно, при попытке расширить базу вопросов путем копирования файла questions.txt из другого источника, скрипт ответов не видел. Расширить базу смог только копированием текста в существующий "родной" questions.txt.

Автор: profiles 4.2.2010, 23:19

Привет. помогите ламеру) не работает Trivia_Mod_v1.02.7z ( 203.96 килобайт ). содержимое архива кинул в scripts. бот не функционирует. PtokaX DC Hub 0.4.1.2, Виндовс XP SP3

Автор: RomanGTe 1.3.2010, 16:09

Ребят а кто настроил чтоб вызывать игру не через меню а через команду?
Например у нас на одном хабе вызывается словом Викторина, и выскакиевает один вапрос. я пытался сделать чтото подобное но ничего не получаеться. Если кто знает скажите пожалуйста

Автор: Nickolya 1.3.2010, 16:38

По аналогии с

Код
[TrivUserStart] = function(curUser)
    if tConf.allowuserstart == 1 then
        if Started then
            SendMsgToUser(curUser,"Ошибка: Викторина уже запущена.")
        else
            UserAutostop = tCfg.UserAutostop
            TriviaStart()
            SendMsgToPlayers("Игра Викторина была запущена! Запустил: "..curUser.sNick..". Игра будет автоматически остановлена, если на "..UserAutostop.." вопросов подряд не будет дан правильный ответ.")
        end
    else
        SendMsgToUser(curUser,"Извините, у Вас нет доступа к этой команде.")
    end
end
добавляем в ParseData некоторый код и получаем вот такую функцию, ее надо польностью заменить в скрипте:
Код
function ParseData(curUser,data)
    data = string.sub(data,1,string.len(data)-1)
    local _,_,sdata = string.find( data, "^%b<>%s(.*)$")
    local _,_,pre,cmd = string.find( data, "^%b<>%s*(%p)(%S+)")
    if (pre and cmd) and pre == CPrefix then
        cmd = string.lower(cmd)
        if tProfiles[curUser.iProfile] == 1 and tFuncCmd[cmd] then
            tFuncCmd[cmd](curUser,data)
            return true
        end
        if tProfilesConfig[curUser.iProfile] == 1 and tFuncConfig[cmd] then
            tFuncConfig[cmd](curUser,data)
            return true
        end
        if tProfilesConfigPlus[curUser.iProfile] == 1 and tFuncConfigPlus[cmd] then
            tFuncConfigPlus[cmd](curUser,data)
            return true
        end
    elseif sdata then
        if sdata == "Викторина" or sdata == "викторина" then
            if tConf.allowuserstart == 1 then
                if Started then
                    SendMsgToUser(curUser,"Ошибка: Викторина уже запущена.")
                else
                    UserAutostop = tCfg.UserAutostop
                    TriviaStart()
                    SendMsgToPlayers("Игра Викторина была запущена! Запустил: "..curUser.sNick..". Игра будет автоматически остановлена, если на "..UserAutostop.." вопросов подряд не будет дан правильный ответ.")
                end
            else
                SendMsgToUser(curUser,"Извините, у Вас нет доступа к этой команде.")
            end
        end
        local corrans = nil
        for _,v in ipairs(TrivData.Answers) do
            if string.lower(sdata) == string.lower(v) then
                corrans = v
            end
        end
        if corrans and (not TrivData.GetQuestion) then
            TrivData.GetQuestion = true
            local ansTime = string.format("%.2f",(os.clock()-TrivData.Start)) -- Get Answering Time in sec.
            local talked = nil
            if string.lower(sdata) == string.lower(corrans) then
                talked = corrans
            end
            if talked then
                if tConf.mode ~= "pm" then
                    if tCfg.maintoall then
                        Core.SendToAll("<"..curUser.sNick.."> "..corrans)
                    else
                        SendMsgToPlayers(corrans,curUser)
                    end
                end
                local tmpstring = ""
                if (tCfg.showcorrectanswer == 1) then
                    tmpstring = " Время: "..ansTime.." секунд(ы)."
                end
                SendMsgToPlayers("На этот вопрос правильно ответил: "..curUser.sNick..", Ответ был: \""..corrans.."\". Очки: "..TrivData.Points.."."..tmpstring)
                if _Scores[curUser.sNick] then
                    _Scores[curUser.sNick].Score = _Scores[curUser.sNick].Score + TrivData.Points
                    _Scores[curUser.sNick].AvTime[1] = _Scores[curUser.sNick].AvTime[1] + ansTime
                    _Scores[curUser.sNick].AvTime[2] = _Scores[curUser.sNick].AvTime[2] + 1
                    _Scores[curUser.sNick].AvTime[3] = tonumber(string.format("%.2f",_Scores[curUser.sNick].AvTime[1]/_Scores[curUser.sNick].AvTime[2]))
                else
                    _Scores[curUser.sNick] = {}
                    _Scores[curUser.sNick].Score = TrivData.Points
                    _Scores[curUser.sNick].Streak = 1
                    _Scores[curUser.sNick].AvTime = { tonumber(ansTime),1,tonumber(ansTime) }
                end
                if (tCfg.showcorrectanswer == 1) then
                    SendMsgToPlayers(curUser.sNick..": Всего очков: ".._Scores[curUser.sNick].Score..", Правильных ответов: ".._Scores[curUser.sNick].AvTime[2]..", Среднее время на ответ: "..string.format("%.2f",_Scores[curUser.sNick].AvTime[3]).." секунд(ы).")
                end
                if TrivData.Availans > 1 then
                    ShowAnswer()
                end
                UpdateStreak(curUser)
                if not CheckAutostop() then
                    ResetMainTimer()
                end
                return true
            end
        end
    end
end
тут кусок
Код
        if sdata == "Викторина" or sdata == "викторина" then
            if tConf.allowuserstart == 1 then
                if Started then
                    SendMsgToUser(curUser,"Ошибка: Викторина уже запущена.")
                else
                    UserAutostop = tCfg.UserAutostop
                    TriviaStart()
                    SendMsgToPlayers("Игра Викторина была запущена! Запустил: "..curUser.sNick..". Игра будет автоматически остановлена, если на "..UserAutostop.." вопросов подряд не будет дан правильный ответ.")
                end
            else
                SendMsgToUser(curUser,"Извините, у Вас нет доступа к этой команде.")
            end
        end
отвечает за команду в чате, меняйте сами как хотите

Автор: RomanGTe 1.3.2010, 17:05

Нашел этот текст в папке D:\0.4.1.1\scripts\TriviaMod\Functions в файле Commands
Заменил на второй код. И почему то выдаёт ошибку [17:02] Синтаксис scripts/TriviaMod/Functions/Commands.lu:8: '(' expected near 'ParseData'

когда пишеш в чате викторина выдаёт [17:03] Синтаксис D:\0.4.1.1\scripts\TriviaMod.lua:122: attempt to index global 'TrivData' (a nil value)

Автор: Nickolya 1.3.2010, 17:10

В моем посте 3 блока кода. Первый для примера, его трогать не надо! Второй блок - функция полностью, которую и надо польностью заменить в основном файле скрипта. Третий же блок показывает изменения в функции по отношении к ее старому варианту. Если все сделать правильно ошибок быть не должно. И читайте внимательней что написано, пожалуйста big_smile.gif

Автор: RomanGTe 1.3.2010, 17:32

Всё сделал!
огромное тебе спасибо!

только теперь другая проблема.
Когда пишеш викторина то ты просто её запускаеш, чтоб был вывод информации типо кто запустил и сам вопрос надо присоедениться к игре.
Надо в код дописать чтоб он ещё проверял юзера на то подключен он или нет, если нет то подключал.
Сделайте пожалуйста

По аналогии которую вы выложили выше я сделал просто скопировал кусок кода в ваш код, и всё заработало)))

Спасибо огромное

Автор: RomanGTe 2.3.2010, 17:44

Вот так выглядит у меня конечный код

CODE
function ParseData(curUser,data)
data = string.sub(data,1,string.len(data)-1)
local _,_,sdata = string.find( data, "^%b<>%s(.*)$")
local _,_,pre,cmd = string.find( data, "^%b<>%s*(%p)(%S+)")
if (pre and cmd) and pre == CPrefix then
cmd = string.lower(cmd)
if tProfiles[curUser.iProfile] == 1 and tFuncCmd[cmd] then
tFuncCmd[cmd](curUser,data)
return true
end
if tProfilesConfig[curUser.iProfile] == 1 and tFuncConfig[cmd] then
tFuncConfig[cmd](curUser,data)
return true
end
if tProfilesConfigPlus[curUser.iProfile] == 1 and tFuncConfigPlus[cmd] then
tFuncConfigPlus[cmd](curUser,data)
return true
end
elseif sdata then
if sdata == "Викторина" or sdata == "викторина" then
if (tConf.mode == "main") and tCfg.maintoall then
SendMsgToUser(curUser,"Викторина проводится в главном чате, авторизация не требуется.")
else
if not _Players[curUser.sNick] then
_Players[curUser.sNick] = 1
SendMsgToPlayers("\""..curUser.sNick.."\" присоединился к игре.")
else
SendMsgToUser(curUser,"Ты уже играешь!")
end
end
if tConf.allowuserstart == 1 then
if Started then
SendMsgToUser(curUser,"Ошибка: Викторина уже запущена.")
else
UserAutostop = tCfg.UserAutostop
TriviaStart()
SendMsgToPlayers("Игра Викторина была запущена! Запустил: "..curUser.sNick..". Игра будет автоматически остановлена, если на "..UserAutostop.." вопросов подряд не будет дан правильный ответ.")
end
else
SendMsgToUser(curUser,"Извините, у Вас нет доступа к этой команде.")
end
end
local corrans = nil
for _,v in ipairs(TrivData.Answers) do
if string.lower(sdata) == string.lower(v) then
corrans = v
end
end
if corrans and (not TrivData.GetQuestion) then
TrivData.GetQuestion = true
local ansTime = string.format("%.2f",(os.clock()-TrivData.Start)) -- Get Answering Time in sec.
local talked = nil
if string.lower(sdata) == string.lower(corrans) then
talked = corrans
end
if talked then
if tConf.mode ~= "pm" then
if tCfg.maintoall then
Core.SendToAll("<"..curUser.sNick.."> "..corrans)
else
SendMsgToPlayers(corrans,curUser)
end
end
local tmpstring = ""
if (tCfg.showcorrectanswer == 1) then
tmpstring = " Время: "..ansTime.." секунд(ы)."
end
SendMsgToPlayers("На этот вопрос правильно ответил: "..curUser.sNick..", Ответ был: \""..corrans.."\". Очки: "..TrivData.Points.."."..tmpstring)
if _Scores[curUser.sNick] then
_Scores[curUser.sNick].Score = _Scores[curUser.sNick].Score + TrivData.Points
_Scores[curUser.sNick].AvTime[1] = _Scores[curUser.sNick].AvTime[1] + ansTime
_Scores[curUser.sNick].AvTime[2] = _Scores[curUser.sNick].AvTime[2] + 1
_Scores[curUser.sNick].AvTime[3] = tonumber(string.format("%.2f",_Scores[curUser.sNick].AvTime[1]/_Scores[curUser.sNick].AvTime[2]))
else
_Scores[curUser.sNick] = {}
_Scores[curUser.sNick].Score = TrivData.Points
_Scores[curUser.sNick].Streak = 1
_Scores[curUser.sNick].AvTime = { tonumber(ansTime),1,tonumber(ansTime) }
end
if (tCfg.showcorrectanswer == 1) then
SendMsgToPlayers(curUser.sNick..": Всего очков: ".._Scores[curUser.sNick].Score..", Правильных ответов: ".._Scores[curUser.sNick].AvTime[2]..", Среднее время на ответ: "..string.format("%.2f",_Scores[curUser.sNick].AvTime[3]).." секунд(ы).")
end
if TrivData.Availans > 1 then
ShowAnswer()
end
UpdateStreak(curUser)
if not CheckAutostop() then
ResetMainTimer()
end
return true
end
end
end
end

Автор: TiGRpp 2.3.2010, 18:43

Цитата(RomanGTe @ 2.3.2010, 18:44) *
Вот так выглядит у меня конечный код

CODE

...
tFuncConfigPlus[cmd](curUser,data)
return true
end
elseif sdata then
if sdata == "Викторина" or sdata == "викторина" then
if (tConf.mode == "main") and tCfg.maintoall thenser.iProfile] == 1 and tFuncConfigPlus[cmd] then
...

В выделенном так и должно быть - elseif?

При копировании код вообще искажается.
Можете прикрепить эту часть скрипта как-то по другому?

Автор: Nickolya 2.3.2010, 22:45

Ты замени функцию и узнаешь, код может быть отформатирован как угодно, это мы вас балуем более-менее понятными структурами big_smile.gif По-моему код что выложен правильный, не хватает просто кое-где табуляторов, тот кто знает блоки выполняемого кода легко приведет код к красивому виду.

Автор: TiGRpp 3.3.2010, 11:45

Цитата(Nickolya @ 2.3.2010, 23:45) *
Ты замени функцию и узнаешь, код может быть отформатирован как угодно,

Да я не капризничаю...
Код
[11:28] Синтаксис D:\Установочные программы\favorite-hub\scripts\TriviaMod.lua:122: 'then' expected near 'thenif'

А еще в конце у меня копировалось - endend, потому и подумалось что код искажается у меня от неудачного положения на странице форума.

С другой стороны Ваш, Nickolya, код от 1.3.2010 работает.
Вот в чем тогда разница? Какие существенные отличия внес автор, написав:
Цитата
Вот так выглядит у меня конечный код


Nickolya, у меня Викторина запускается в личке бота, таким образом после подачи команды "Викторина" она запустилась, но не достает сообщения в чате об этом событии.
Спасибо...big_smile.gif

Автор: Kingston 6.3.2010, 3:53

Цитата
============================================================
> Очки: 3 - Варианты ответов: 1
Вопрос: Aкaдeмик, ocнoвoпoлoжник pyccкoй зooтexники
Подсказка: К*л*ш*в
============================================================
[10:33:56] <Ник> кулешов
[10:34:04] <PtokaX> Правильный ответ: "Кулешов".

Не воспринимает ответы регистра отличного от того что в файле beat_plaster.gif В скрипте все наместе, в тех о чем говорил Trans также есть функции, но мне эта версия понравилась больше. Хотелось бы решить проблему, игра в общем ведется, все играют.

Автор: Nickolya 6.3.2010, 14:11

Цитата(Kingston @ 6.3.2010, 3:53) *
Не воспринимает ответы регистра отличного от того что в файле beat_plaster.gif

В конец скрипта добавляй функцию
Код
string.String2Lower = function(s)
  for i = 192, 223 do
    s = s:gsub(_G.string.char(i), _G.string.char(i + 32))
  end
  s = s:gsub(_G.string.char(168), _G.string.char(184))
  return s:lower()
end

И в скрипте замени все
Код
string.lower
на
Код
string.String2Lower

Автор: Setuper 6.3.2010, 14:50

Или просто в функции OnStartup написать

Код
os.setlocale"Russian_Russia.1251"

Автор: Nickolya 6.3.2010, 15:27

Можно и так, спасибо за наводки big_smile.gif Кстати, где эти локалии смотреть и как определять?

Автор: Setuper 6.3.2010, 15:33

Это стандартная локаль для русского языка в кодировке cp1251.
Локали для других языков мира можно нарыть в интернете, однако не думаю, что нам они пригодятся big_smile.gif

Кто не верит, что это работает. Может попробовать в птохе простейший скрипт:

Код
os.setlocale"Russian_Russia.1251"
local str = "ПРИВЕТ"
Core.SendToAll(str:lower())

big_smile.gif

Автор: steppnov 7.3.2010, 20:39

still_dreaming.gif как зделать чтобы викторина отключалсь сама 00:00 а в 8:00 включалась сама ??
так как у меня она работает в авто режиме так интереснее )))
подскажите пжлтооооо embarrassed.gif

Автор: steppnov 9.3.2010, 0:05

ну так что подскажите ????? или как((

Автор: Nickolya 9.3.2010, 12:10

Добавь вот такой скрипт, только не забудь настроить как надо. Банально, но тебе думаю подойдет big_smile.gif

 TrivaNightManager.lua ( 978 байт ) : 22
 

Автор: steppnov 9.3.2010, 12:35

спс большое всё гениальное просто))))
а как там сделать чтобы выходило сообщение ? при отключении например "Игра была автоматически отключена в 00:00 Игра будет продолжена в 8:00"
было бы вообще шикарно ))))

Автор: Nickolya 9.3.2010, 12:54

Перезалил в пост выше версию с сообщением. Ты попробовал, сам скрипт работает?

Автор: steppnov 9.3.2010, 13:23

да всё работает ещё раз спс
в посте выше нет перезалитого файла он идентичный
без сообщения вообщем

Автор: Nickolya 9.3.2010, 13:53

Сорри, перезалил еще раз, теперь точно новый вариант.

Автор: steppnov 9.3.2010, 14:02

still_dreaming.gif

Автор: Pulse 13.3.2010, 21:29

поделитесь базой вопросов. )

Автор: Arthurec 15.3.2010, 1:16

а можно ли какой то командой отключить викторину?

Автор: Pulse 15.3.2010, 2:11

Управление - Выключить
или команда в чат: !trivstop

доступность команд определенному профилю - в настройках скрипта: \TriviaMod\settings.lu


Автор: solider 28.3.2010, 16:10

os.setlocale"Russian_Russia.1251"

вот скрипт на лине. там тоже написано. но все равно есть чувствительность к регистру.

Автор: Lucifier 28.3.2010, 19:13

новой базы вопросов нет???

Автор: as91 26.4.2010, 19:35

Добрый день, у меня следущая проблема - если отрубят свет, то вика стирает свою бд, начинает новую поверх этой. У меня уже вротой раз обнуляется топ вики. Юзеры не в восторге. Можно ли как ниб профиксить?

Автор: Nickolya 28.4.2010, 9:55

Попробуй после

Код
function MainTimer()
добавить
Код
OnExit()
и воссоздать условия обнуления топа, если топ не обнулится - тебе повезло, однако данное действие создаст дополнительную нагрузку на хаб с периодичностью в примерно 14 секунд...

Автор: Слава 9.5.2010, 2:23

Если сделать повторно команду !trivlogout то бота выкидывает с хаба вот с такой ошибкой: Синтаксис C:\Program Files\PtokaX\scripts\TriviaMod.lua:270: attempt to concatenate local 'data' (a nil value)
В чём может быть проблема?

Автор: Nickolya 10.5.2010, 13:27

По всей видимости косяк в файле Commands.lu из папки TriviaMod/Functions/

Замени 43 сстроку

Код
            SendMsgToUser(curUser,mode,"Чтобы покинуть игру, сначала нужно в нее зайти.")
на
Код
            SendMsgToUser(curUser,"Чтобы покинуть игру, сначала нужно в нее зайти.")

Автор: Слава 10.5.2010, 14:15

Спасибо, помогло!

Автор: TommyKaira 12.5.2010, 16:50

[17:47:06] <-Всезнайка-> Вопрос № 6627 из 9671.
----------------------------------------------------------------------
> Очки: 4 - Варианты ответов: 1
Вопрос: приспособление, устройство для спортивных упражнений.
Подсказка: с^а^^^
----------------------------------------------------------------------
[17:47:11] <p!nk> снаряд
[17:47:20] <-Всезнайка-> Вопрос № 6627 из 9671.
----------------------------------------------------------------------
> Очки: 2 - Варианты ответов: 1
Вопрос: приспособление, устройство для спортивных упражнений.
Подсказка: с^ар^д
----------------------------------------------------------------------
[17:47:34] <-Всезнайка-> Правильный ответ: "снаряд".

как лечить?

Автор: Nickolya 12.5.2010, 16:58

Скорее всего двиганием скрипта вверх или, на крайний случай, отключением скриптов блокирующий отсылку сообщений, типа лонли.

Автор: TommyKaira 12.5.2010, 17:19

Хм..скриптов блокирующих нет..даже все настройки флуда отключены на хабе
Помогло то что пихнул его вверх) спасибо!
а какая разница где ему стоять?

Автор: Nickolya 12.5.2010, 18:53

Разница в том что скрипт раньше получает запрос на обработку команды, и если он блокирует отправку команды, то все скрипты ниже такого запроса не получают. Следовательно скрипт "не работает".

Автор: TiGRpp 12.5.2010, 20:08

Цитата(TommyKaira @ 12.5.2010, 17:50) *
...
----------------------------------------------------------------------
[17:47:34] <-Всезнайка-> Правильный ответ: "снаряд".

как лечить?

Была аналогичная проблема, когда я перед запуском скрипта заменил базу вопросов...файл с базой должен оставаться оригинальным: все добавления производить в него...big_smile.gif

Автор: alex82 12.5.2010, 23:42

Прекрасно меняется. Главное - редактировать новую базу адекватным текстовым редактором (виндовый Блокнот таковым не является).

Автор: Damaks 31.1.2011, 14:03

alex82
Ты слегка намутил с сортировкой в раздельных топах (все, кроме очков). Странно, что никто не заметил. Подправил (пришлось в архив запихать, не разрешает заливать .lu):

 Commands.lu.rar ( 2.5 килобайт ) : 12

Автор: sexynapku 4.2.2011, 19:18

Цитата
[22:14:39] <Палата> Вопрос № 230012 из 243012.
----------------------------------------------------------------------
> Очки: 4 - Варианты ответов: 1
Вопрос: ...-самогуды (сказочный инструмент, не нуждающийся в исполнителе)?
Подсказка: г••••
----------------------------------------------------------------------

как сделать чтобы при вопросе первая буква (каторая открываеться) не обезательно была первой в начеле слова???

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

можно же сделать подскажите

еще посмотрите пожайлуста этот же мод

 TriviaMod.rar ( 4 мегабайт ) : 8
 

Автор: Damaks 4.2.2011, 19:46

Цитата(sexynapku @ 4.2.2011, 20:18) *
как сделать чтобы при вопросе первая буква (каторая открываеться) не обезательно была первой в начеле слова???


В файле settings.lu исправить по-моему 28 строку:

Цитата
tCfg.revealques = 1 -- 1 = показывать буквы-подсказки случайным образом, 2 = обязательно показывать первую букву

Автор: Apollon91 26.11.2011, 13:11

Всем привет, я новичок в плане всего этого, на днях открыл хаб, вот теперь хочу его так сказать доделать как положено, я скачал файл Trivia_Mod_v1.02.rar, но у меня не получатся запустить Викторину, пишет вот что: file or directory

[14:13] Синтаксис cannot open D:/xab-dc/0.4.1.2/scripts/TriviaMod/settings.lu: No such file or directory

кто знает в чем может быть проблема, версия Птохи у меня 0.4.1.2

жду ответа плиз.

Автор: Saymon21 26.11.2011, 15:07

D:/xab-dc/0.4.1.2/scripts/TriviaMod/settings.lu - Нет такого файла

Автор: Apollon91 26.11.2011, 16:37

Цитата(Saymon21 @ 26.11.2011, 17:07) *
D:/xab-dc/0.4.1.2/scripts/TriviaMod/settings.lu - Нет такого файла


так нету файла а из за чего он так пишет? ведь скрипт я загрузил, но галочка на данный файл Lua не ставиться в Птохе, почему так?

Автор: Артём 26.11.2011, 17:01

Apollon91, папку Trivia Mod не забыл закинуть в папку scripts?

Автор: Alexey 26.11.2011, 17:15

Цитата(Apollon91 @ 26.11.2011, 17:37) *
так нету файла а из за чего он так пишет?

Из-за того и пишет.

Цитата(Apollon91 @ 26.11.2011, 17:37) *
ведь скрипт я загрузил, но галочка на данный файл Lua не ставиться в Птохе, почему так?

Потому-что этот файл является частью скрипта.

Автор: Apollon91 28.11.2011, 7:25

Цитата(Артём @ 26.11.2011, 19:01) *
Apollon91, папку Trivia Mod не забыл закинуть в папку scripts?


нет не забыл и туда ставил также все равно, я проверил скрипт на ошибки, вроде там есть ошибка в скрипте, это выходит при проверке скрипта:

Синтаксис [string "--[[#######################################..."]:11: attempt to index a nil value я не знаю точно в этом я слаб еще, кто знает отпишитесь, это ошибка ведь в скрипте?

Автор: Артём 28.11.2011, 11:06

Цитата(Apollon91 @ 28.11.2011, 7:25) *
...я проверил скрипт на ошибки, вроде там есть ошибка в скрипте...

Цитата
[09:12] TriviaMod.lua загружен.
[09:12] В скрипте нет синтаксических ошибок

ну и?
Скрипт рабочий!!!
Удачных попыток bad_smile.gif

Автор: Apollon91 29.11.2011, 10:17

Цитата(Артём @ 28.11.2011, 13:06) *
ну и?
Скрипт рабочий!!!
Удачный попыток bad_smile.gif



нет, не ставиться галочка на скрипт в Птохе, не работает он

Автор: Артём 29.11.2011, 10:58

Apollon91, если у тебя не ставится, не значит что он не рабочий, а значит что руки немного не так работают victory.gif

Автор: Apollon91 29.11.2011, 13:35

Цитата(Артём @ 29.11.2011, 12:58) *
Apollon91, если у тебя не ставится, не значит что он не рабочий, а значит что руки немного не так работают victory.gif



причем тут руки вообще, что за тупая аналогия, не работает скрипт я все перепробовал, и от рук уже тут ничего не зависит.

Автор: Mishari 5.3.2013, 15:51

а для пятой версии есть викторина?

Автор: Артём 5.3.2013, 21:50

Mishari, а кто сказал что она не работает на 5 птоке?

Автор: Mishari 6.3.2013, 12:21

Спасибо Автору , работает отлично)

Автор: Mishari 8.3.2013, 20:30

Вы не могли бы подсказать пожалуйста как через меню викторины правильно добавить вопрос ? когда я пробую добавить вопрос мне в чате хаба выходит вот это "Не правильно задан вопрос" вы не могли бы мне помочь пожалуйста

Автор: dimetro 3.1.2015, 19:57

При игре в приват бота , когда вступаешь в игру, у кого на лс пароль,то не приходит от бота сообщение.. как то можно поправить?

Автор: serxxx 10.9.2015, 4:10

Скрипт запускается, в чате пишет что викторина запущена и потом тишина. В логах идут ошибки
[7:09:13] Синтаксис C:\0.5.2.1-Lua53\scripts\TriviaMod.lua:175: attempt to call a nil value (field 'getn')
stack traceback:
C:\0.5.2.1-Lua53\scripts\TriviaMod.lua:175: in function 'MainTimer'

Эта функция

Цитата
function MainTimer()
if (table.getn(_Questions) == 0) then
LoadQuestions()
end
if GetQuestion() then
SendQuestion()
TrivData.Unanswered = TrivData.Unanswered + 1
else
UpdHint()
if TrivData.GetQuestion then
ShowAnswer()
StopStreak()
CheckAutostop()
else
if (tCfg.QuestionMode == 1) then
SendHint()
else
SendQuestion()
end
end
end
end

Версия птоки 0.5.2.1

Автор: alex82 11.9.2015, 21:26

serxxx, убрал рудименты, оставшиеся от Lua 5.0. Теперь скрипт должен корректно работать под Lua 5.3.
http://mydc.ru/r/?http://files.etherway.ru/GITX44STHZJ5Y0RDBWKL

Когда на форуме заработают вложения, добавлю в первый пост.

Автор: serxxx 16.9.2015, 13:06

alex82, Спасибо вам! Отлично работает!!!

Автор: random 2.11.2015, 4:06

Цитата(alex82 @ 12.9.2015, 4:26) *
serxxx, убрал рудименты, оставшиеся от Lua 5.0. Теперь скрипт должен корректно работать под Lua 5.3.
http://mydc.ru/r/?http://files.etherway.ru/GITX44STHZJ5Y0RDBWKL

Когда на форуме заработают вложения, добавлю в первый пост.

alex82, по данной ссылке нет возможности скачать - "Запрашиваемые файлы не существует, или они былы удалены раннее. "
скиньте, пожалуйста, ещё раз

Автор: SCALOlaz 15.1.2019, 13:02

Заради баловства, от скуки и трезвости, решил поюзать вот этот вот скрипт. Заодно немного подправил кое-где. Потом вернулся сюда, ДОЧИТАЛ ветку и понял что не заметил несколько ощутимых багов, с 2015 года alex82 так и не обновил первый пост.
Поделюсь версией. Основано на модификации 1.02а из первого поста для луашечки 5.3

Что было впилено/выпилено/исправлено. Адовая копипаста из основного файла.

TriviaMod v1.04
---
10.01.2019:
+ добавлены ранги для таблицы счёта ( доп.писькомерие ). Меню показа списка возможных званий. Звания засунуты везде где нужно.
+ tbl файлы переименованы в dat
+ исправлены грамматические ошибки в некоторых текстах ( что было замечено по пути )
+ событие Егога, сообщение дебажному админу о Егоге.
+ вкл/выкл отображения кол-ва юзеров в поле "Шара" боту, так-же параметров времени игры, перекура и между подсказками в параметры H: x/x/x и S: в MyINFO
Эта самая MyINFO по таймеру выводится раз в tCfg.BotInfoTime минут/у/ы, при условии наличия изменений: кто-то покинул игру в ЛС, или присоединился.
+ Вроде ещё что-то по мелочам, но не упомню...

+ ага, упомнил: добавлены разделители в Меню Хаба и обозначены ::имя:: менюшки Админа. Ну это не "ацкая свистоперделка", мог бы и не вспоминать big_smile.gif

---

15.01.2019:
+ в ЛС бота, а следовательно и в игру мог писать любой elmaars1 и ему подобные "гении", даже не "логинившись" в игре. Теперь так может делать только профиль,
разрешённый в Доп.Таблице tProfilesConfigPlus. Например для подачи объявления в Игру.
! и тут я дочитал ветку в форуме mydc.ru...
- убраны ошибки сортировки ТОП-ов, убрана ошибка при повторной попытке разлогиниться из игры

Архив с файлом конфигурации (в папке Data):  TriviaMod_1.04.rar ( 220.19 килобайт ) : 23


ЗЫ: авторские копипасты и комментарии ото всех авторствующих в коде оставлены для будущих поколений, сиё изложение призвано токма лишь приподнять ветку из тьмы.
ЗЫ2: писанина писана для действующего хаба.