Olá pessoal, minha dúvida é a seguinte, como usar o comando for nessa situação:
Eu tenho a seguinte função:
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:
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:
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:
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á!