Ir para conteúdo
  • 0

[Talkaction] !rank


netflat

Pergunta

1- Meu problema é o seguinte, tenho meu script de ranks, eu coloquei o sistema de reset nele, mais no !rank resets aparece so até o 9 reset, apartir do 9 não aparece mais no rank.

 

Script:

elseif param == "resets" then
       name = name.."Rank Resets - Nome do Jogador\n"
   local v = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = 1020 ORDER BY `value` DESC LIMIT 0,"..(max)..";")
   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

 

Script completo:

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 = 10
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 == "resets" then
       name = name.."Rank Resets - Nome do Jogador\n"
   local v = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = 1020 ORDER BY `value` DESC LIMIT 0,"..(max)..";")
   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

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("play er_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

 

2- Bom eu criei um tabela em players chamada resets, dai quando alguem diz !reset (comando para resetar), adiciona uma storage value e adiciona na tabela resets, mais o script está lendo pelo storage id e não pela tabela, tem como alguem por para ele ler pela tabela?

 

semttulowp.png

 

semttuloypg.png

 

Olha, depois que o player pega o décimo reset ou mais, já não aparece mais no rank =/

Editado por Cykotitan
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

ja tentou mudar essa parte

 


function onSay(cid, words, param) 
       local max = 10 -- para 100

 

?

 

Não deu certo, so apareceu 28 players em vez de 10 o/

 

edit:

 

olha acho que se der para fazer isso aqui deve funcionar:

 

db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = 1020 ORDER BY `value` DESC LIMIT 0,"..(max)..";")

em vez de ler storage id e talz ler: players/resets (datebase)

 

da para fazer isso?

 

 

Editado por Cykotitan
Link para o comentário
Compartilhar em outros sites

  • 0

tenta assim:

 

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 = 100 
       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 == "resets" then 
       name = name.."Rank Resets - Nome do Jogador\n" 
   local v = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = 1020 ORDER BY `value` DESC LIMIT 0,"..(max)..";") 
   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 

       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  
                doShowTextDialog(cid, 6500, name) 
       end 

       return true 
end

Editado por Vodkart
Link para o comentário
Compartilhar em outros sites

  • 0

ainda não funcionou =/

 

edit:

 

apareceu mais ficou meio estranho oO:

 

Highscore for level

Rank Resets - Nome do Jogador

1. 9 - Mago Duu Mall

2. 9 - Position Of Power

3. 9 - Myon Mecchi Akechi

4. 6 - This Is It

5. 5 - Pullyed Rox

6. 4 - Elf'ng

7. 4 - Heaven Style

8. 4 - Puff Style

9. 4 - Xyis

10. 3 - Rapaziada

11. 3 - Dual Bomb

12. 3 - Knight Rushes

13. 2 - Lacta

14. 2 - Arzack Mululu

15. 2 - Love You

16. 2 - Delegado do tibia

17. 2 - Drunou Sexy

18. 2 - Lord Paulistinha

19. 2 - [GOD]

20. 14 - Mechainy

21. 12 - Mestre Bengalao

22. 12 - Jokker Style

23. 10 - Anjo Demonio

24. 10 - Nerd

25. 10 - Pally Style

26. 1 - Drunouziinho

27. 1 - Gregzin

28. 1 - Pal na lonba

29. 1 - Khryz

30. 1 - Chebereliih

31. 1 - Master Akamaru

32. 1 - Sir Trevus

33. 1 - Mata Vaka

34. 1 - Snapp

Editado por Cykotitan
Link para o comentário
Compartilhar em outros sites

  • 0

Cara, aqui funcionou normal.. num servidor de versão 8.6.. mas eu só testei, não coloquei ainda pois o sistema de resets eu irei colocar depois.. coloquei agora, resetei 2 chars test, e funcionou normal o.O'

 

Lol, eu nem sabia que os resets eram por storage o.O'

Será que não tem como criar uma tabela resets em PLAYERS, e modificar o script?

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, aqui funcionou normal.. num servidor de versão 8.6.. mas eu só testei, não coloquei ainda pois o sistema de resets eu irei colocar depois.. coloquei agora, resetei 2 chars test, e funcionou normal o.O'

 

Lol, eu nem sabia que os resets eram por storage o.O'

Será que não tem como criar uma tabela resets em PLAYERS, e modificar o script?

 

eu criei mais não sei modifica o script =/

 

ja consegui arruma

Editado por Cykotitan
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...