Ir para conteúdo
Entre para seguir isso  
Mock

tfs 0.3.4 In-game Rank completo. (v1.1)

Recommended Posts

Mock    32
Mock

Autor: Mock

Testado em: TFS 0.3.4 crying damson

Versao: 1.0

 

Notei que depois que mudou a class do mysql no TFS todos os ranking que eram ingame pararam de funcionar devido a mudança nas funções, por isso decidi entao criar um rank in-game como o antigo so que menor, ja houve a versao com 3 linhas porem nao dava para "editar" entao aqui está a nova versao feita por min, Antes de tudo essa versão funciona em servers mais antigos. o que costuma mudar é a tag.

 

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)
        --- você pode usar o script só nao tire os creditos
        --- contato: [email protected]
        local max = 10

        local letters_to_next = 20

        --
        local skills = {
         ['fist'] = 0,
         ['club'] = 1,
         ['sword'] = 2,
         ['axe'] = 3,
         ['distance'] = 4,
         ['shielding'] = 5,
         ['fishing'] = 6,
         -- outros nomes
         ['dist'] = 4,
         ['shield'] = 5,
         ['fish'] = 6,
        }
        local name_now
        local name = "Ranks By Mock\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.."Name                  Level             Exp\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.."º "..name_now..space.."|"..v:getDataInt("level").."|           ".."|"..v:getDataInt("experience").."|".."\n"         
        if no_break >= 20 then
           break
        end
        until v:next() == false
        elseif param == "magic" or param == "ml" then
               name = name.."Name                  Level             MLp\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.."º "..name_now..space.."|"..v:getDataInt("level").."|".."           ".."|"..v:getDataInt("maglevel").."|".."\n"         
                     until v:next() == false
        elseif skills[param] ~= nil then
           name = name.."Name                  "..param.." fighting.\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.."º "..name_now..space.."|"..v:getDataInt("value").."|\n"
           until v:next() == false
        end
        if name ~= "Ranks By Mock\n" then 
        doPlayerPopupFYI(cid, name)
        end
        --doPlayerSendTextMessage(cid, 25, name)


        return TRUE
end

 

Este script acima deve ser posto em talkactions no arquivo chamado rank.lua, depois disso abra o talkactions.xml e ponha esta tag se for TFS 0.3.2, 0.3.3 ou 0.3.4

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

Agora se for TFS 0.3.1 para baixo ponha esta:

<talkaction words="!rank" script="rank.lua" />

Divirtam-se e nao ripem meu script :D

 

SS:

rankrank.jpg

Editado por Black Ice
atualização

Compartilhar este post


Link para o post
Sago    0
Sago

fico foda :s

se gastasse mock

sempre criando scripts melhores que os outros

perfeito :D

bom para otservs sem site !

Compartilhar este post


Link para o post
Elys Zarox    0
Elys Zarox

mais aprimorado que os outros xD, uma duvida esse não mostra os da equipe? como GM, CM, GOD?

Compartilhar este post


Link para o post
Mock    32
Mock

nao esse mostra so player e tutor.

Compartilhar este post


Link para o post
carlinhogta    0
carlinhogta

o meu deu isso aki

[04/06/2009 22:52:31] Lua Script Error: [TalkAction Interface]

[04/06/2009 22:52:31] data/talkactions/scripts/rank.lua:onSay

 

[04/06/2009 22:52:31] data/talkactions/scripts/rank.lua:28: attempt to call field 'getResult' (a nil value)

[04/06/2009 22:52:31] stack traceback:

[04/06/2009 22:52:31] data/talkactions/scripts/rank.lua:28: in function <data/talkactions/scripts/rank.lua:1>

Compartilhar este post


Link para o post
andre1189    0
andre1189

atualiza de quanto em quanto tempo? :)

Compartilhar este post


Link para o post
Mock    32
Mock

ele atualiza qdo vc fala !rank.

 

sobre o erro so funciona em TFS 0.3.1+ se vc usa otro da isso.

Compartilhar este post


Link para o post
carlinhogta    0
carlinhogta

o meu eh 0.3.1 ;S e eh 8.4

Compartilhar este post


Link para o post
Mock    32
Mock

Sua versão do 0.3.1 entao é modificada por que nao tem a função db.getResult. Presisa dela pra funcionar.

Compartilhar este post


Link para o post
Fereu    0
Fereu

Tipo, eu to abrindo um server pro meu primo aqui ai eu coloquei esse script mas tipo quando fala !rank ele abre la certin mas n mostra o top, mostra 10 nego menos o top, quero sabe se tem alguma limitação de level no script e onde eu posso mudar;

 

Valeu.

Compartilhar este post


Link para o post
Kaotar    5
Kaotar

Bah mto bom o script gostei do geito que usou as tables e database

 

Ta de parabens

 

Flws

 

1

Compartilhar este post


Link para o post
carlinhogta    0
carlinhogta

>.<deu certo ;D muito bom

Editado por carlinhogta

Compartilhar este post


Link para o post
stove    0
stove

O meu também tá sem essa função db.getResult

Tem como colocar?

Compartilhar este post


Link para o post
Fereu    0
Fereu

Obrigado por resolver o problema do 1° da lista, ótimo script (:

Compartilhar este post


Link para o post
guitibian    0
guitibian

tava muito precisando desse script! mt bom! vlw!

Compartilhar este post


Link para o post
Pinote    0
Pinote

tipo, funcionou aq o rank pra level. so que não aparece o rank pra ml, e pra club, sword, axe e talz aparece no lugar do nome SQL_ERROR[numeros]

 

 

ajuda plx

 

gostei do script e to precisando dele

Compartilhar este post


Link para o post
Mock    32
Mock

@pinote

isso se dá por que você deletou characters da sua database incorretamente. você deletou o character mais nao os skills dele. o script pega os skills ordena e ve de quem é como nao encontra o character por que você deletou ele fala que deu o SQL erro e o numero do GUID do player.

 

 

__ edit

mls pinote e erro no script msmo :S

ja ajeitei copia dinovo la :P

Editado por Mock

Compartilhar este post


Link para o post
KuawiT    0
KuawiT

Valew cara mt bom, audo mt gente ae

Compartilhar este post


Link para o post
rauli_rb    0
rauli_rb

esta + ou-

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×