Ir para conteúdo
  • 0

[Resolvido] [DÚVIDA]Como usar o for nessa situação ?


Pokeultion

Pergunta

Olá pessoal, minha dúvida é a seguinte, como usar o comando for nessa situação:

Eu tenho a seguinte função:

 

Spoiler

function getMonstersInArea(area)
        local monsters = {} 
        for x = area.fromx, area.tox do
                for y = area.fromy, area.toy do
                        for z = area.fromz, area.toz do
                                monsterpos = {x=x,y=y,z=z,stackpos=253}
                                monster = getThingFromPos(monsterpos)
                                if isMonster(monster.uid) == true then
                                        table.insert(monsters, monster.uid)
                                end
                        end
                end
        end
        return monsters
end

 

 

E a seguinte tabela como exemplo, e como já deve ser definida usando essa função:

Spoiler

local table = {
["indice"] = {
var = 12,
var3 = "Var",
positionsToCheck = {
area1 = {fromx=1, fromy=2, fromz=3, tox=6, toy=7, toz=8},
area2 = {fromx=10, fromy=12, fromz=14, tox=16, toy=18, toz=20}
}, 
}
}

 

Se eu usar a função da seguinte maneira, ela funciona corretamente,a finalidade para qual eu vou usa-la é para remover monstros de uma area:

Spoiler

local monsters = getMonstersInArea(table["indice"].positionsToCheck.area1)
if #monsters > 0 then
for i = 1, #monsters do
doRemoveCreature(monsters[i])
end
end

 

Até ai tudo certo se eu usar dessa forma, como já disse tudo funciona corretamente, no entando, eu preciso que seja configurável quantas posições eu quiser checar para remover os montros, pois as vezes indices diferentes terão numeros de areas diferentes para serem checadas. Para isso, tentei usar o for da seguinte maneira:

Spoiler

for area,_ in pairs(table["indice"].areasToCheck) do
local monsters = myNew({fromx=table["indice"].areasToCheck[areas].fromx, fromy=table["indice"].areasToCheck[areas].fromy, fromz=table["indice"].areasToCheck[areas].fromz}, {tox=table["indice"].areasToCheck[areas].tox, toy=table["indice"].areasToCheck[areas].toy, toz=table["indice"].areasToCheck[areas].toz})
if #monsters > 0 do
for i = 1, #monsters do
doRemoveCreature(monsters[i])
end
end
end

 

Mas fica dando o seguinte erro: for initial value must be a number, algo assim. 

Ainda estou aprendendo a programar e não tenho muito conhecimento, por isso gostaria que me ajudassem e me esclarecessem minha dúvida de como usar o for nessa situação.

Caso não tenha ficado totalmente claro oque eu pretendo fazer, seria basicamente salas para matar monstros, tipo uma quest, só que toda vez que o jogador for entrar se ainda tiver monstros lá eles ser

ão removidos, cada indice da tabela seria uma actionID diferente pra colocar em uma alavanca diferente pra startar a sala. Bom, acho que deu pra entender, espero que me ajudem com essa dúvida, e obrigado desde já!

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

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