caotic 393 Postado Setembro 16, 2012 Share Postado Setembro 16, 2012 (editado) Tava sem nada para fazer e fiz estas funções. São quatro funções que verificam o player por alguma coisa x. Crie um arquivo lua em lib chamado funcby.lua e coloque isto: function getPlayersByItem(itemid) local y = {} for _, pid in ipairs(getPlayersOnline()) do if getPlayerItemCount(pid, itemid) > 0 then table.insert(y, pid) end end return y end function getPlayersByVocation(voc) local players = {} for _, pid in ipairs(getPlayersOnline()) do if getPlayerVocation(pid) == tonumber(voc) then table.insert(players, pid) end end return players end function getPlayersByMoney(money) x = {} for _, pid in ipairs(getPlayersOnline()) do if getPlayerMoney(pid) > tonumber(money) then table.insert(x, pid) end end return x end function getPlayersByLevel(level) local z = {} for _, pid in ipairs(getPlayersOnline()) do if getPlayerLevel(pid) > tonumber(level) then table.insert(z, pid) end end return z end Exemplo: function onSay(cid, words, param) for _, i in ipairs(getPlayersByItem(2152)) do doPlayerSendTextMessage(i, MESSAGE_STATUS_CONSOLE_BLUE, "Oi") end return true end Editado Setembro 22, 2012 por caotic Link para o comentário Compartilhar em outros sites More sharing options...
Oneshot 732 Postado Setembro 16, 2012 Share Postado Setembro 16, 2012 Isso não vai funcionar do jeito que você está querendo. Link para o comentário Compartilhar em outros sites More sharing options...
caotic 393 Postado Setembro 16, 2012 Autor Share Postado Setembro 16, 2012 (editado) An? Eu testei. Funciono Normalmente e só uma estrutura de repetição e uma verificação boba Acho que ta faltando table.insert :X Editado Setembro 16, 2012 por caotic Link para o comentário Compartilhar em outros sites More sharing options...
Eskylo 175 Postado Setembro 16, 2012 Share Postado Setembro 16, 2012 Tava sem nada para fazer e fiz estas funções. São quatro funções que verificam o player por alguma coisa x. Crie um arquivo lua em lib chamado funcby.lua e coloque isto: function getPlayersByItem(itemid) for _, pid in ipairs(getPlayersOnline()) do if getPlayerItemCount(pid, itemid) > 0 then return pid end end end function getPlayersByVocation(voc) for _, pid in ipairs(getPlayersOnline()) do if getPlayerVocation(pid) == voc then return pid end end end function getPlayersByMoney(money) for _, pid in ipairs(getPlayersOnline()) do if getPlayerMoney(pid) > money then return pid end end end function getPlayersByLevel(level) for _, pid in ipairs(getPlayersOnline()) do if getPlayerLevel(pid) > level then return pid end end end horrivel, retorna só o 1º player q encaixa na condicao no caso vc teria q criar 1 array e retornar a array, aí ficaria + util Link para o comentário Compartilhar em outros sites More sharing options...
caotic 393 Postado Setembro 16, 2012 Autor Share Postado Setembro 16, 2012 Então ta. Vo editar e fazer melhor. Depois eu faço ele por Database ai player off poderia ser verificado. Link para o comentário Compartilhar em outros sites More sharing options...
Vodkart 1515 Postado Setembro 16, 2012 Share Postado Setembro 16, 2012 só colocar os players numa tabela function getPlayersByVocation(voc) local players = {} for _, pid in ipairs(getPlayersOnline()) do if getPlayerVocation(pid) == tonumber(voc) then table.insert(players, pid) end end return players end Link para o comentário Compartilhar em outros sites More sharing options...
brun123 369 Postado Setembro 22, 2012 Share Postado Setembro 22, 2012 cara: function getPlayersByMoney(money) x = {} for _, pid in ipairs(getPlayersOnline()) do if getPlayerMoney(pid) > tonumber(money) then table.insert(x, pid) return x end end end function getPlayersByLevel(level) local z = {} for _, pid in ipairs(getPlayersOnline()) do if getPlayerLevel(pid) > tonumber(level) then table.insert(z, pid) return z end end end function getPlayersByItem(itemid) local y = {} for _, pid in ipairs(getPlayersOnline()) do if getPlayerItemCount(pid, itemid) > 0 then table.insert(y, pid) return y end end end essas três funções vão retornar no máximo uma tabela com 1 player apenas, pois assim que encontra o primeiro player, ele é inserido na tabela e ao mesmo tempo a função para de ser executada pra retornar um valor. os returns tem que ficar antes do último end Link para o comentário Compartilhar em outros sites More sharing options...
juanterresalmeida 0 Postado Setembro 27, 2012 Share Postado Setembro 27, 2012 boa função irei usa no meu client!!! Link para o comentário Compartilhar em outros sites More sharing options...
dalvorsn 268 Postado Outubro 5, 2012 Share Postado Outubro 5, 2012 Interessante, apesar de ser um loop razoável dependendo da quantidade de players. Por database pode ser feito também, mas ai provavelmente estará trabalhando com numeros bem maiores, terá de redobrar os cuidados para que não fique muito pessada. Link para o comentário Compartilhar em outros sites More sharing options...
MaXwEllDeN 89 Postado Janeiro 4, 2013 Share Postado Janeiro 4, 2013 (editado) function getPlayersByLevel(level) local z = {} for _, pid in ipairs(getPlayersOnline()) do if getPlayerLevel(pid) > tonumber(level) then table.insert(z, pid) end end return z end Nesse caso se um amigo meu for level 50 e eu quiser pegar os que tenham no mínimo level 50, meu amigo não vai estar na lista Nesse sim: function getPlayersByLevel(level) local z = {} for _, pid in ipairs(getPlayersOnline()) do if getPlayerLevel(pid) >= tonumber(level) then table.insert(z, pid) end end return z end Não entendi a necessidade de colocar o tonumber alí '-', NUNCA(NUNCA mesmo) ví alguém fazer algo do tipo: local num = "50" print( tonumber(num) + 2) Até porque não há necessidade .-. Editado Janeiro 4, 2013 por MaXwEllDeN Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados