Ох уж этот Lua, выпендрежный язык. Как перехватить присваивание значения ключу? __index - для чтения значения, а __newindex вызывается только если ключ не существовал до присваивания. А вот просто метаметода для присваивания - не нашел.