myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 

> Trivia Mod, API2 | Игра "Викторина"

Рейтинг 5 V
alex82
сообщение 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). 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. Убедительная просьба сообщать о найденных ошибках.
Go to the top of the page
+Quote Post
8 страниц V  « < 3 4 5 6 7 > »   
Начать новую тему
Ответов
Gate001
сообщение 16.10.2009, 19:56
Сообщение #82


Активный участник
***

Группа: Пользователи
Сообщений: 52
Регистрация: 10.10.2009
Пользователь №: 4 687
Спасибо сказали: 3 раза




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

UPD: простите, уже сам нашел. Если кому надо будет:
поставить переменные в конфиге
Код
Tcfg.showquestion = 3
Tcfg.Questionmode = 1


UPD2: Понимает только ответы, написанные в строчном регистре... Можно ли сделать так, чтобы понимала и первую заглавную букву, или вообще было нечувствительно к регистру?
Go to the top of the page
+Quote Post
truth
сообщение 16.10.2009, 22:29
Сообщение #83


Активный участник
***

Группа: Пользователи
Сообщений: 76
Регистрация: 6.12.2008
Из: Украина
Пользователь №: 1 340
Спасибо сказали: 1 раз




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

Присоединяюсь.
Go to the top of the page
+Quote Post
Ksan
сообщение 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
Go to the top of the page
+Quote Post
truth
сообщение 17.10.2009, 14:49
Сообщение #85


Активный участник
***

Группа: Пользователи
Сообщений: 76
Регистрация: 6.12.2008
Из: Украина
Пользователь №: 1 340
Спасибо сказали: 1 раз




Trans, на каком скрипте произведены твои изменения? Если сейчас у меня стоит Trivia Mod (с первой страницы), я поставлю твой - он скушает таблицы очков?
Go to the top of the page
+Quote Post
Ksan
сообщение 17.10.2009, 15:18
Сообщение #86


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




Не знаю. Проверь в тестовом режиме - одинаковое ли содержание таблиц. Если да, и если названия одинаковые (если не одинаковы, то переименовать), то можно, наверно.
Go to the top of the page
+Quote Post
alex82
сообщение 17.10.2009, 16:03
Сообщение #87


Местный
*******

Группа: Неактивированные
Сообщений: 908
Регистрация: 26.12.2008
Пользователь №: 1 574
Спасибо сказали: 1406 раз




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


Спасибо сказали:
Go to the top of the page
+Quote Post
Gate001
сообщение 20.10.2009, 10:20
Сообщение #88


Активный участник
***

Группа: Пользователи
Сообщений: 52
Регистрация: 10.10.2009
Пользователь №: 4 687
Спасибо сказали: 3 раза




Обращаюсь к автору скрипта.
Как определяется, какой вопрос будет извлечен из базы и показан? У меня база на 143 тысячи вопросов, а тем не менее пользователи жалуются что вопросы повторяются.
Единственное в чем может быть проблема-я взял твою "родную" базу и слепил ее вручную с другой, найденной мной, базой. Поправил разделители и залил обратно.
Go to the top of the page
+Quote Post
LoGaN
сообщение 3.11.2009, 19:15
Сообщение #89


Абсолютный новичок


Группа: Пользователи
Сообщений: 5
Регистрация: 6.11.2008
Пользователь №: 1 008
Спасибо сказали: 0 раз




помогите глюк пишет реальное количестао людей и рядом нереальное не пойму в чем проблема/???????????
Go to the top of the page
+Quote Post
TiGRpp
сообщение 13.11.2009, 1:47
Сообщение #90


Продвинутый участник
****

Группа: Пользователи
Сообщений: 162
Регистрация: 19.8.2009
Из: Москва
Пользователь №: 4 201
Спасибо сказали: 24 раза




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

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

Но вот что интересно, при попытке расширить базу вопросов путем копирования файла questions.txt из другого источника, скрипт ответов не видел. Расширить базу смог только копированием текста в существующий "родной" questions.txt.
Go to the top of the page
+Quote Post
profiles
сообщение 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
Go to the top of the page
+Quote Post
RomanGTe
сообщение 1.3.2010, 16:09
Сообщение #92


Начинающий
*

