Ir para conteúdo

Posts Recomendados

Olá, eu fiz uma função bem útil e vou postar aqui:


function getPlayersInArea(fromPos, toPos) -- function by amoeba13
    playersInArea = {}
    for x = fromPos.x, toPos.x do
        for y = fromPos.y, toPos.y do
            for z = fromPos.z, toPos.z do
                totalArea = {x=x, y=y, z=z}
                playerz = getTopCreature(totalArea)
                if isPlayer(playerz.uid) then
                    table.insert(playersInArea, playerz.uid)
                    
                end
            end
        end
    end
    return playersInArea
end

Como usar?

Exemplo:


function onSay(cid, words, param, channel)
    local area = getPlayersInArea({x = 153, y = 50, z = 7}, {x = 156, y = 53, z = 7})
    if area then
        for i = 1, (#area) do
            doTeleportThing(area[i], {x = 160, y = 51, z = 7}, false)
        end
end
return true
end
Editado por amoeba13
Link para o comentário
Compartilhar em outros sites


function getPlayersInArea(fromPos, toPos)

local players = {}

for _, pid in ipairs(getPlayersOnline()) do

if isInRange(getPlayerPosition(pid), fromPos, toPos) then

table.insert(players, pid)

end

end

return players

end

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

  • 3 weeks later...

Por que vocês usam table.insert quando não tem índice/é pra adicionar na última posição?

 

Esse código

playersInArea[#playersInArea + 1] = playerz.uid
Tem uma performance ~20% superior pelos meus testes. É costume ou organização?

 

Aliás, cara, crie uma variável chamada _player, mas não crie uma chamada playerz.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...