Ir para conteúdo

(Resolvido)[RESOLVIDO] [SQLite] -=[TFS]=- [TALKACTION] - 0.4 8.60 Advanced Poll System AJUDA SOCORRO

Featured Replies

Postado
  • Diretor
local POLL_STORAGE = 80000
local OPTIONS_STORAGE = 80001
local PLAYER_STORAGE = 80000

function table.serialize(tbl)
    local str = "{"
    local sep = ""
    for k, v in pairs(tbl) do
        str = str .. sep
        if type(k) == "number" then
            str = str .. "[" .. k .. "]"
        else
            str = str .. k
        end
        str = str .. "="
        if type(v) == "table" then
            str = str .. table.serialize(v)
        elseif type(v) == "number" or type(v) == "boolean" then
            str = str .. tostring(v)
        else
            str = str .. string.format("%q", v)
        end
        sep = ","
    end
    str = str .. "}"
    return str
end

local function getTotalVotes()
   local options = table.unserialize(getStorage(OPTIONS_STORAGE))
   local amount = 0
   for _, option in ipairs(options) do
       amount = amount + option[2]
   end
   return amount
end

local function getMostVotedOption()
   local options = table.unserialize(getStorage(OPTIONS_STORAGE))
   local value, ret = 0, {}
   for _, option in ipairs(options) do
       if option[2] > value then
           value = option[2]
           ret = {option[1]}
       elseif option[2] == value then
           table.insert(ret, option[1])
       end
   end
   return ret
end

function onSay(cid, words, param, channel)
   param = param or ""

   if param == "" and not words == "/poll" then
       return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "The command ".. words .." need parameters.")
   end

   local parameters, vote = {}
   if(words == "/newpoll") then
       if getStorage(POLL_STORAGE) ~= -1 then
           return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry, but there is a poll in progress.\nIf you want to start a new poll, type /endpoll.")
       end

       parameters = string.explode(param, ",")
       if #parameters < 3 then
           return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "The command /newpoll needs a poll and at least two options.")
       end

       if parameters[1] then
           local options = {}
           for i = 2, #parameters do
               table.insert(options, {parameters[i], 0})
           end

           if #options < 2 then
               return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Insert at least two options after the poll")
           end
           doSetStorage(POLL_STORAGE, parameters[1])
           options = table.serialize(options)
           doSetStorage(OPTIONS_STORAGE, options)
           doBroadcastMessage("A new poll is in progress with the title '".. getStorage(POLL_STORAGE) .."?'!\nSee the status with /poll and vote with /vote.")
       end
   elseif(words == "/vote") then
       vote = tonumber(param) or -1
       local options = table.unserialize(getStorage(OPTIONS_STORAGE))
       if getStorage(POLL_STORAGE) == -1 then
           return doPlayerSendCancel(cid, "There is not a poll in progress.")
       end

       if vote == -1 then
           return doPlayerSendCancel(cid, "You need to choose a option to vote.")
       end

       if getCreatureStorage(cid, PLAYER_STORAGE) == 1 then
               print(getCreatureStorage(cid, PLAYER_STORAGE))
           return doPlayerSendCancel(cid, "You cannot vote two times.")
       end

       if vote > #options then
           return doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
       end

       options[vote][2] = options[vote][2] + 1
       doSetStorage(OPTIONS_STORAGE, table.serialize(options))
       doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have voted in the option ".. options[vote][1] .." successfully!")
       doCreatureSetStorage(cid, PLAYER_STORAGE, 1)
   elseif(words == "/poll") then
       local options = table.unserialize(getStorage(OPTIONS_STORAGE))
       if getStorage(POLL_STORAGE) == -1 then
           return doPlayerSendCancel(cid, "There is not a poll in progress.")
       end

       local text = "ADVANCED poll SYSTEM\n\n".. getStorage(POLL_STORAGE) .."?\n"
       local count = 1
       for _, option in ipairs(options) do
           text = text .."\n#".. count .."   ".. option[1] .."   ".. (getTotalVotes() == 0 and 0 or math.floor((option[2]/getTotalVotes()) * 100)) .."%\n"
           count = count + 1
       end
       doPlayerPopupFYI(cid, text)
   elseif(words == "/endpoll") then
       if getStorage(POLL_STORAGE) == -1 then
           return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "There is not a poll to be ended.")
       end

       if not getMostVotedOption() then
           return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Wait at least one vote to end this poll.")
       end
       local mostVotedOptions = getMostVotedOption()
       local mostVotedText = table.concat(mostVotedOptions, ", ")
       doBroadcastMessage("The poll '".. getStorage(POLL_STORAGE) .."?' has been finished!\nThe most voted option(s) was/were: ".. mostVotedText ..".")
       doSetStorage(POLL_STORAGE, -1)
       doSetStorage(OPTIONS_STORAGE, -1)
       for _, player in ipairs(getPlayersOnline()) do
           doCreatureSetStorage(player, PLAYER_STORAGE, -1)
       end

       db.executeQuery("UPDATE `player_storage` SET value = -1 WHERE `key` = ".. PLAYER_STORAGE ..";")
   end
   return true