Группа: Пользователи
Сообщений: 13
Регистрация: 27.2.2009
Пользователь №: 2 396
Спасибо сказали: 1 раз




Ребят а кто настроил чтоб вызывать игру не через меню а через команду?
Например у нас на одном хабе вызывается словом Викторина, и выскакиевает один вапрос. я пытался сделать чтото подобное но ничего не получаеться. Если кто знает скажите пожалуйста
Go to the top of the page
+Quote Post
Nickolya
сообщение 1.3.2010, 16:38
Сообщение #93


Главный ра******й тут...
*********

Группа: Главные администраторы
Сообщений: 1 727
Регистрация: 18.5.2008
Из: RF, 2la
Пользователь №: 1
Спасибо сказали: 776 раз




По аналогии с
Код
[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
отвечает за команду в чате, меняйте сами как хотите


Спасибо сказали:
Go to the top of the page
+Quote Post
RomanGTe
сообщение 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)
Go to the top of the page
+Quote Post
Nickolya
сообщение 1.3.2010, 17:10
Сообщение #95


Главный ра******й тут...
*********

Группа: Главные администраторы
Сообщений: 1 727
Регистрация: 18.5.2008
Из: RF, 2la
Пользователь №: 1
Спасибо сказали: 776 раз




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


Спасибо сказали:
Go to the top of the page
+Quote Post
RomanGTe
сообщение 1.3.2010, 17:32
Сообщение #96


Начинающий
*

Группа: Пользователи
Сообщений: 13
Регистрация: 27.2.2009
Пользователь №: 2 396
Спасибо сказали: 1 раз




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

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

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

Спасибо огромное
Go to the top of the page
+Quote Post
RomanGTe
сообщение 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


Спасибо сказали:
Go to the top of the page
+Quote Post
TiGRpp
сообщение 2.3.2010, 18:43
Сообщение #98


Продвинутый участник
****

Группа: Пользователи
Сообщений: 162
Регистрация: 19.8.2009
Из: Москва
Пользователь №: 4 201
Спасибо сказали: 24 раза




Цитата(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?

При копировании код вообще искажается.
Можете прикрепить эту часть скрипта как-то по другому?
Go to the top of the page
+Quote Post
Nickolya
сообщение 2.3.2010, 22:45
Сообщение #99


Главный ра******й тут...
*********

Группа: Главные администраторы
Сообщений: 1 727
Регистрация: 18.5.2008
Из: RF, 2la
Пользователь №: 1
Спасибо сказали: 776 раз




Ты замени функцию и узнаешь, код может быть отформатирован как угодно, это мы вас балуем более-менее понятными структурами big_smile.gif По-моему код что выложен правильный, не хватает просто кое-где табуляторов, тот кто знает блоки выполняемого кода легко приведет код к красивому виду.
Go to the top of the page
+Quote Post
TiGRpp
сообщение 3.3.2010, 11:45
Сообщение #100


Продвинутый участник
****

Группа: Пользователи
Сообщений: 162
Регистрация: 19.8.2009
Из: Москва
Пользователь №: 4 201
Спасибо сказали: 24 раза




Цитата(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
Go to the top of the page
+Quote Post
Kingston
сообщение 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> Правильный ответ: "Кулешов".

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

8 страниц V  « < 3 4 5 6 7 > » 
Ответить в данную темуНачать новую тему
5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts От: Trivia
От темы с ID: 3596
0 qqqqqq 3 860 2.1.2012, 16:59 Посл. сообщение: qqqqqq
No New Posts Topic has attachmentsTrivia
Викторина
0 Артём 6 317 30.6.2010, 20:59 Посл. сообщение: Артём
No New Posts От: Trivia Mod
От темы с ID: 1377
0 Ksan 4 994 12.5.2010, 18:22 Посл. сообщение: Ksan
No New Posts От: Trivia Mod
От темы с ID: 1377
0 TiGRpp 5 371 15.11.2009, 8:20 Посл. сообщение: TiGRpp
No New Posts От: Trivia Mod
От темы с ID: 1377
0 Wariner 5 196 23.3.2009, 0:22 Посл. сообщение: Wariner

 



RSS Сейчас: 13.11.2024, 10:26