Ir para conteúdo

[Função] Doordertable


Posts Recomendados

Olá galera! Minha primeira contribuição oficial como colaborador. Eu queria fazer uma função que seria quase que uma extensão da getTabHighValue, assim eu decidi criar ou re-criar uma função que ordena a tabela em ordem crescente. Não sei se já existe uma função na própria linguagem lua pura, mas se existir, é desconhecida por mim, então decidi fazer a minha.

 

Oks, lá vamos nós a função.

 

function doOrderTab(tabela, value)

max = nil

for i = 1, table.maxn(tabela) do
valor = value
for a, b in ipairs(tabela) do
if b > valor then
valor = b
end
end
table.remove(tabela, table.find(tabela, valor))
if valor ~= value then
max = max == nil and valor or max .. ", " .. valor
end
end
return max
end

 

1º Parâmetro: Tabela a ser ordenada.

2º Parâmetro: Valor mínimo que o número deve ser para ser considerado na ordem.

 

Exemplos em Talkactions:

 

function onSay(cid, words, param)

t = {}

for pos, pid in ipairs(getPlayersOnline()) do
t[pos] = getPlayerLevel(pid)
end
doShowTextDialog(cid, 2160, doOrderTab(t, 0))
end

 

Ordena o nível dos jogadores online.

 

function onSay(cid, words, param)

t = {500, 700, 400}

doShowTextDialog(cid, 2160, doOrderTab(t, 0))
end

 

Ordena a tabela acima, retornando:

 

700, 500, 400

 

É isso, espero que ajude, até mais galera.

Link para o comentário
Compartilhar em outros sites

Ficou boa a função, existe uma função em lua chamada "table.sort (table [, comp])" que faz isso mesmo.

na sua fução tem uma função que eu não conheço na linguagem padrão lua que é "table.find(tabela, valor)" é uma função sua, criada ou apenas acompanha a biblioteca dos ot servers?

Link para o comentário
Compartilhar em outros sites

É uma função para ot servers, creio que seria algo como:

 

function table.find(t, val)

ret = nil

for pos, mat in pairs(t) do
if mat == val then
ret = pos
break
end
end
return ret
end

 

Ou talvez algo um pouco mais complexo. Até.

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

  • Quem Está Navegando   0 membros estão online

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