Автор: Alexey 17.2.2013, 20:23
Название скрипта: OpChat
Версия скрипта: 1.4 (2013-12-05)
Скрипт для: RusHub 2.3.10 (под более ранними не проверялось)
Автор: Alexey
Описание: Создаёт "комнату" для общения пользователей с указанными профилями.
Зависимости: http://mydc.ru/topic2937.html?view=findpost&p=25266
Особенности:
- Не перебирает всех пользователей хаба при поступлении каждого нового сообщения в комнату, в отличие от http://mydc.ru/topic3838.html.
- Комната может быть скрыта в списке пользователей от профилей, не имеющих права писать в неё.
- Есть краткая история последних сообщений в комнате. При входе участника комнаты на хаб ему разово показываются несколько последних реплик, которых он не видел.
- Возможность установить корректировку времени сохраняемых сообщений (если время на сервере отличается от реального).
- Команды: просмотра онлайн-участников комнаты, обновления списка участников (нужна при изменении профиля пользователя в текущей сессии), просмотра последних сообщений в комнате.
- Меню для команд.
- Поддержка скрипта управления меню.
opchat.lua ( 6.02 килобайт )
: 38
Автор: Panasonic 3.12.2013, 7:18
Ошибка. Как быть?
Цитата
Ошибка в скрипте .../RusHub/scripts/OpChat.lua:109: bad argument #1 to 'ipairs' (table expected, got nil)
Ошибка в скрипте ...\RusHub\libs\files.lua:15: bad argument #1 to 'pairs' (table expected, got nil)
Автор: Setuper 3.12.2013, 11:18
заменить
Код
local tCmds, tOpChat
на
Код
local tCmds, tOpChat = {}
Хотя не совсем понятно как такое могло произойти
Автор: Alexey 5.12.2013, 22:56
Версия 1.4. Добавил сохранение истории комнаты по таймеру (чтоб при аварийном завершении работы хаба в истории комнаты находились более-менее свежие сообщения).
Panasonic, скорей всего ты что-то поменял в скрипте, что и привело к этим ошибкам.
Setuper, давненько не брал шахмат Lua в руки, а? ;)
Такое присваивание всё-равно оставит nil во второй таблице... да и не нужно оно: tOpChat задаётся в OnStartup.
Автор: Setuper 6.12.2013, 9:22
Да, действительно написал не по lua правилам (сделал присвоение по с++ правилам ).
Надо было написать так:
Код
local tCmds, tOpChat = {}, {}
Ну да, tOpChat задаётся в OnStartup, поэтому я и написал, что не понятно как такое могло произойти. Видимо действительно автор что-то поменял.