34 lines
1.4 KiB
Lua
34 lines
1.4 KiB
Lua
-- Демонстрация чат-хендлера
|
||
-- главная программа крутится в бесконечном цикле, рисуя точку раз в секунду,
|
||
-- как бы сигнализируя о том что основной цикл живой;
|
||
-- в это вреемя (по идее параллельно основному циклу),
|
||
-- при получении чат сообщения должна вызываться функция onChat_handler(),
|
||
-- имеющая доступ к глобальным переменным всей программы (тестируем на переменной num_calls)
|
||
|
||
-- реально на время вызова onChat основной поток ставится на паузу,
|
||
-- иначе возможны дикие проблемы синхронизации! вплоть до вылета с критом ООГ
|
||
|
||
-- по всем идеям хендлер onChat должен максимально БЫСТРО отработать
|
||
-- дабы не замедлять оснвной цикл АИ - типа что-то поменять в глобальных переменных
|
||
-- или другое, быстрое действие
|
||
|
||
num_calls = 0; -- сколько раз был вызван onChat_handler()
|
||
|
||
function onChat_handler( senderID, channelID, msg, from )
|
||
num_calls = num_calls + 1;
|
||
l2h_print( "onChat: OID [", senderID, "] ", channelID, ": [", msg, "] from [", from, "]\n" );
|
||
end
|
||
|
||
l2h_print( "onChat test started!\n" );
|
||
-- зарегаемся в ScriptEngine чтобы onChat_handler() вызывалась при каждом чат-сообщении
|
||
sys_register_onChat( "onChat_handler" );
|
||
|
||
while( true ) do
|
||
l2h_print( ".\n" );
|
||
if( sys_should_exit() ) then break end -- выход из бесконечного цикла когда нажали "стоп скрипт"
|
||
l2h_delay( 1000 );
|
||
end
|
||
|
||
l2h_print( "onChat was called ", num_calls, " times.\n" );
|
||
l2h_print( "onChat test end.\n" );
|