function getRankStorage(cid, value, max, RankName) -- by vodka
local str =""
str = "--[".. (RankName == nil and "RANK STORAGE" or ""..RankName.."") .."]--\n\n"
local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..value.." ORDER BY cast(value as INTEGER) DESC;")
if (query:getID() ~= -1) then k = 1 repeat if k > max then break end
str = str .. "\n " .. k .. ". "..getPlayerNameByGUID(query:getDataString("player_id")).." - [" .. query:getDataInt("value") .. "]"
k = k + 1 until not query:next() end return doShowTextDialog(cid, 2529, str)
end
function onSay(cid, words, param)
local storage,name = 10200, "Rank Test"
return getRankStorage(cid, storage, 10, name)
end






info
Grupo: Conde
Registrado: 18/07/08
Posts: 545
Reputação: +21
Char no Tibia: Nem eu sei
Queria uma talkaction que checasse a storage e a quantidade dela.
como se fosse uma talkaction de !rank, so que ela deve checar a storage 10200 e a quantidade.
ao ser usado o comando !check aparece o livro escrito:
[NOME DO PLAYER] [QUANTIDADE STORAGE]
JOAO 10
MARIA 8
JOSE 1
Como podem ver, no nome do player deve aparecer os nomes dos jogadores que tem a storage (10200) e no quantidade deve mostrar o value da storage (quantidade de storage ele tem), deve ser ordenado da maior quantidade de storage para menor
consegui montar um script que pega o nome do player que tiver a storage 10200, agora tem que conseguir editar pra pegar o value da storage (quantidade)
script:
function onSay(cid, words, param) local query, msg = db.getResult("SELECT name FROM players WHERE id IN (SELECT player_id FROM player_storage WHERE key = 10200);"), "" if (query:getID() ~= -1) then while (true) do local name = query:getDataString("name") msg = msg..name.."\n" if not(query:next()) then break end end end return doShowTextDialog(cid, param, msg) and true end