Ir para conteúdo
Entre para seguir isso  
Bodygrilo

.:: Highscores dentro do jogo [SQL] ::.

Recommended Posts

Bodygrilo    0
Bodygrilo

Antes de tudo os créditos:

~~~~~~~~~~~~~~~~~~~~

2% meu =S (por te postado)

20% Xtr3m3 (pelo post num outro forum =p)

78% Pra um cara que crio mais nao sei quem é juro!

~~~~~~~~~~~~~~~~~~~~

 

Bom Vamus lá!

 

Crie um arquivo chamado highscores.lua na pasta data/talkactions/scripts e insira:

 

 

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

E na pasta data/talkactions adicione ao arquivo talkactions.xml:

 

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

 

 

rankrg9.jpg

ta aki a imagem de como ficaria...

 

-------------------------

Dai tipo fica assim:

 

!ranks "level

!ranks "club

!ranks "axe

 

e por ae vai...

-------------------------

Comentem!!! =D

Editado por Bodygrilo
erro

Compartilhar este post


Link para o post
Nord    2
Nord

Acho que já vi isso, mas era só de level, esse aí da pra ver os skills também :D

Pode até ser útil pra WebSite, mas isto é talkactions, então...

 

Movido --> actions

 

-- Edit --------------------------

Apesar de ter créditos vc deve seguir um padrão de postagem, mas na próxima vez xD

Compartilhar este post


Link para o post
Baah    6
Baah

Olha, aqui de bug, os players nao salvavam mais, dizia que o database estava bloqueado, eu uso sqlite no meu server.

Se nao fosse isso funcionaria perfeitamente :)

 

Lua Script Error: [TalkAction Interface]

data/talkactions/scripts/rank.lua:onSay

 

data/talkactions/scripts/rank.lua:158: LuaSQL: there are open cursors stack traceback:

[C]: in function 'close'

data/talkactions/scripts/rank.lua:158: in function <data/talkactions/scripts/rank.lua:1>

 

Aqui é TFS 8.22

Editado por Baah

Compartilhar este post


Link para o post
MotoBoy    0
MotoBoy

isso não serve pra xml enh? T.T

 

mais muito interessante ;D

 

mais da um lag no server......

Compartilhar este post


Link para o post
Chewee    0
Chewee

SQLite 8.22 não funciona?

 

Edit.: Funciona sim :)

Editado por Chewee

Compartilhar este post


Link para o post
Bodygrilo    0
Bodygrilo

Tipow esse script é mais para otserv SQL em Mysql saco

deve se isso tu deve ta usando sql em sqlite

Compartilhar este post


Link para o post
godsa    0
godsa

Bom PakasS! Vlw aew!!

Compartilhar este post


Link para o post
Undead Dragon~    3
Undead Dragon~

LEgal esse script, parabens a qeum fez, e obrigado pela sua contribuição ao trazer a OTnet.

\\--Aprovado--//

\\Undead Dragon~

Compartilhar este post


Link para o post
Pista    0
Pista

o meu deu o mesmo erro do @baah, to tentando achar o erro aqui, se eu achar posto aqui!

Compartilhar este post


Link para o post
dyegodb    0
dyegodb

Eu add no meu server. Tomara que funcione! Valeu!

 

Edit: Funcionou!

2 Edit: Funcionou mas os players param de salvar e depois buga o ot. :)

Editado por dyegodb

Compartilhar este post


Link para o post
Sago    0
Sago

Bom script é mais ainda acho melhor botar um site para ranks e criar acc acho mais legalzinho e bonitinho

mas parabéns deve ter dado trabalho o script =D

Compartilhar este post


Link para o post
gnomow157    0
gnomow157

Foda msm =/

 

[02/11/2008 00:25:27] Lua Script Error: [TalkAction Interface]

[02/11/2008 00:25:27] data/talkactions/scripts/highscores.lua:onSay

 

[02/11/2008 00:25:27] data/talkactions/scripts/highscores.lua:10: attempt to call field 'sqlite3' (a nil value)

[02/11/2008 00:25:27] stack traceback:

[02/11/2008 00:25:27] data/talkactions/scripts/highscores.lua:10: in function <data/talkactions/scripts/highscores.lua:1>

 

[02/11/2008 00:25:30] Lua Script Error: [TalkAction Interface]

[02/11/2008 00:25:30] data/talkactions/scripts/highscores.lua:onSay

 

[02/11/2008 00:25:30] data/talkactions/scripts/highscores.lua:10: attempt to call field 'sqlite3' (a nil value)

[02/11/2008 00:25:30] stack traceback:

[02/11/2008 00:25:30] data/talkactions/scripts/highscores.lua:10: in function <data/talkactions/scripts/highscores.lua:1>

 

[02/11/2008 00:26:23] Lua Script Error: [TalkAction Interface]

[02/11/2008 00:26:23] data/talkactions/scripts/highscores.lua:onSay

 

[02/11/2008 00:26:23] data/talkactions/scripts/highscores.lua:10: attempt to call field 'sqlite3' (a nil value)

[02/11/2008 00:26:23] stack traceback:

[02/11/2008 00:26:23] data/talkactions/scripts/highscores.lua:10: in function <data/talkactions/scripts/highscores.lua:1>

Compartilhar este post


Link para o post
Klenioyok    0
Klenioyok

Ajudo bastante ;d

vlw

Compartilhar este post


Link para o post
Mephisto    0
Mephisto

Pô muito bom isso..eu tava procurando um, obrigado !

Eu lembro que no Ph3.tz 8.0 tinha isso, ajudava muito !

 

Abraço !

Compartilhar este post


Link para o post
HenneT    2
HenneT

Parabéns pro criador, pelo que li não tem nenhum erro, não sei ele funcionando :P

 

 

 

Hennet, :)

Compartilhar este post


Link para o post
lokkorox    0
lokkorox

The Forgotten Server deu certo

vlw pelo tuto

abrass

Compartilhar este post


Link para o post
mendez    0
mendez

Eu uso forgotten mysql e aki deu o seguinte erro:

 

Lua script error: [TalkAction Interface]

data/talkactions/scripts/highscores.lua:onSay

 

data/talkactions/scripts/highscores.lua:7: attempt to index global 'luasql' < a nil value >

stack traceback:

data/talkactions/scripts/highscores.lua:7: in function <data/talkactions/scripts/highscores.lua:1>

Editado por mendez

Compartilhar este post


Link para o post
Le588    0
Le588

Comando muito legal!Parábens!

Compartilhar este post


Link para o post
[GOD] Draxido    0
[GOD] Draxido

Tem como usar essa action SEM APARECER EXPERIENCIA?

Por favor posta a versão que não aparece a exp dos players! ^^

 

Obrigado.

Compartilhar este post


Link para o post
BlueAvenger    0
BlueAvenger

Hmm esse script é bom, funcionou bem aqui :D meus parabens .

Compartilhar este post


Link para o post
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×