Ir para conteúdo

Posts Recomendados

BOM EU TENHO ESSE SISTEMA DE RANKS AQUI EM BAIXO,eu queria um NOVO Rank AO FALAR !rank votos,aparecer quem tem mais storagevalue 6004, VLW.

acho que é simples só que eu nao sei fazer. VOU DAR REP+ FLW

 

 

 

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 == "mana" or param == "MANA" then   
               name = name.."\n"   
               name = name.."Rank Mana - Nome do Jogador\n"   
       local v = db.getResult("SELECT `name`, `level`, `manamax` FROM `players` WHERE `group_id` <= 2 ORDER BY `manamax` 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("manamax").."  -  "..name_now..space.." ".." ".."".."\n"    
       until v:next() == false   

       elseif param == "health" or param == "hp" then   
               name = name.."\n"   
               name = name.."Rank Health - Nome do Jogador\n"   
       local v = db.getResult("SELECT `name`, `level`, `healthmax` FROM `players` WHERE `group_id` <= 2 ORDER BY `healthmax` 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("healthmax").."  -  "..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

Link para o comentário
https://xtibia.com/forum/topic/154761-rank-storage/
Compartilhar em outros sites

tente assim meu caro:

 

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 == "mana" or param == "MANA" then    
               name = name.."\n"    
               name = name.."Rank Mana - Nome do Jogador\n"    
       local v = db.getResult("SELECT `name`, `level`, `manamax` FROM `players` WHERE `group_id` <= 2 ORDER BY `manamax` 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("manamax").."  -  "..name_now..space.." ".." ".."".."\n"     
       until v:next() == false    

       elseif param == "health" or param == "hp" then    
               name = name.."\n"    
               name = name.."Rank Health - Nome do Jogador\n"    
       local v = db.getResult("SELECT `name`, `level`, `healthmax` FROM `players` WHERE `group_id` <= 2 ORDER BY `healthmax` 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("healthmax").."  -  "..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 param == "votos" then 
       name = name.."Rank votos - Nome do Jogador\n" 
   local v = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = 6004 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

Link para o comentário
https://xtibia.com/forum/topic/154761-rank-storage/#findComment-1022139
Compartilhar em outros sites

1° Se tu for o criador do mapa subwat sou seu fãn muleke!

 

AHEUHAUSE

 

chega de papo go pro script edita ele assim vá ate data/talkactions/scripts e cri um arquivo lua com o nome de ranks ponha isso lá:

---By Léo---

local ranks = {

 

['fist'] = {0},

 

['club'] = {1},

['sword'] = {2},

['axe'] = {3},

['distance'] = {4},

['shield'] = {5},

['fish'] = {6},

['magic'] = {7},

['level'] = {8},

['votos'] = {9},

 

}

 

 

function onSay(cid, words, param)

 

local msg = string.lower(param)

if ranks[msg] ~= nil then

str = getHighscoreString((ranks[msg][1]))

else

str = getHighscoreString((9))

end

doShowTextDialog(cid,6500, str)

return TRUE

 

end

 

agora vá abra talkactions.xml e adicione essa tag

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

 

 

Em vermelho é o novo !rank que foi added!

 

Ajudei?

REP +

PLXX

Link para o comentário
https://xtibia.com/forum/topic/154761-rank-storage/#findComment-1025024
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...