RI

Comando De Highscores !

Por ricktcs, 23 de dez. de 2008 em Actions e Talkactions

script
17
6.1k
ricktcsR
23 de dezembro de 2008 às 22:11

Comando de highscores, vc ve os highscores do server somente falando !ranks, eu nao sei se já tem aqui no forum, eu nao achei entao estou postando ...

Nao sei quem foi que fez, entao nao vou colocar creditos ...

 

Lá vai os scripts...

 

1º Passo:

entre em data/talkactions/scripts, copie e cole qualquer arquivo e renomeie para highscores.lua, apage tudo e coloque:

function onSay(cid, words, param)
   dofile("./config.lua")
   local players = 20 -- The amount of players that is shown in the list
   local maxgroupid = 1 -- Players in groups above this is not shown in the list

   if sqlType == "mysql" then
       env = assert(luasql.mysql())
       con = assert(env:connect(mysqlDatabase, mysqlUser, mysqlPass, mysqlHost, mysqlPort))
   else -- sqlite
       env = assert(luasql.sqlite3())
       con = assert(env:connect(sqliteDatabase))
   end

   local str = ""
   if param == "level" or param == "exp" or param == "lvl" or param == "" then
       cur = assert(con:execute("SELECT `name`, `level`, `experience` FROM `players` WHERE `group_id` <= "..maxgroupid.." ORDER BY `experience` DESC LIMIT 0,"..players..";"))
       row = cur:fetch({}, "a")
       str = "# [Level] - Name - (Experience)\n"
       local i = 0
       while row do
           str = str.."\n#"..(i+1).." ["..row.level.."] - "..row.name.." - ("..row.experience..")"
           row = cur:fetch (row, "a")
           i = i+1
       end
   elseif param == "maglevel" or param == "magic" or param == "ml" then
       cur = assert(con:execute("SELECT `name`, `maglevel` FROM `players` WHERE `group_id` <= "..maxgroupid.." ORDER BY `maglevel` DESC LIMIT 0,"..players..";"))
       row = cur:fetch({}, "a")
       str = "# [Magic Level] - Name\n"
       local i = 0
       while row do
           str = str.."\n#"..(i+1).." ["..row.maglevel.."] - "..row.name..""
           row = cur:fetch (row, "a")
           i = i+1
       end
   elseif param == "fist" then
       cur = assert(con:execute("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 0 ORDER BY `value` DESC;"))
       row = cur:fetch({}, "a")
       str = "# [Fist Fighting] - Name\n"
       local i = 0
       while row do
           if i == players then
               break
           end
           query = assert(con:execute("SELECT `name` FROM `players` WHERE `group_id` <= "..maxgroupid.." AND `id` = "..row.player_id..""))
           sql = query:fetch({}, "a")
           if sql ~= nil then
               str = str.."\n#"..(i+1).." ["..row.value.."] - "..sql.name..""
               i = i+1
           end
           row = cur:fetch (row, "a")
       end
   elseif param == "club" then
       cur = assert(con:execute("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 1 ORDER BY `value` DESC;"))
       row = cur:fetch({}, "a")
       str = "# [Club Fighting] - Name\n"
       local i = 0
       while row do
           if i == players then
               break
           end
           query = assert(con:execute("SELECT `name` FROM `players` WHERE `group_id` <= "..maxgroupid.." AND `id` = "..row.player_id..""))
           sql = query:fetch({}, "a")
           if sql ~= nil then
               str = str.."\n#"..(i+1).." ["..row.value.."] - "..sql.name..""
               i = i+1
           end
           row = cur:fetch (row, "a")
       end
   elseif param == "sword" then
       cur = assert(con:execute("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 2 ORDER BY `value` DESC;"))
       row = cur:fetch({}, "a")
       str = "# [sword Fighting] - Name\n"
       local i = 0
       while row do
           if i == players then
               break
           end
           query = assert(con:execute("SELECT `name` FROM `players` WHERE `group_id` <= "..maxgroupid.." AND `id` = "..row.player_id..""))
           sql = query:fetch({}, "a")
           if sql ~= nil then
               str = str.."\n#"..(i+1).." ["..row.value.."] - "..sql.name..""
               i = i+1
           end
           row = cur:fetch (row, "a")
       end
   elseif param == "axe" then
       cur = assert(con:execute("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 3 ORDER BY `value` DESC;"))
       row = cur:fetch({}, "a")
       str = "# [Axe Fighting] - Name\n"
       local i = 0
       while row do
           if i == players then
               break
           end
           query = assert(con:execute("SELECT `name` FROM `players` WHERE `group_id` <= "..maxgroupid.." AND `id` = "..row.player_id..""))
           sql = query:fetch({}, "a")
           if sql ~= nil then
               str = str.."\n#"..(i+1).." ["..row.value.."] - "..sql.name..""
               i = i+1
           end
           row = cur:fetch (row, "a")
       end
   elseif param == "dist" or param == "distance" then
       cur = assert(con:execute("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 4 ORDER BY `value` DESC;"))
       row = cur:fetch({}, "a")
       str = "# [Distance Fighting] - Name\n"
       local i = 0
       while row do
           if i == players then
               break
           end
           query = assert(con:execute("SELECT `name` FROM `players` WHERE `group_id` <= "..maxgroupid.." AND `id` = "..row.player_id..""))
           sql = query:fetch({}, "a")
           if sql ~= nil then
               str = str.."\n#"..(i+1).." ["..row.value.."] - "..sql.name..""
               i = i+1
           end
           row = cur:fetch (row, "a")
       end
   elseif param == "shield" or param == "shielding" then
       cur = assert(con:execute("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 5 ORDER BY `value` DESC;"))
       row = cur:fetch({}, "a")
       str = "# [shielding] - Name\n"
       local i = 0
       while row do
           if i == players then
               break
           end
           query = assert(con:execute("SELECT `name` FROM `players` WHERE `group_id` <= "..maxgroupid.." AND `id` = "..row.player_id..""))
           sql = query:fetch({}, "a")
           if sql ~= nil then
               str = str.."\n#"..(i+1).." ["..row.value.."] - "..sql.name..""
               i = i+1
           end
           row = cur:fetch (row, "a")
       end
   elseif param == "fish" or param == "fishing" then
       cur = assert(con:execute("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 6 ORDER BY `value` DESC;"))
       row = cur:fetch({}, "a")
       str = "# [Fishing] - Name\n"
       local i = 0
       while row do
           if i == players then
               break
           end
           query = assert(con:execute("SELECT `name` FROM `players` WHERE `group_id` <= "..maxgroupid.." AND `id` = "..row.player_id..""))
           sql = query:fetch({}, "a")
           if sql ~= nil then
               str = str.."\n#"..(i+1).." ["..row.value.."] - "..sql.name..""
               i = i+1
           end
           row = cur:fetch (row, "a")
       end
   end
   if str ~= "" then
       doPlayerPopupFYI(cid, str)
   end
   con:close()
   env:close()
