|
Здравствуйте, гость ( Вход | Регистрация )
|
![]()
Сообщение
#81
|
|
![]() Местный ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз ![]() |
Название скрипта: Trivia Mod
Версия: 1.02 Версия API: API2 Автор: alex82 Информация: Скрипт создан на основе Викторины 1.6 (by NRJ), которая в свою очередь основывается на скрипте Trivia (by chill). ![]() * Перевод на API2 * Оптимизация и уплотнение кода * Некоторые изменения функционала: - Запоминание последнего состояния игры - Юзеры могут самостоятельно включать Викторину (отдельные настройки автоотключения) ![]() ![]() Версия, поддерживающая Lua 5.3: ![]() PS. Убедительная просьба сообщать о найденных ошибках. |
|
|
![]() |
![]()
Сообщение
#82
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Пользователи Сообщений: 52 Регистрация: 10.10.2009 Пользователь №: 4 687 Спасибо сказали: 3 раза ![]() |
Большая просьба-подскажите, как можно в подсказке выводить число букв? Не только звездочки, решеточки и прочее, но и число букв?
UPD: простите, уже сам нашел. Если кому надо будет: поставить переменные в конфиге Код Tcfg.showquestion = 3 Tcfg.Questionmode = 1 UPD2: Понимает только ответы, написанные в строчном регистре... Можно ли сделать так, чтобы понимала и первую заглавную букву, или вообще было нечувствительно к регистру? |
|
|
![]()
Сообщение
#83
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Пользователи Сообщений: 76 Регистрация: 6.12.2008 Из: Украина Пользователь №: 1 340 Спасибо сказали: 1 раз ![]() |
Цитата UPD2: Понимает только ответы, написанные в строчном регистре... Можно ли сделать так, чтобы понимала и первую заглавную букву, или вообще было нечувствительно к регистру? Присоединяюсь. |
|
|
![]()
Сообщение
#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 |
|
|
![]()
Сообщение
#85
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Пользователи Сообщений: 76 Регистрация: 6.12.2008 Из: Украина Пользователь №: 1 340 Спасибо сказали: 1 раз ![]() |
Trans, на каком скрипте произведены твои изменения? Если сейчас у меня стоит Trivia Mod (с первой страницы), я поставлю твой - он скушает таблицы очков?
|
|
|
![]()
Сообщение
#86
|
|
![]() Белый Волк ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз ![]() |
Не знаю. Проверь в тестовом режиме - одинаковое ли содержание таблиц. Если да, и если названия одинаковые (если не одинаковы, то переименовать), то можно, наверно.
|
|
|
![]()
Сообщение
#87
|
|
![]() Местный ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз ![]() |
Имена таблиц отличаются, содержимое, насколько я помню, нет.
|
|
|
![]()
Сообщение
#88
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Пользователи Сообщений: 52 Регистрация: 10.10.2009 Пользователь №: 4 687 Спасибо сказали: 3 раза ![]() |
Обращаюсь к автору скрипта.
Как определяется, какой вопрос будет извлечен из базы и показан? У меня база на 143 тысячи вопросов, а тем не менее пользователи жалуются что вопросы повторяются. Единственное в чем может быть проблема-я взял твою "родную" базу и слепил ее вручную с другой, найденной мной, базой. Поправил разделители и залил обратно. |
|
|
![]()
Сообщение
#89
|
|
![]() Абсолютный новичок Группа: Пользователи Сообщений: 5 Регистрация: 6.11.2008 Пользователь №: 1 008 Спасибо сказали: 0 раз ![]() |
помогите глюк пишет реальное количестао людей и рядом нереальное не пойму в чем проблема/???????????
|
|
|
![]()
Сообщение
#90
|
|
![]() Продвинутый участник ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 162 Регистрация: 19.8.2009 Из: Москва Пользователь №: 4 201 Спасибо сказали: 24 раза ![]() |
Привет.
Бот зарегистрировался, в чате игра идет. Переключаю на игру в личке бота, и нет такой лички... Здесь справился. Поначалу не обратил внимания на пункт меня:"Присоединиться к игре"... ![]() Но вот что интересно, при попытке расширить базу вопросов путем копирования файла questions.txt из другого источника, скрипт ответов не видел. Расширить базу смог только копированием текста в существующий "родной" questions.txt. |
|
|
![]()
Сообщение
#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
|
|
|
![]()
Сообщение
#92
|
|
![]() Начинающий ![]() Группа: Пользователи Сообщений: 13 Регистрация: 27.2.2009 Пользователь №: 2 396 Спасибо сказали: 1 раз ![]() |
Ребят а кто настроил чтоб вызывать игру не через меню а через команду?
Например у нас на одном хабе вызывается словом Викторина, и выскакиевает один вапрос. я пытался сделать чтото подобное но ничего не получаеться. Если кто знает скажите пожалуйста |
|
|
![]()
Сообщение
#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 |
|
|
![]()
Сообщение
#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) |
|
|
![]()
Сообщение
#95
|
|
![]() Главный ра******й тут... ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Главные администраторы Сообщений: 1 727 Регистрация: 18.5.2008 Из: RF, 2la Пользователь №: 1 Спасибо сказали: 776 раз ![]() |
В моем посте 3 блока кода. Первый для примера, его трогать не надо! Второй блок - функция полностью, которую и надо польностью заменить в основном файле скрипта. Третий же блок показывает изменения в функции по отношении к ее старому варианту. Если все сделать правильно ошибок быть не должно. И читайте внимательней что написано, пожалуйста
![]() |
|
|
![]()
Сообщение
#96
|
|
![]() Начинающий ![]() Группа: Пользователи Сообщений: 13 Регистрация: 27.2.2009 Пользователь №: 2 396 Спасибо сказали: 1 раз ![]() |
Всё сделал!
огромное тебе спасибо! только теперь другая проблема. Когда пишеш викторина то ты просто её запускаеш, чтоб был вывод информации типо кто запустил и сам вопрос надо присоедениться к игре. Надо в код дописать чтоб он ещё проверял юзера на то подключен он или нет, если нет то подключал. Сделайте пожалуйста По аналогии которую вы выложили выше я сделал просто скопировал кусок кода в ваш код, и всё заработало))) Спасибо огромное |
|
|
![]()
Сообщение
#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 |
|
|
![]()
Сообщение
#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? При копировании код вообще искажается. Можете прикрепить эту часть скрипта как-то по другому? |
|
|
![]()
Сообщение
#99
|
|
![]() Главный ра******й тут... ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Главные администраторы Сообщений: 1 727 Регистрация: 18.5.2008 Из: RF, 2la Пользователь №: 1 Спасибо сказали: 776 раз ![]() |
Ты замени функцию и узнаешь, код может быть отформатирован как угодно, это мы вас балуем более-менее понятными структурами
![]() |
|
|
![]()
Сообщение
#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, у меня Викторина запускается в личке бота, таким образом после подачи команды "Викторина" она запустилась, но не достает сообщения в чате об этом событии. Спасибо... ![]() |
|
|
![]()
Сообщение
#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> Правильный ответ: "Кулешов". Не воспринимает ответы регистра отличного от того что в файле ![]() |
|
|
![]() ![]() |
Похожие темы
Тема | Ответов | Автор | Просмотров | Последнее сообщение | |
---|---|---|---|---|---|
![]() |
От: Trivia От темы с ID: 3596 |
0 | qqqqqq | 3 976 | 2.1.2012, 16:59 Посл. сообщение: qqqqqq |
![]() |
![]() Викторина |
0 | Артём | 6 420 | 30.6.2010, 20:59 Посл. сообщение: Артём |
![]() |
От: Trivia Mod От темы с ID: 1377 |
0 | Ksan | 5 100 | 12.5.2010, 18:22 Посл. сообщение: Ksan |
![]() |
От: Trivia Mod От темы с ID: 1377 |
0 | TiGRpp | 5 488 | 15.11.2009, 8:20 Посл. сообщение: TiGRpp |
![]() |
От: Trivia Mod От темы с ID: 1377 |
0 | Wariner | 5 315 | 23.3.2009, 0:22 Посл. сообщение: Wariner |
![]() |
Сейчас: 17.2.2025, 8:25 |