Ir para conteúdo

getSpectatorsFromArea


Oneshot

Posts Recomendados

Como eu acho que a função getSpectators é um pouco complicadinha de mexer, pois precisa de vários parâmetros, digamos, complicados, fiz ela um pouco mais versátil, precisando apenas da posição superior-esquerda e da posição inferior-direita.

 


function getSpectatorsFromArea(fromPosition, toPosition, multifloor)
   local lenght = ((math.max(fromPosition.x, toPosition.x) - math.min(fromPosition.x, toPosition.x)) * 0.5) + 1
   local width = ((math.max(fromPosition.y, toPosition.y) - math.min(fromPosition.y, toPosition.y)) * 0.5) + 1

   if multifloor == true then
       local ret = {}
       for f = math.min(fromPosition.z, toPosition.z), math.max(fromPosition.z, toPosition.z) do
           local tmp = getSpectators({x = math.min(fromPosition.x, toPosition.x) + lenght, y = math.min(fromPosition.y, toPosition.y) + width, z = f}, lenght, width, false)
           for k = 1, #tmp do
table.insert(ret, tmp[k])
end
       end
       return ret
   end
   return getSpectators({x = math.min(fromPosition.x, toPosition.x) + lenght, y = math.min(fromPosition.y, toPosition.y) + width, z = fromPosition.z}, lenght, width, false)
end

 

Caso você use a opção multifloor, a função retorna uma tabela com todos os spectators do intervalo dos floors das posições.

 

getSpectators({x = 100, y = 100, z = 7}, {x = 200, y = 200, z = 11}, true)

 

No caso acima retornaria todos os spectators do floor 7 ao floor 11

 

Abraços.

Editado por Oneshot
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...