Ir para conteúdo
  • 0

talkaction guildrank mostra as 20 guild top frager do serv


LeoTK

Pergunta

galera gostaria de pedir se possivel uma talkaction que fala !rank guil < e apareça as 20 guild top frager porfavor preciso muito thx

 

irei colocar meu rank.lua caso precisarem

 

\/

 

function getPlayerNameByGUID2(n)
local c = db.getResult("SELECT `name` FROM `players` WHERE `id` = "..n..";")
if c:getID() == -1 then
return "SQL_ERROR["..n.."]"
end
return c:getDataString("name")
end

function onSay(cid, words, param)
local max = 20
local letters_to_next = 20

local skills = {
['fist'] = 0,
['club'] = 1,
['sword'] = 2,
['axe'] = 3,
['distance'] = 4,
['shielding'] = 5,
['fishing'] = 6,
['dist'] = 4,
['shield'] = 5,
['fish'] = 6,
}
local name_now
local name = "Highscore for level\n"
local rkn = 0
local no_break = 0
param = string.lower(param)
dofile('config.lua')
if param == "" or param == "level" and ( param ~= "magic" and param == "ml") and skills[param] == nil then
name = name.."\n"
name = name.."Rank Level - Nome do Jogador\n"
local v = db.getResult("SELECT `name`, `level`, `experience` FROM `players` WHERE `group_id` <= 2 ORDER BY `experience` DESC LIMIT 0,"..(max)..";")
repeat
no_break = no_break +1
if v:getID() == -1 then
break
end
rkn = rkn+1
name_now, l = v:getDataString("name"), string.len(v:getDataString("name"))
space = ""
for i=1, letters_to_next-l do
space = space.." "
end
name = name..rkn..". "..v:getDataInt("level") .." - "..name_now..space.." ".."\n"
if no_break >= 20 then
break
end
until v:next() == false

elseif param == "magic" or param == "ml" then
name = name.."\n"
name = name.."Rank Magic - Nome do Jogador\n"
local v = db.getResult("SELECT `name`, `level`, `maglevel` FROM `players` WHERE `group_id` <= 2 ORDER BY `maglevel` DESC LIMIT 0,"..(max)..";")
repeat
if v:getID() == -1 then
break
end
rkn = rkn+1
name_now, l = v:getDataString("name"), string.len(v:getDataString("name"))
space = ""
for i=1, letters_to_next-l do
space = space.." "
end
name = name..rkn..". "..v:getDataInt("maglevel").." - "..name_now..space.." ".." ".."".."\n"
until v:next() == false

elseif param == "reset" or param == "resets" then
name = name.."\n"
name = name.."Rank Reset - Nome do Jogador\n"
local v = db.getResult("SELECT `id`, `reset` FROM `players` ORDER BY reset DESC;")
local kk = 0

repeat
if kk == max or v:getID() == -1 then
break
end
kk = kk+1
name_now, l = getPlayerNameByGUID2(v:getDataInt("id")), string.len(getPlayerNameByGUID2(v:getDataInt("id")))
space = ""
for i=1, letters_to_next-l do
space = space.." "
end
if name_now == nil then
name_now = 'sql error['..v:getDataInt("id")..']'
end
name = name..kk..". "..v:getDataInt("reset").." - "..name_now..space.." \n"
until v:next() == false

elseif skills[param] ~= nil then
name = name.."\n"
name = name.."Rank "..param.." fighting - Nome do Jogador\n"
local v = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = "..skills[param].." ORDER BY `value` DESC;")
local kk = 0

repeat
if kk == max or v:getID() == -1 then
break
end
kk = kk+1
name_now, l = getPlayerNameByGUID2(v:getDataInt("player_id")), string.len(getPlayerNameByGUID2(v:getDataInt("player_id")))
space = ""
for i=1, letters_to_next-l do
space = space.." "
end

if name_now == nil then
name_now = 'sql error['..v:getDataInt("player_id")..']'
end
name = name..kk..". "..v:getDataInt("value").." - "..name_now..space.." \n"
until v:next() == false
end
if name ~= "Highscore\n" then
doPlayerPopupFYI(cid, name)
end

return TRUE
end

 

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
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

Em talkaction.xml voce coloca a tag

<talkactions words="/guildrank" access="0" event="script" value="guildrank.lua"/>

pronto ta ai amigo o scripter

Link para o comentário
Compartilhar em outros sites

  • 0

CARA TIPOW TA FALANDO QUE DEU ERRO NO SQLITE TEM COMO ME PASSAR NOME DA TABELA PRA ADD NO SQLITE???

Editado por Brundss
Link para o comentário
Compartilhar em outros sites

  • 0

/\ vc n tem essa função

 

adc na sua lib:

 

 

function getGuildNameById(id)
local query = db.getResult("SELECT `name` FROM `guilds` WHERE `id` = "..id)
if query:getID() ~= -1 then return query:getDataString("name") end
end
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...