end

 

  • Respostas 7
  • Visualizações 463
  • Created
  • Última resposta

Top Posters In This Topic

Posted Images

Postado
  • Autor
  • Solução

EU CRIEI /newpoll e apareceu esses erros e a /newpoll eu criei apareceu mensagem vermelha mais comandos bugaram


 

/vote



[15/03/2024 08:27:16] [Error - TalkAction Interface] 
[15/03/2024 08:27:16] data/talkactions/scripts/pollsystem.lua:onSay
[15/03/2024 08:27:16] Description: 
[15/03/2024 08:27:16] data/lib/012-table.lua:6: bad argument #1 to 'load' (function expected, got string)
[15/03/2024 08:27:16] stack traceback:
[15/03/2024 08:27:16]     [C]: in function 'load'
[15/03/2024 08:27:16]     data/lib/012-table.lua:6: in function 'unserialize'
[15/03/2024 08:27:16]     data/talkactions/scripts/pollsystem.lua:86: in function <data/talkactions/scripts/pollsystem.lua:52>



/poll




[15/03/2024 08:26:20] [Error - TalkAction Interface] 
[15/03/2024 08:26:20] data/talkactions/scripts/pollsystem.lua:onSay
[15/03/2024 08:26:20] Description: 
[15/03/2024 08:26:20] data/lib/012-table.lua:6: bad argument #1 to 'load' (function expected, got string)
[15/03/2024 08:26:20] stack traceback:
[15/03/2024 08:26:20]     [C]: in function 'load'
[15/03/2024 08:26:20]     data/lib/012-table.lua:6: in function 'unserialize'
[15/03/2024 08:26:20]     data/talkactions/scripts/pollsystem.lua:39: in function 'getMostVotedOption'
[15/03/2024 08:26:20]     data/talkactions/scripts/pollsystem.lua:126: in function <data/talkactions/scripts/pollsystem.lua:52>





/endpoll

[15/03/2024 08:26:26] [Error - TalkAction Interface] 
[15/03/2024 08:26:26] data/talkactions/scripts/pollsystem.lua:onSay
[15/03/2024 08:26:26] Description: 
[15/03/2024 08:26:26] data/lib/012-table.lua:6: bad argument #1 to 'load' (function expected, got string)
[15/03/2024 08:26:26] stack traceback:
[15/03/2024 08:26:26]     [C]: in function 'load'
[15/03/2024 08:26:27]     data/lib/012-table.lua:6: in function 'unserialize'
[15/03/2024 08:26:27]     data/talkactions/scripts/pollsystem.lua:39: in function 'getMostVotedOption'
[15/03/2024 08:26:27]     data/talkactions/scripts/pollsystem.lua:126: in function <data/talkactions/scripts/pollsystem.lua:52>

 

  • Muvukaa mudou o título para [RESOLVIDO] [SQLite] -=[TFS]=- [TALKACTION] - 0.4 8.60 Advanced Poll System AJUDA SOCORRO

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo