Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Bem, a talkaction é a mesma coisa que o !rank que conhecemos, porem voce pode adicionar outros ranks e ela atualiza exatamente na hora que alguem upa.

Exemplos de novos ranks:

Rank para ver quem morreu mais.

Rank para level de players vip.

Rank para ver quem matou mais monstros no ot.

E varios outros...

Bem se alguem quizer implementar um novo rank, peça no topico e mande PM para mim (Nao adianta so pedir no topico porque eu nao irei lembrar de entrar nele).

O script está em mod, bem mais facil de instalar.

Va na pasta mods do seu ot e adicione o arquivo: RankSystem em formato XML e adicione isso:

<?xml version="1.0" encoding="UTF-8"?>

<mod name="RankSystem" enabled="yes" author="MatheusMkalo" forum="Tibiaking.com">


<config name="RankLib"><![CDATA[

ranks = {

["fist"] = 74666,

["club"] = 74667,

["sword"] = 74668,

["axe"] = 74669,

["distance"] = 74670,

["shielding"] = 74671,

["fishing"] = 74672,

["magic"] = 74673,

["level"] = 74674,

["monsters"] = 74675,

["guilds"] = 74676

}


function havePlayerInRank(rank, playername) -- Checa se o player ja esta no rank.

    local rankstr = getGlobalStorageValue(ranks[rank])

    local players = string.explode(rankstr, "; ")

    for i,x in pairs(players) do

        local a, b = string.find(x, "%[")

        if b ~= nil then

            if x:sub(1, b-1):lower() == playername:lower() then

                return TRUE

            end

        end

    end

end


function getPlayerLevelInRank(rank, playername) -- Pega o level de algum player no rank (Importante para novos tipos de rank.)

    local rankstr = getGlobalStorageValue(ranks[rank])

    local players = string.explode(rankstr, "; ")

    for i,x in pairs(players) do

        local a, b = string.find(x, "%[")

        local t = string.match(x, "%[(.+)]")

        if b ~= nil and x:sub(1, b-1):lower() == playername:lower() then

            return t

        end

    end

    return 0

end


function addRankPlayer(rank, playername, rankvalue) -- Adiciona um player ao rank ou muda o valor dele no rank.

    if not havePlayerInRank(rank, playername) then

        setGlobalStorageValue(ranks[rank], getGlobalStorageValue(ranks[rank]) .. (playername .. "[" .. rankvalue .. "]; "))

    else

        local a,b = string.find(getGlobalStorageValue(ranks[rank]), playername)

        local c,d = string.find(getGlobalStorageValue(ranks[rank]), playername .. "%[%d+]")

        setGlobalStorageValue(ranks[rank], getGlobalStorageValue(ranks[rank]):sub(1, b+1) .. rankvalue .. "]; " .. getGlobalStorageValue(ranks[rank]):sub(d+2)) 

    end

end


function tablelen(tab) -- By MatheusMkalo

    local result = 0

    for i,x in pairs(tab) do

        result = result+1

    end

return result

end



function getRank(rank, maxplayers) -- Pega a lista de players com maior level do rank

    local rankstr = getGlobalStorageValue(ranks[rank])

    local playerstatus = string.explode(rankstr, "; ")

    local tab = {}

    local rankTab = {}

    local rankStr = "Highscore for " .. rank .. "\n\n" .. (isInArray({"monsters", "guilds"}, rank) and "Number of Kills" or "Rank Level") .. "  -  " .. (rank == "guilds" and "Guild Name" or "Player Name") .. "\n"

    table.remove(playerstatus, #playerstatus)

    for i,x in pairs(playerstatus) do

        local a, b = string.find(x, "%[")

        local t = string.match(x, "%[(.+)]")

        tab[x:sub(1, b-1)] = tonumber(t)

    end

    local lastname = ""

    local lastvalue = 0

    for i = 1, maxplayers do

        if tablelen(tab) <= 0 then

            break

        end

        for s,x in pairs(tab) do

            if x > lastvalue then

                lastvalue = x

                lastname = s

            end

        end

        table.insert(rankTab, lastvalue .. "  -  " .. lastname)

        tab[lastname] = nil

        lastname = ""

        lastvalue = 0

    end

    for i,x in ipairs(rankTab) do

        rankStr = rankStr .. (i .. ".  ") .. x .. "\n"

    end

    return rankStr

end

]]></config>


<talkaction words="!rank;/rank" event="script"><![CDATA[

domodlib('RankLib')

    if ranks[param:lower()] then

        setGlobalStorageValue(ranks[param:lower()], getGlobalStorageValue(ranks[param:lower()]) == -1 and "" or getGlobalStorageValue(ranks[param:lower()]))

        doShowTextDialog(cid, 6500, getRank(param:lower(), 10))

    else

        return doPlayerSendCancel(cid, "Esse rank nao existe ou voce nao digitou corretamente.")

    end

    return TRUE

]]></talkaction>


<creaturescript type="advance" name="RankSystem" event="script"><![CDATA[

domodlib('RankLib')

    if skill == 0 then

        setGlobalStorageValue(74666, getGlobalStorageValue(74666) == -1 and "" or getGlobalStorageValue(74666))

        addRankPlayer("fist", getCreatureName(cid), newLevel)

    elseif skill == 1 then

        setGlobalStorageValue(74667, getGlobalStorageValue(74667) == -1 and "" or getGlobalStorageValue(74667))

        addRankPlayer("club", getCreatureName(cid), newLevel)

    elseif skill == 2 then

        setGlobalStorageValue(74668, getGlobalStorageValue(74668) == -1 and "" or getGlobalStorageValue(74668))

        addRankPlayer("sword", getCreatureName(cid), newLevel)

    elseif skill == 3 then

        setGlobalStorageValue(74669, getGlobalStorageValue(74669) == -1 and "" or getGlobalStorageValue(74669))

        addRankPlayer("axe", getCreatureName(cid), newLevel)

    elseif skill == 4 then

        setGlobalStorageValue(74670, getGlobalStorageValue(74670) == -1 and "" or getGlobalStorageValue(74670))

        addRankPlayer("distance", getCreatureName(cid), newLevel)

    elseif skill == 5 then

        setGlobalStorageValue(74671, getGlobalStorageValue(74671) == -1 and "" or getGlobalStorageValue(74671))

        addRankPlayer("shielding", getCreatureName(cid), newLevel)

    elseif skill == 6 then

        setGlobalStorageValue(74672, getGlobalStorageValue(74672) == -1 and "" or getGlobalStorageValue(74672))

        addRankPlayer("fishing", getCreatureName(cid), newLevel)

    elseif skill == 7 then

        setGlobalStorageValue(74673, getGlobalStorageValue(74673) == -1 and "" or getGlobalStorageValue(74673))

        addRankPlayer("magic", getCreatureName(cid), newLevel)

    elseif skill == 8 then

        setGlobalStorageValue(74674, getGlobalStorageValue(74674) == -1 and "" or getGlobalStorageValue(74674))

        addRankPlayer("level", getCreatureName(cid), newLevel)

    end   

return TRUE

]]></creaturescript>


<creaturescript type="kill" name="KillRank" event="script"><![CDATA[

    domodlib('RankLib')

    setGlobalStorageValue(74675, getGlobalStorageValue(74675) == -1 and "" or getGlobalStorageValue(74675))

    if isMonster(target) then

        addRankPlayer("monsters", getCreatureName(cid), getPlayerLevelInRank("monsters", getCreatureName(cid))+1)

    end

    if isPlayer(target) then

        if getPlayerGuildId(cid) > 0 then

            if lastHit then

                if getPlayerGuildId(target) <= 0 or getPlayerGuildId(target) ~= getPlayerGuildId(cid) then

                   addRankPlayer("guilds", getPlayerGuildName(cid), getPlayerLevelInRank("guilds", getPlayerGuildName(cid))+1)

                end

            end

        end

    end

    return TRUE

]]></creaturescript>


<creaturescript type="login" name="RankEvents" event="script"><![CDATA[

registerCreatureEvent(cid, "KillRank")

registerCreatureEvent(cid, "RankSystem")

return TRUE

]]></creaturescript>


</mod>
Alem dos ranks normais, eu inclui um rank para os maiores matadores de monstros, para voces poderem ter uma ideia de como incluir novos ranks. PARA QUE O SCRIPT FUNCIONE RETIRE ESSA LINHA DO TALKACTIONS.XML:
<talkaction words="!rank;/rank" event="script" value="ranks.lua"/>
OBS: Para usar o rank novo use /rank ou !rank e o nome dos skills que se encontram nessa table: ranks = { ["fist"] = 74666, ["club"] = 74667, ["sword"] = 74668, ["axe"] = 74669, ["distance"] = 74670, ["shielding"] = 74671, ["fishing"] = 74672, ["magic"] = 74673, ["level"] = 74674, ["monsters"] = 74675 } No caso do novo rank seria /rank monsters. Para mudar o numero de players mostrados no rank mude essa linha no mod:
        doShowTextDialog(cid, 2160, getRank(param:lower(), 10))

10 eh o numero de players que vai mostrar.

Adicionado /rank guilds, que mostra as guilds que mais mataram no ot.

Agora com layout e frases exatamente iguais ao /rank padrao.

È Isso ai comentem!

Editado por MatheusMkalo (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Administrador

Sempre com seus scripts inovadores, gostei mano! :rock:

TibiaKing Team- KingTópicos
www.tibiaking.com

Link para o post
Compartilhar em outros sites

Gostei tbm mkalo ;D'

Sempre com scripts bons e bastante úteis ^^'

rep+ :accept:

2z8t5ef.jpg

p7gkt.jpg

"Quem ri por último é retardado."

"Quem cedo madruga, fica com sono o dia todo."

"Família que reza unida, é religiosa pra caralho."

Link para o post
Compartilhar em outros sites

Adicionado /rank guilds, que mostra as guilds que mais mataram no ot.

Agora com layout e frases exatamente iguais ao /rank padrao.

Editado por MatheusMkalo (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 1 year later...

up....

curti muito o script, só queria saber como faço pra mostrar os 10 primeiros de cada top

Editado por sear10 (veja o histórico de edições)

 

6cb96129-c6fb-49ca-8267-4cbf4f41578c.gif

Link para o post
Compartilhar em outros sites
  • 1 month later...

deu poblemas nos monstros eles morrem e ficam de pé!

Si liga

REP não é grana..

Creditos não é Fama..

Daqui uns dias se alguem esscrever a letra "A" tera que coloca creditos! kkkkkkk

é tanto nego se matando por essa tao de REP que quando morre vai querer REP+ no funeral

aushauhsuahsuahus

Link para o post
Compartilhar em outros sites
  • 1 year later...

Valew vc manja muito , mas tipo nn apareceu o nome do pessoal ... so apareceu  isso

 

Highscore for level

 
Rank Level  -  Player Name
Link para o post
Compartilhar em outros sites
  • 4 months later...

alguem pode editar esse script ta tudo certo eu queria que se alguem editasse para botar o comando !rank guilds . ai quando o player Falar isso ira mostra as 20 top guild que mas matam porfavor me ajudem ?  :-( 

 

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

Te ajudei ? Entao da rep+ ae  ;D

Link para o post
Compartilhar em outros sites

tambem estou a procura de um rank guild ... se alguem conseguir editar com guild rank poderia me passar?

Compre seus Scripts Agora totalmente seguro e de forma rápida, aceitamos também encomendas.

discord.gg/phJZeHa2k4

 

Projeto ATS (Naruto)

Informações Abaixo

Facebook

Youtube
Discord

 

Tutoriais / Conteúdos

Clique Aqui

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo