Ir para conteúdo
Entre para seguir isso  
Mock

Advanced quiz system com logs!

Recommended Posts

Mock    32
Mock

  • Autor: Mock the bear
  • Servidor testado: TFS 0.3.6

 

O que é?

É um sistema no qual você pode organizar votações in-game com quantas opçoes quiser. E ainda com a opção de salvar um log do quiz, quando executado quando saiu o resultado quem iniciou, pode-se cancelar o quiz, exibir o resultado e a mensagem avisando do quiz sai em intervalos de tempo determinado.

cheezy.gif

 

Para instalar é nescessario essas 2 tags:

<talkaction words="/quiz" event="script" access="3" value="vote.lua" />
<talkaction words="!votar" event="script" value="vote.lua" />

E no arquivo vote.lua coloque isso:

---Script by mock the bear
local messageDalay = 60 -- 1 mintuo
local saveLog = true
local options = {
['sim'] = {372111,'SIM'},
['nao'] = {372112,'NÃO'},
}
function sendm(m)
   if getGlobalStorageValue(372199) == 1 then
       doBroadcastMessage(m,21)
       addEvent(sendm,messageDalay*1000,m)
   end
end
function saveLog(var)
       if not saveLog then return end
   local f = io.open('data/logs/quiz.txt','a+')
   if f then
       f:write(var)
       f:close()
   end
end
function onSay(cid, words, param, channel) ---Script by mock the bear
   local k = getGlobalStorageValue(372199)
   if words == '!votar' then
       if k == 1 then
           if getPlayerStorageValue(cid,372188) ~= getGlobalStorageValue(372188) then
               if options[param] then
                   setGlobalStorageValue(options[param][1],getGlobalStorageValue(options[param][1])+1)
                   doPlayerSendTextMessage(cid,25,'Obrigado pelo voto.')
                   setPlayerStorageValue(cid,372188,getGlobalStorageValue(372188))
               else
                   local op = ''
                   for i,b in pairs(options) do
                       op = op..i..', '
                   end
                   if op:sub(op:len()-1,op:len()) == ', ' then
                       op = op:sub(1,op:len()-2)
                   end
                   doPlayerSendTextMessage(cid,25,'As opções são: '..op)
               end
           else
               doPlayerSendTextMessage(cid,25,'Você ja votou.')
           end
       else
           doPlayerSendTextMessage(cid,25,'Não esta ocorrendo quiz.')
       end
   elseif getPlayerGroupId(cid) >= 3 then
       if param == 'r' then
           local op = ''
           for i,b in pairs(options) do
               op = op..'['..getGlobalStorageValue(b[1])..'] para '..b[2]..'\n'
           end
           doBroadcastMessage('Resultados!\n'..op..'Votação #'..getGlobalStorageValue(372188)..'',21)
           setGlobalStorageValue(372199,-1)
           saveLog('Resultado as '..os.date("%d %B %Y %X ", os.time())..'Votação #'..getGlobalStorageValue(372188)..'\n'..op..'\n----------------------------\n')
       elseif param == 'c' then
           doBroadcastMessage('Votação cancelada!')
           saveLog('Votaçao #'..os.time()..' cancelada por '..getCreatureName(cid)..'\n----------------------------\n')
       else
           if getGlobalStorageValue(372199,1) ~= 1 then
               local op = ''
               for i,b in pairs(options) do
                   op = op..'!votar '..i..' para '..b[2]..'\n'
                   setGlobalStorageValue(b[1],0)
               end
               setGlobalStorageValue(372199,1)
               setGlobalStorageValue(372188,os.time())
               saveLog('Votaçao #'..os.time()..' iniciada por '..getCreatureName(cid)..' em '..os.date("%d %B %Y %X ", os.time())..'\n'..param..'\n')
               sendm('Votação iniciada!\n'..param..'\nFale:\n'..op..'\nVotação #'..os.time()..'')
           else
               doPlayerSendTextMessage(cid,25,'Ja existe um quiz ocorrendo. Fale /quiz r prar resultados ou /quiz c para cancelar.')
           end
       end
   end
   return true
end

 

Em seguida é só testar.

 

Em execução:

[spoiler=Server log:]

23:25 Votação iniciada!

Você é macho?

Fale:

!votar nao para NÃO

!votar sim para SIM

!votar sl para Não me decidi ainda

Votação #1280715958

23:26 Obrigado pelo voto.

23:26 Votação iniciada!

Você é macho?

Fale:

!votar nao para NÃO

!votar sim para SIM

!votar sl para Não me decidi ainda

Votação #1280715958

23:27 Resultados!

[4] para NÃO

[2] para SIM

[3] para Não me decidi ainda

Votação #1280715958

 

[spoiler=Logs: quiz.txt]

Votaçao #1280715958 iniciada por Mock em 01 August 2010 23:25:58 
Você é macho?
Resultado as 01 August 2010 23:27:18 Votação #1280715958
[4] para NÃO
[2] para SIM
[3] para Não me decidi ainda

----------------------------

 

Editado por Black Ice

Compartilhar este post


Link para o post
Hauntedy    0
Hauntedy

Muito bom script pra usar naqueles servers que o GM pergunta se os players estao preferindo um pvp....

 

Ps: tem um erro na linha numero 30 o "getGlobalStorageValue" tem o "v" separado. Portanto se forem usar arrumem isso

Compartilhar este post


Link para o post
Roku    0
Roku

putz bem lecal

seria bom a opção dos nomes de quem voto, assim da pra fazer uns eventos de quiz mesmo

Compartilhar este post


Link para o post
eskerII    0
eskerII
setPlayerStorageValue(cid,372188,getGlobalStorageV alue(372188))

 

 

vc deu espaço em value e deu erro....

 

 

setPlayerStorageValue(cid,372188,getGlobalStorageValue(372188))

 

o certo /\

Compartilhar este post


Link para o post
Mock    32
Mock

@eskerII

n adianta.

é o forum que faz isso

Compartilhar este post


Link para o post
paulo1252ganba    0
paulo1252ganba

Mock implementei seu sistema certinho, mais quando uma quiz esta em execução e vc tentar iniciar outra, ela inicia Oo

E se vc fala /quiz c varias vezes aparece q sempre foi cancelada, mesmo n tendo quiz iniciada

 

Tirando isso ta super show cara ;D gostei pakas

Editado por paulo1252ganba
erro na gramatica

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×