Ir para conteúdo
Entre para seguir isso  
alisonjf

[8.1] (TFS 0.2.5) Highscores no Jogo

Recommended Posts

alisonjf    2
alisonjf

Nome: Highscores no Jogo (como se fosse um rank)

Versão: 8.1

Tipo de Script: Talkaction

Servidor Testado: The Forgotten Server (TFS)

Créditos(Autor): 99% 4220niller e 1% Meu

 

ATENÇÃO! LEMBRANDO QUE O SCRIPT FUNCIONA SÓ EM SERVERS COM LuaSQL e doPlayerPopupFYI!

Exemplo:

!ranks "level

 

Essa é uma talkaction que mostra uma janela com Nome, Level, Exp....

capture1qo8zm7.jpg

Um pouco útil até. Lembrando que só funciona em TFS.

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

 

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"/>

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

 

Gostaram: Doem OT$ :)

Reclamações/Dúvidas: Postem

Editado por Dark

Compartilhar este post


Link para o post
Dark    3
Dark

Aprovado

 

Movido

(Scripting DownloadsAções)

Compartilhar este post


Link para o post
BlueAvenger    0
BlueAvenger

Sensacional assim como todos outros trazidos por vc, Parabens.

GRato

 

Aprovado~

Compartilhar este post


Link para o post
Elys Zarox    0
Elys Zarox

oO rox mais num aonde posso achar TFS?

Compartilhar este post


Link para o post
BoY SoT    0
BoY SoT

@ Elys Zarox

 

Se acha TFS ( the forgotten server) Aqui

 

 

@topico

 

Boa cara otimo topico

Testado e Aprovado!!!!!!!!!

Compartilhar este post


Link para o post
J3@n    0
J3@n

Muito Bom

Parabéns, pena que eu nao uso o TFS

Compartilhar este post


Link para o post
Raizzen    0
Raizzen

Que pena que é somente para TFS, não ter como fazer para Striker? xP

Compartilhar este post


Link para o post
BhronX    0
BhronX

Velho muito massa, funfo redondo aki, agora .. vc podia fazer p/ os skills tbm ^^ (ml , axe , sword etc ) hehe

Tks Man

Compartilhar este post


Link para o post
Mililo    0
Mililo

BhronX pelos q vi ali na action jah exite pra todos skills eh soh flar:

!ranks "fist, ou dist, axe, sword, fish, maglevel talz...

 

E Alison ainda n testei mas se funcionar é mesmo muito boa action! Parabéns!

Compartilhar este post


Link para o post
Lil'RoY~    0
Lil'RoY~

=O

parabens

fiko rox mesmo. ja coloquei no meu ot, e a turma curtio

:D

vlw aee

flws

Compartilhar este post


Link para o post
godzinho    0
godzinho

ou nao funciona para 8.31?

Compartilhar este post


Link para o post
guileo    0
guileo

ei.. fiz tudo certo os esquema mas quando digita no ot não aparece nada.. pq sera? ;x

Compartilhar este post


Link para o post
FakLess    0
FakLess

Aff...So em TFS ;(

É realmente Uma Pena mais tah Valendo...

Flw

Compartilhar este post


Link para o post
oOPalisonOo    0
oOPalisonOo

ow ele ta dando erro =/

 

[13/01/2009 13:25:03] Lua Script Error: [TalkAction Interface]

[13/01/2009 13:25:03] data/talkactions/scripts/highscores.lua:onSay

 

[13/01/2009 13:25:03] data/talkactions/scripts/highscores.lua:158: LuaSQL: there are open cursors

[13/01/2009 13:25:03] stack traceback:

[13/01/2009 13:25:03] [C]: in function 'close'

[13/01/2009 13:25:03] data/talkactions/scripts/highscores.lua:158: in function <data/talkactions/scripts/highscores.lua:1>

 

e não so esta atualizando quando da o server save =O

Compartilhar este post


Link para o post
Amax    0
Amax

Teria como ser feito um Rank para os 5 players que mais matarao e essa mensagem aparecer a cada 5minutos?

 

Exemplo:

1 - Kaos Death: 17 Kills

2 - New Psiu: 14 Kills

3 - Kilmes: 12 Kills

4 - Gyrodos: 10 Kills

5 - Jujuxinhaa: 10 Kills

 

ai essa mensagem tipo um Top 5 aparecesse no ot a cada 5minutos.

 

Tem como?

Tenho um enforced de shanera e a unica coisa que falta pra ele ficar completo mesmo é um rank.

 

Me ajude se puder

Compartilhar este post


Link para o post
mylion    0
mylion

MANUUU, MEU OT TEM ISSU, MAS SE EU USAR 3 VEZES !ranks "axe (ou fist ou outro ai) ele buga dai não da pra falar mais nenhum =/ dai aki tirei esses de axe sword e talz so ta o !ranks msm =/!! pq o !ranks n buga ^^

Compartilhar este post


Link para o post
sokaporva    0
sokaporva

Estou com o mesmo problema dos meus amigos ai:

E apos usar 3 vezes ele da este erro e depois nao da mais SAVE no OT!

Tentei diminuir o display name pra 5 player mas da msm coisa...

TFS 0.2 - 8.4

 

 

[13/01/2009 13:25:03] Lua Script Error: [TalkAction Interface]

[13/01/2009 13:25:03] data/talkactions/scripts/highscores.lua:onSay

 

[13/01/2009 13:25:03] data/talkactions/scripts/highscores.lua:158: LuaSQL: there are open cursors

[13/01/2009 13:25:03] stack traceback:

[13/01/2009 13:25:03] [C]: in function 'close'

[13/01/2009 13:25:03] data/talkactions/scripts/highscores.lua:158: in function <data/talkactions/scripts/highscores.lua:1>

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.

×