end

Pronto apos adcionar isso salve e feche o arquivo.

2º Passo:

Vá em data/talkactions em talkactions.xml, adcione isso:

        <talkaction words="!ranks" script="highscores.lua"/>

Pronto esta ai, para executar o comando entre em qualquer personagem e fale !ranks.

 

CREDITOS:10% pra mim (por postar)

90% infelizmente nao sei quem criou este comando.

 

Espero ter ajudado.

 

~Ricktcs~

nooblessN
23 de dezembro de 2008 às 22:20

Vlw

Vou Colocar No Meu OT

T+

Editado Dezembro 23 por NoobLess

paladinwellP
24 de dezembro de 2008 às 12:07

Ta bugado fiih... nao adianta mais buga o save do server tem de arruma issu ae..

Hlangdom

ricktcsR
24 de dezembro de 2008 às 14:00

se pode especifica mais o tal "bug" que vc falou ?

1 mês depois...
ExalerE
07 de janeiro de 2009 às 08:35

ele é bugado pelo seguinte motivo:

quando você digita !ranks ele até funciona soque chega em um momento que ele perde seu contato com o DataBase e os players do seu Open Tibia Server quando relogam ou morrem acabam voltando no templo na ultima veiz que logarão ou que morreram, não adianta dar /save nem nada porque não ira salvar isso pode causar um "conflito" entre o GM e os players por isso em meu Open Tibia Server não coloquei ranks até prefiro um site.

GM Exaler :666:

ricktcsR
07 de janeiro de 2009 às 14:38

hmm valeu por especificar o bug ...vou tentar solucionar ... se alguem souber porfavor fale !

Editado Janeiro 7 por ricktcs

MarcolinoGODM
07 de janeiro de 2009 às 17:29

