Ir para conteúdo

[AGS] Guild Rank


Omega

Posts Recomendados

Aviso

Esse script precisa do Advanced Guild System instalado corretamente para funcionar.

 

Informações

Essa talkaction reúne as informações de todos os jogadores que tem guild. Depois, separa os 10 lvls mais altos de cada guild e soma, fazendo um ranking. No final, o jogador que usar o comando recebe uma janela com as 10 guilds (se existirem) mais fortes do servidor, rankeadas pela soma dos 10 levels mais altos (se existirem).

 

Código

Salve como guildrank.lua em talkactions/scripts:

 

 

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

 

 

Agora, registre a talkaction em talkactions.xml:

<talkactions words="/guildrank" access="0" event="script" value="guildrank.lua"/>
Editado por Omega
Link para o comentário
Compartilhar em outros sites

  • 3 months later...

Cara desculpem por reativar o topico mais é importante aki nn deu pra usar o comando nn..

 

no execultavel nn aparece nem um erro mais e como se o comando nn existice..

 

Ja comferi se o nome do arquivo ta igual o da tag, ta tudo sertim mais nn pega me ajuda pff..

Link para o comentário
Compartilhar em outros sites

Cara desculpem por reativar o topico mais é importante aki nn deu pra usar o comando nn..

 

no execultavel nn aparece nem um erro mais e como se o comando nn existice..

 

Ja comferi se o nome do arquivo ta igual o da tag, ta tudo sertim mais nn pega me ajuda pff..

 

Aviso

Esse script precisa do Advanced Guild System instalado corretamente para funcionar

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...