Блок:
if not monsters then
...
end
не имеет смысла. В начале программы, вот так как у тебя.
Это же проверка имени того, на кого "сагрился" датчик.
И проверять надо после того как это имя было получено, внутри цикла.
Ты можешь оформить проверку как функцию (и тогда ее можно будет как раз оставить в начале программы):
function isMonster(name)
for i=1, #monsterlist do
if name == monsterlist[i] then return true end
end
return false
end
Тогда внутри цикла, после срабатывания сенсора, можно будет проверить, монстр это был, или нет:
while true do
local _, address, x, y, z, name = event.pull('motion')
if isMonster(name) then
print("Это был моб...")
else
print("Кто-то ломится в дом!")
end
end