Este não seria o script que postei para um cara la nos pedidos?

ricktcsR
07 de janeiro de 2009 às 17:39

sim deve ser igual

1 mês depois...
KakarecoK
22 de fevereiro de 2009 às 17:51

Eu acho que para arrumar esse bug tem que usar o xampp! Vi isso em um post de pedidos. Tenta ae e me fala se deu certo! T + :smile_positivo:

EventideE
22 de fevereiro de 2009 às 20:14

Para arrumar o bug, adicione cur:close() na linha anterior de con:close()

 

@Exalus

Isso só acontece pois o con:close() não estava funcionando pois o cursor cur não estava fechado..

agora com isso ai, tudo fecha, ai fica de boa.. xD

 

 

hail save funcionando!

Editado Fevereiro 22 por Eventide

KakarecoK
01 de março de 2009 às 15:58

Valeu Eventide, funcionou direitinho. Tava mesmo atras dessa soluçao. Sou seu fan. Valeu mesmo xD. T+ :smile_positivo:

1 mês depois...
QuilanteQ
06 de abril de 2009 às 18:13
Para arrumar o bug, adicione cur:close() na linha anterior de con:close()

 

@Exalus

Isso só acontece pois o con:close() não estava funcionando pois o cursor cur não estava fechado..

agora com isso ai, tudo fecha, ai fica de boa.. xD

 

 

hail save funcionando!

 

nada a ve.. tirei os comandos.. deu erro..

botei o cur:close() deu erro tb..

tirei tudo deu erro

 

fiz todos os testes tudo resultou em erro.. é soh dar SAVE no server que o erro começa e perde conexão com o sqlite

CriticalC
06 de abril de 2009 às 19:46

É So Para Saber Mesmo , Com O Que O Evendite Disse , Agora Tá Funfano Normal ? [Plx Falem Rápido] Não Confio Em Camponeses x.x"

2 meses depois...
Thony402T
10 de junho de 2009 às 21:08

O que o carinha explicou ali esta bem explicado mais tem dois porem que pode muito bem salvar seu ot serv......

se vc apagar o item do script

con:close()

env:close()

 

e apagalo

o erro sumira somente dos lvl e ml porem os outros n arrumaram porque o unico geito é vc aprender a mexer no xampp e talz mais é muito facil só vc excluir os !ranks"fist !ranks"club etc..

e deixar somente o de lvl e ml

e pronto isso ajuda muito

e n da erro nenhum vou mandar o meu

 

function onSay(cid, words, param)

dofile("./config.lua")

local players = 20 -- The amount of players that is shown in the list

local maxgroupid = 1 -- Players in groups above this is not shown in the list

env = assert(luasql.sqlite3())

con = assert(env:connect(sqliteDatabase))

 

 

local str = ""

if param == "level" or param == "exp" or param == "lvl" or param == "" then

cur = assert(con:execute("SELECT `name`, `level`, `experience` FROM `players` WHERE `group_id` <= "..maxgroupid.." ORDER BY `experience` DESC LIMIT 0,"..players..";"))

row = cur:fetch({}, "a")

str = "# [Level] - Name - (Experience)\n"

local i = 0

while row do

str = str.."\n#"..(i+1).." ["..row.level.."] - "..row.name.." - ("..row.experience..")"

row = cur:fetch (row, "a")

i = i+1

end

elseif param == "maglevel" or param == "magic" or param == "ml" then

cur = assert(con:execute("SELECT `name`, `maglevel` FROM `players` WHERE `group_id` <= "..maxgroupid.." ORDER BY `maglevel` DESC LIMIT 0,"..players..";"))

row = cur:fetch({}, "a")

str = "# [Magic Level] - Name\n"

local i = 0

while row do

str = str.."\n#"..(i+1).." ["..row.maglevel.."] - "..row.name..""

row = cur:fetch (row, "a")

i = i+1

end

elseif param == "fist" then

cur = assert(con:execute("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 0 ORDER BY `value` DESC;"))

row = cur:fetch({}, "a")

str = "# [Fist Fighting] - Name\n"

local i = 0

while row do

if i == players then

break

end

query = assert(con:execute("SELECT `name` FROM `players` WHERE `group_id` <= "..maxgroupid.." AND `id` = "..row.player_id..""))

sql = query:fetch({}, "a")

if sql ~= nil then

str = str.."\n#"..(i+1).." ["..row.value.."] - "..sql.name..""

