Например, хотим сделать сообщение из какого-то скрипта в общую таблицу сообщений:
robot.lua (в общем случае будет несколько скриптов-роботов, которые пишут сообщения в таблицу)
require('StaticVar')
function robotMessage(key, str)
stv.UseNameSpace('RobotMessages')
if str == nil then stv.SetVar(key, nil);
else stv.SetVar(key, str);
end
end
function main()
while IS_RUN do
stv.UseNameSpace('RobotMessages')
if ... then robotMessage('YNDX', 'ошибка работа') end
sleep(1000)
end;
end
А это отдельный скрипт, который перерисовывает таблицу через какой-то отрезок времени (здесь через секунду):
messages_table.lua
require('StaticVar')
function main()
while IS_RUN do
stv.UseNameSpace('RobotMessages')
local id = getRobotMessagesTableId()
local arr = stv.GetVarList()
local keys = {}; for key,val in pairs(arr) do if val then table.insert(keys, key) end end;
table.sort(keys);
local nRows, nColumns = GetTableSize(id)
for i=1,#keys do
if i > nRows then InsertRow(id, -1); end
SetCell(id, i, 1, keys[i])
SetCell(id, i, 2, arr[keys[i]][1])
end
for i=#keys+1,nRows do DeleteRow(id, i) end
sleep(1000)
end;
end
У меня сообщений мало оказалось, поэтому, в общем, доработки не требуются, но если будет большой объем данных, могут быть тормоза. По поводу уведомлений - логично оповещать скрипт о появлении сообщения (то есть о добавлении/изменении переменной в пространстве имен RobotMessages), а не заставлять его запрашивать данные каждую итерацию, как в примере выше.