Ir para conteúdo
  • 0

-=[TFS]=- 0.3.6 - 8.60 - ERRO NA HORA DE USAR UM COMANDO !guildrank


Muvuka

Pergunta

 

 

<talkaction words="!guildrank" event="script" value="guildrank.lua"/>

 

TA DANDO ESSE ERRO

 

OTSYS_SQLITE3_PREPARE(): SQLITE ERROR: no such column: guild_id (SELECT level, guild_id FROM players WHERE guild_id > 0 AND level > 10 ORDER BY level DESC)

 

function onSay(cid, words, param)
    local guilds = {}
    local guild_rank = {}
    -- Seleciona o level e a guild de cada jogador com guild e com level maior que 10, ordenados pelo level
    local query = db.getResult("SELECT level, guild_id FROM players WHERE guild_id > 0 AND level > 10 ORDER BY level DESC")
    -- Caso nenhum jogador seja selecionado, retorna verdadeiro
    if query:getID() == -1 then
        return true
    end
    repeat
        local level = query:getDataInt("level")
        local guild_id = query:getDataInt("guild_id")
        -- Cria uma tabela dentro da tabela guilds para cada guilda
        if not guilds[guild_id] then
            guilds[guild_id] = {level = level, members = 1}
        -- Se a tabela já existir e o número de membros for menor que 10, soma o level e +1 ao número de membros
        elseif guilds[guild_id].members < 10 then
            guilds[guild_id].level = guilds[guild_id].level + level
            guilds[guild_id].members = guilds[guild_id].members + 1            
        end
    -- Termina se não existirem mais resultados
    until not query:next()
    query:free()
    -- Passa os resultados obtidos para a tabela guild_rank, para ordená-la com table.sort
    for i, k in pairs(guilds) do
        table.insert(guild_rank, {id = i, level = k.level})
    end
    -- Ordena a tabela guild_rank de acordo com a soma dos levels
    table.sort(guild_rank, function(a, b) return a.level > b.level end)
    local i = 0
    local str = '        Guild Rank\n'
    -- Crie uma string com o nome das guildas em um ranking
    for _, info in pairs(guild_rank) do
        i = i + 1
        str = str .. i .. ' - '.. getGuildNameById(info.id) .. ' - ' .. info.level .. '\n'        
        if i == 10 then
            break
        end
    end
    -- Se algum erro ocorrer e o ranking não tiver informações, manda a mensagem "No Guild Information..."
    local ret = str ~= '        Guild Rank\n' and str or "No guild information to be displayed."
    doPlayerPopupFYI(cid, ret)    
    return true
end
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 1
function onSay(cid, words, param)
    local guilds = {}
    local guild_rank = {}
    -- Seleciona o level e a guild de cada jogador com guild e com level maior que 10, ordenados pelo level
    local query = db.getResult("SELECT level, guild_id FROM players WHERE guild_id > 0 AND level > 10 ORDER BY level DESC")
    -- Caso nenhum jogador seja selecionado, retorna verdadeiro
    if query:getID() == -1 then
        return true
    end
    repeat
        local level = query:getDataInt("level")
        local guild_id = query:getDataInt("guild_id")
        -- Cria uma tabela dentro da tabela guilds para cada guilda
        if not guilds[guild_id] then
            guilds[guild_id] = {level = level, members = 1}
        -- Se a tabela já existir e o número de membros for menor que 10, soma o level e +1 ao número de membros
        elseif guilds[guild_id].members < 10 then
            guilds[guild_id].level = guilds[guild_id].level + level
            guilds[guild_id].members = guilds[guild_id].members + 1            
        end
    -- Termina se não existirem mais resultados
    until not query:next()
    query:free()
    -- Passa os resultados obtidos para a tabela guild_rank, para ordená-la com table.sort
    for i, k in pairs(guilds) do
        table.insert(guild_rank, {id = i, level = k.level})
    end
    -- Ordena a tabela guild_rank de acordo com a soma dos levels
    table.sort(guild_rank, function(a, b) return a.level > b.level end)
    local i = 0
    local str = '        Guild Rank\n'
    -- Crie uma string com o nome das guildas em um ranking
    for _, info in pairs(guild_rank) do
        i = i + 1
        str = str .. i .. ' - '.. getGuildNameById(info.id) .. ' - ' .. info.level .. '\n'        
        if i == 10 then
            break
        end
    end
    -- Se algum erro ocorrer e o ranking não tiver informações, manda a mensagem "No Guild Information..."
    local ret = str ~= '        Guild Rank\n' and str or "No guild information to be displayed."
    doPlayerPopupFYI(cid, ret)    
    return true
end



O erro que você está encontrando, SQLITE ERROR: no such column: guild_id, indica que a coluna guild_id não existe na tabela players.
adicione no seu banco de dados:

ALTER TABLE players ADD COLUMN guild_id INTEGER DEFAULT 0;


 

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...