i = i+1

end

row = cur:fetch (row, "a")

end

elseif param == "club" then

cur = assert(con:execute("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 1 ORDER BY `value` DESC;"))

row = cur:fetch({}, "a")

str = "# [Club Fighting] - Name\n"

local i = 0

while row do

if i == players then

break

end

query = assert(con:execute("SELECT `name` FROM `players` WHERE `group_id` <= "..maxgroupid.." AND `id` = "..row.player_id..""))

sql = query:fetch({}, "a")

if sql ~= nil then

str = str.."\n#"..(i+1).." ["..row.value.."] - "..sql.name..""

i = i+1

end

row = cur:fetch (row, "a")

end

elseif param == "sword" then

cur = assert(con:execute("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 2 ORDER BY `value` DESC;"))

row = cur:fetch({}, "a")

str = "# [sword Fighting] - Name\n"

local i = 0

while row do

if i == players then

break

end

query = assert(con:execute("SELECT `name` FROM `players` WHERE `group_id` <= "..maxgroupid.." AND `id` = "..row.player_id..""))

sql = query:fetch({}, "a")

if sql ~= nil then

str = str.."\n#"..(i+1).." ["..row.value.."] - "..sql.name..""

i = i+1

end

row = cur:fetch (row, "a")

end

elseif param == "axe" then

cur = assert(con:execute("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 3 ORDER BY `value` DESC;"))

row = cur:fetch({}, "a")

str = "# [Axe Fighting] - Name\n"

local i = 0

while row do

if i == players then

break

end

query = assert(con:execute("SELECT `name` FROM `players` WHERE `group_id` <= "..maxgroupid.." AND `id` = "..row.player_id..""))

sql = query:fetch({}, "a")

if sql ~= nil then

str = str.."\n#"..(i+1).." ["..row.value.."] - "..sql.name..""

i = i+1

end

row = cur:fetch (row, "a")

end

elseif param == "dist" or param == "distance" then

cur = assert(con:execute("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 4 ORDER BY `value` DESC;"))

row = cur:fetch({}, "a")

str = "# [Distance Fighting] - Name\n"

local i = 0

while row do

if i == players then

break

end

query = assert(con:execute("SELECT `name` FROM `players` WHERE `group_id` <= "..maxgroupid.." AND `id` = "..row.player_id..""))

sql = query:fetch({}, "a")

if sql ~= nil then

str = str.."\n#"..(i+1).." ["..row.value.."] - "..sql.name..""

i = i+1

end

row = cur:fetch (row, "a")

end

elseif param == "shield" or param == "shielding" then

cur = assert(con:execute("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 5 ORDER BY `value` DESC;"))

row = cur:fetch({}, "a")

str = "# [shielding] - Name\n"

local i = 0

while row do

if i == players then

break

end

query = assert(con:execute("SELECT `name` FROM `players` WHERE `group_id` <= "..maxgroupid.." AND `id` = "..row.player_id..""))

sql = query:fetch({}, "a")

if sql ~= nil then

str = str.."\n#"..(i+1).." ["..row.value.."] - "..sql.name..""

i = i+1

end

row = cur:fetch (row, "a")

end

elseif param == "fish" or param == "fishing" then

cur = assert(con:execute("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 6 ORDER BY `value` DESC;"))

row = cur:fetch({}, "a")

str = "# [Fishing] - Name\n"

local i = 0

while row do

if i == players then

break

end

query = assert(con:execute("SELECT `name` FROM `players` WHERE `group_id` <= "..maxgroupid.." AND `id` = "..row.player_id..""))

sql = query:fetch({}, "a")

if sql ~= nil then

str = str.."\n#"..(i+1).." ["..row.value.."] - "..sql.name..""

i = i+1

end

row = cur:fetch (row, "a")

end

end

if str ~= "" then

doPlayerPopupFYI(cid, str)

end

env:close()

end

 

e é isso ai se prescisarem de uma ajudinha só dar um toque

satan666S
10 de junho de 2009 às 21:48

gente isso aqui faz com que feche a database.

 

con:close()

env:close()

 

e o que e que o save faz?

 

ele precisa atualizar o database entao ele tando fechado nao atualizara pra quem usa sqlit e bom voce modificar o

 

con:close()

env:close()

 

troque por

 

return TRUE

return 0

 

e assim que eu uso em sqlit e nao da mais erro de salve.