Demonbholder 420 Postado Outubro 22, 2011 Share Postado Outubro 22, 2011 (editado) Faaaaaala galera! Tudo tranquilo? Faz um tempão que eu não posto aqui né? Então, eu fiz essa função esses dias e resolvi divulgar porque todo mundo precisa dessa função eventualmente. Como funciona: No primeiro parâmetro você irá colocar o número de storage, o qual você deseja checar o rank. No segundo parâmetro será posto o número mínimo para o jogador entrar no rank, por exemplo, caso você coloque 0 e há algum jogador com -1 no valor de storage, ele não irá entrar na lista. A função retorna uma tabela com os nomes dos jogadores em ordem do maior valor ao menor. Enfim, vamos a função: function getStorageRank(storage, n) local n = n or 0 local data = tonumber(db.getResult("SELECT `id` FROM `players` ORDER BY `id` DESC;"):getDataString("id")) local val, ret, nome, tabela, max = {}, {}, {}, {}, {} for i = 1, data do if tonumber(db.getResult("SELECT `online` FROM `players` WHERE `id` = "..i..";"):getDataString("online")) == 0 then local data = db.getResult("SELECT `value` FROM `player_storage` WHERE `player_id` = "..i.." AND `key` = "..storage..";") resultado = data:getID() == -1 and -1 or tonumber(data:getDataString("value")) name = db.getResult("SELECT `name` FROM `players` WHERE `id` = "..i..";"):getDataString("name") else for _, pid in pairs(getPlayersOnline()) do if getPlayerGUID(pid) == i then resultado = getPlayerStorageValue(pid, storage) name = getPlayerName(pid) end end end table.insert(val, resultado) table.insert(tabela, resultado) table.insert(nome, name) end for i = 1, table.maxn(tabela) do valor = n for a, b in ipairs(tabela) do if b >= valor then valor = b end end table.remove(tabela, table.find(tabela, valor)) table.insert(max, valor) end for i = 1, #max do local pos = table.find(val, max[i]) table.insert(ret, nome[pos]) table.remove(nome, pos) table.remove(val, pos) end return ret end Vamos a um exemplo de uso: function onSay(cid, words, param) for _, t in pairs(getStorageRank(38000, -1)) do print(t) end end Neste exemplo será impresso no distro os nomes dos jogadores em ordem de maior para menor. É isso ai galera, espero que usem, até. Editado Outubro 22, 2011 por Demonbholder Link para o comentário Compartilhar em outros sites More sharing options...
alldakie 160 Postado Outubro 22, 2011 Share Postado Outubro 22, 2011 Sinceramente, parece estar bom, depois testarei, Mais pela iniciativa já garantiu um REP! Link para o comentário Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Outubro 22, 2011 Autor Share Postado Outubro 22, 2011 Função organizada e identada! Removi a função doOrderTab e inclui ela a função principal. Obrigado e comentem! Link para o comentário Compartilhar em outros sites More sharing options...
angeldoido 37 Postado Outubro 22, 2011 Share Postado Outubro 22, 2011 pra que serve seu script ? Link para o comentário Compartilhar em outros sites More sharing options...
jamersonandres 14 Postado Outubro 22, 2011 Share Postado Outubro 22, 2011 opa eu usarei conserteza xD so não do rep porq ja dei amanha tbm nao vai da ! kk meus rep ja e garantido pra os topico amanha e do sky ) Link para o comentário Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Outubro 22, 2011 Autor Share Postado Outubro 22, 2011 Veja bem, isto não é um script e sim uma função. São muitos os sistemas que utilizam storage para guardar um número que aumenta a cada vez que o sistema é usado. Um exemplo é o meu sistema de duelo de summons, ou o sistema de rep do xotservx, entre outros. Valeu pelos comentários. Link para o comentário Compartilhar em outros sites More sharing options...
SkyDangerous 395 Postado Outubro 22, 2011 Share Postado Outubro 22, 2011 Muito bom mesmo ! Merece mais que um REP um beijo Brincadeira , espero um dia eu estar ao seu nivél. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados