Trivia Mod, API2 | Игра "Викторина" |
Здравствуйте, гость ( Вход | Регистрация )
Trivia Mod, API2 | Игра "Викторина" |
20.2.2009, 17:06
Сообщение
#81
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
Название скрипта: Trivia Mod
Версия: 1.02 Версия API: API2 Автор: alex82 Информация: Скрипт создан на основе Викторины 1.6 (by NRJ), которая в свою очередь основывается на скрипте Trivia (by chill). Изменения относительно оригинального скрипта: * Перевод на 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. Убедительная просьба сообщать о найденных ошибках. |
|
|
16.10.2009, 19:56
Сообщение
#82
|
|
Активный участник Группа: Пользователи Сообщений: 52 Регистрация: 10.10.2009 Пользователь №: 4 687 Спасибо сказали: 3 раза |
Большая просьба-подскажите, как можно в подсказке выводить число букв? Не только звездочки, решеточки и прочее, но и число букв?
UPD: простите, уже сам нашел. Если кому надо будет: поставить переменные в конфиге Код Tcfg.showquestion = 3 Tcfg.Questionmode = 1 UPD2: Понимает только ответы, написанные в строчном регистре... Можно ли сделать так, чтобы понимала и первую заглавную букву, или вообще было нечувствительно к регистру? |
|
|
16.10.2009, 22:29
Сообщение
#83
|
|
Активный участник Группа: Пользователи Сообщений: 76 Регистрация: 6.12.2008 Из: Украина Пользователь №: 1 340 Спасибо сказали: 1 раз |
Цитата UPD2: Понимает только ответы, написанные в строчном регистре... Можно ли сделать так, чтобы понимала и первую заглавную букву, или вообще было нечувствительно к регистру? Присоединяюсь. |
|
|
17.10.2009, 12:05
Сообщение
#84
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
В другой теме про Викторину есть моё сообщение ближе к концу, там я выкладывал Викторину с базой и с некоторыми новыми фишками. Там размер букв в ответах не имеет значения.
Вот тут описание я давал: http://mydc.ru/topic794.html?view=findpost&p=19128 А вот тут выложил файлы: http://mydc.ru/topic794.html?view=findpost&p=19274 |
|
|
17.10.2009, 14:49
Сообщение
#85
|
|
Активный участник Группа: Пользователи Сообщений: 76 Регистрация: 6.12.2008 Из: Украина Пользователь №: 1 340 Спасибо сказали: 1 раз |
Trans, на каком скрипте произведены твои изменения? Если сейчас у меня стоит Trivia Mod (с первой страницы), я поставлю твой - он скушает таблицы очков?
|
|
|
17.10.2009, 15:18
Сообщение
#86
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
Не знаю. Проверь в тестовом режиме - одинаковое ли содержание таблиц. Если да, и если названия одинаковые (если не одинаковы, то переименовать), то можно, наверно.
|
|
|
17.10.2009, 16:03
Сообщение
#87
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
Имена таблиц отличаются, содержимое, насколько я помню, нет.
|
|
|
20.10.2009, 10:20
Сообщение
#88
|
|
Активный участник Группа: Пользователи Сообщений: 52 Регистрация: 10.10.2009 Пользователь №: 4 687 Спасибо сказали: 3 раза |
Обращаюсь к автору скрипта.
Как определяется, какой вопрос будет извлечен из базы и показан? У меня база на 143 тысячи вопросов, а тем не менее пользователи жалуются что вопросы повторяются. Единственное в чем может быть проблема-я взял твою "родную" базу и слепил ее вручную с другой, найденной мной, базой. Поправил разделители и залил обратно. |
|
|
3.11.2009, 19:15
Сообщение
#89
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 5 Регистрация: 6.11.2008 Пользователь №: 1 008 Спасибо сказали: 0 раз |
помогите глюк пишет реальное количестао людей и рядом нереальное не пойму в чем проблема/???????????
|
|
|
13.11.2009, 1:47
Сообщение
#90
|
|
Продвинутый участник Группа: Пользователи Сообщений: 162 Регистрация: 19.8.2009 Из: Москва Пользователь №: 4 201 Спасибо сказали: 24 раза |
Привет.
Бот зарегистрировался, в чате игра идет. Переключаю на игру в личке бота, и нет такой лички... Здесь справился. Поначалу не обратил внимания на пункт меня:"Присоединиться к игре"... Но вот что интересно, при попытке расширить базу вопросов путем копирования файла questions.txt из другого источника, скрипт ответов не видел. Расширить базу смог только копированием текста в существующий "родной" questions.txt. |
|
|
4.2.2010, 23:19
Сообщение
#91
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 1 Регистрация: 4.2.2010 Из: РФ Пользователь №: 5 950 Спасибо сказали: 0 раз |
Привет. помогите ламеру) не работает Trivia_Mod_v1.02.7z ( 203.96 килобайт ). содержимое архива кинул в scripts. бот не функционирует. PtokaX DC Hub 0.4.1.2, Виндовс XP SP3
|
|
|
1.3.2010, 16:09
Сообщение
#92
|
|
Начинающий Группа: Пользователи Сообщений: 13 Регистрация: 27.2.2009 Пользователь №: 2 396 Спасибо сказали: 1 раз |
Ребят а кто настроил чтоб вызывать игру не через меню а через команду?
Например у нас на одном хабе вызывается словом Викторина, и выскакиевает один вапрос. я пытался сделать чтото подобное но ничего не получаеться. Если кто знает скажите пожалуйста |
|
|
1.3.2010, 16:38
Сообщение
#93
|
|
Главный ра******й тут... Группа: Главные администраторы Сообщений: 1 727 Регистрация: 18.5.2008 Из: RF, 2la Пользователь №: 1 Спасибо сказали: 776 раз |
По аналогии с
Код [TrivUserStart] = function(curUser) добавляем в ParseData некоторый код и получаем вот такую функцию, ее надо польностью заменить в скрипте: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 Код 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 |
|
|
1.3.2010, 17:05
Сообщение
#94
|
|
Начинающий Группа: Пользователи Сообщений: 13 Регистрация: 27.2.2009 Пользователь №: 2 396 Спасибо сказали: 1 раз |
Нашел этот текст в папке 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) |
|
|
1.3.2010, 17:10
Сообщение
#95
|
|
Главный ра******й тут... Группа: Главные администраторы Сообщений: 1 727 Регистрация: 18.5.2008 Из: RF, 2la Пользователь №: 1 Спасибо сказали: 776 раз |
В моем посте 3 блока кода. Первый для примера, его трогать не надо! Второй блок - функция полностью, которую и надо польностью заменить в основном файле скрипта. Третий же блок показывает изменения в функции по отношении к ее старому варианту. Если все сделать правильно ошибок быть не должно. И читайте внимательней что написано, пожалуйста
|
|
|
1.3.2010, 17:32
Сообщение
#96
|
|
Начинающий Группа: Пользователи Сообщений: 13 Регистрация: 27.2.2009 Пользователь №: 2 396 Спасибо сказали: 1 раз |
Всё сделал!
огромное тебе спасибо! только теперь другая проблема. Когда пишеш викторина то ты просто её запускаеш, чтоб был вывод информации типо кто запустил и сам вопрос надо присоедениться к игре. Надо в код дописать чтоб он ещё проверял юзера на то подключен он или нет, если нет то подключал. Сделайте пожалуйста По аналогии которую вы выложили выше я сделал просто скопировал кусок кода в ваш код, и всё заработало))) Спасибо огромное |
|
|
2.3.2010, 17:44
Сообщение
#97
|
|
Начинающий Группа: Пользователи Сообщений: 13 Регистрация: 27.2.2009 Пользователь №: 2 396 Спасибо сказали: 1 раз |
Вот так выглядит у меня конечный код
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 |
|
|
2.3.2010, 18:43
Сообщение
#98
|
|
Продвинутый участник Группа: Пользователи Сообщений: 162 Регистрация: 19.8.2009 Из: Москва Пользователь №: 4 201 Спасибо сказали: 24 раза |
Вот так выглядит у меня конечный код 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? При копировании код вообще искажается. Можете прикрепить эту часть скрипта как-то по другому? |
|
|
2.3.2010, 22:45
Сообщение
#99
|
|
Главный ра******й тут... Группа: Главные администраторы Сообщений: 1 727 Регистрация: 18.5.2008 Из: RF, 2la Пользователь №: 1 Спасибо сказали: 776 раз |
Ты замени функцию и узнаешь, код может быть отформатирован как угодно, это мы вас балуем более-менее понятными структурами По-моему код что выложен правильный, не хватает просто кое-где табуляторов, тот кто знает блоки выполняемого кода легко приведет код к красивому виду.
|
|
|
3.3.2010, 11:45
Сообщение
#100
|
|
Продвинутый участник Группа: Пользователи Сообщений: 162 Регистрация: 19.8.2009 Из: Москва Пользователь №: 4 201 Спасибо сказали: 24 раза |
Ты замени функцию и узнаешь, код может быть отформатирован как угодно, Да я не капризничаю... Код [11:28] Синтаксис D:\Установочные программы\favorite-hub\scripts\TriviaMod.lua:122: 'then' expected near 'thenif' А еще в конце у меня копировалось - endend, потому и подумалось что код искажается у меня от неудачного положения на странице форума. С другой стороны Ваш, Nickolya, код от 1.3.2010 работает. Вот в чем тогда разница? Какие существенные отличия внес автор, написав: Цитата Вот так выглядит у меня конечный код Nickolya, у меня Викторина запускается в личке бота, таким образом после подачи команды "Викторина" она запустилась, но не достает сообщения в чате об этом событии. Спасибо... |
|
|
6.3.2010, 3:53
Сообщение
#101
|
|
Активный участник Группа: Пользователи Сообщений: 85 Регистрация: 19.3.2009 Из: Россия, Хабаровский край, г.Комсомольск-на-Амуре Пользователь №: 2 652 Спасибо сказали: 39 раз |
Цитата ============================================================ > Очки: 3 - Варианты ответов: 1 Вопрос: Aкaдeмик, ocнoвoпoлoжник pyccкoй зooтexники Подсказка: К*л*ш*в ============================================================ [10:33:56] <Ник> кулешов [10:34:04] <PtokaX> Правильный ответ: "Кулешов". Не воспринимает ответы регистра отличного от того что в файле В скрипте все наместе, в тех о чем говорил Trans также есть функции, но мне эта версия понравилась больше. Хотелось бы решить проблему, игра в общем ведется, все играют. |
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последнее сообщение | |
---|---|---|---|---|---|
От: Trivia От темы с ID: 3596 |
0 | qqqqqq | 3 893 | 2.1.2012, 16:59 Посл. сообщение: qqqqqq | |
Trivia Викторина |
0 | Артём | 6 346 | 30.6.2010, 20:59 Посл. сообщение: Артём | |
От: Trivia Mod От темы с ID: 1377 |
0 | Ksan | 5 024 | 12.5.2010, 18:22 Посл. сообщение: Ksan | |
От: Trivia Mod От темы с ID: 1377 |
0 | TiGRpp | 5 411 | 15.11.2009, 8:20 Посл. сообщение: TiGRpp | |
От: Trivia Mod От темы с ID: 1377 |
0 | Wariner | 5 230 | 23.3.2009, 0:22 Посл. сообщение: Wariner |
|
Сейчас: 27.11.2024, 3:58 |