LE
pedido

talkaction guildrank mostra as 20 guild top frager do serv

Por LeoTK, 07 de fev. de 2014 em Scripts

narutibia
8
1k
LeoTKL
07 de fevereiro de 2014 às 11:16

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

 

likinhoL
10 de fevereiro de 2014 às 12:26
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

LeoTKL
10 de fevereiro de 2014 às 18:53

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

Editado Fevereiro 10 por Brundss

zipter98Z
11 de fevereiro de 2014 às 14:22

O cara mandou o código, mas nem avisou que era necessário instalar o AGS do Omega, lol. Enfim, aqui o link.

LeoTKL
11 de fevereiro de 2014 às 21:13

cara ta dando esse erro

 

\/

 

o7srjb.jpg

VodkartV
14 de fevereiro de 2014 às 10:00

/\ 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
LeoTKL
16 de fevereiro de 2014 às 13:20

blz valeu vodkart

zipter98Z
16 de fevereiro de 2014 às 20:40

Entenderei isso como dúvida sanada. Movido.