Настройка
После установки и настройки локализации (и, в случае необходимости, профилей) обратимся к прочим настройкам скрипта. Большинство из них понятны сразу. Для начала опишу все настройки массива MySettings основного скрипта:
- BotName - имя бота. Можете менять по своему желанию, соблюдая правила для ников;
- FName - путь к папке бота. Об этом было написано в разделе установки скрипта;
- PathSeparator - разделитель пути к файлам и папкам. На PtokaX под Windows можно использовать как "\\", так и "/";
- CmdPrefix - шаблон символов, означающих префикс для команд. По умолчанию задан шаблон для символов "!", "+" и "/"; Обратите внимание на то, что Экзекутор разделяет префиксы для команд Оператора и Пользователя (в стиле Verlihub). Он автоматически обрабатывает флаг {prefix} в файлах меню, заменяя его на соответствующий символ для данного профиля пользователя. Хотя какого-либо разделения по привилегиям согласно префиксам Бот не производит;
- BotDesc - описание бота;
- BotEmail - отображаемый текст в E-Mail бота;
- MenuName - название меню бота. Обязательно после названия должен стоять двойной обратный слэш, например: "Главное меню\\". Можно оставить пустую строку в кавычках, например "", чтобы поместить меню без главного пункта. В файлах меню флаг {menuname} заменяется на это значение;
- IsOPLIstenGags - режим слышимости Операторами Хаба незаметнозаглушенных (незаметная заглушка). 1 - да, 0 - нет;
- IsMGLIsten - режим слышимости общего чата незаметнозаглушенными. 0 - слышат, 1 - не слышат;
- LastMsgChat - посылать или нет список последних сообщений чата при подключении (1-чат, 2-ЛС, 0-выкл);
- LastMsgCount - количество последних запоминаемых сообщений чата;
- isShow - показывать ли бота в списке пользователей на Хабе (1-да, 0-нет);
- txtSeek - просмотр команд на наличие в папке txt файла, с именем вводимой команды с добавлением расширения ".txt" (при наличии будет открыт и содержимое отправлено пользователю) (1-да, 0-нет);
- txtType - тип отправки содержимого текстовых файлов (0 - в чат, 1 - в ЛС);
- isWelcomInfo - отправлять ли при входе информационное приветствие из файлов с именем локализации в папке welcome (1-чат, 2-ЛС, 0-выкл.);
- RestartOnError - перезагрузка скрипта при возникновении ошибки (на PtokaX) (1-да, 0-нет);
- ShowClock - показывать время и дату в списке пользователей (1-да, 0-нет);
- AllowedChars - перечень разрешённых символов ника;
- Birthday - содержит число секунд, прошедшее на момент первого запуска скрипта от начала "эпохи".
При загрузке плагинов их конфигурационные переменные из файла Config.lua также добавляются в общую конфигурационную таблицу Бота. После первого запуска создаётся файл конфигурации Config.cfg, из которого потом загружаются все настройки конфигурационной таблицы MySettings.
Константы, которые настраиваются в самом скрипте:
- localization - тип локализации (сервера);
- DefaultLang - язык по умолчанию (два символа в нижнем регистре из таблицы EkzekutorLangs, должен поддерживаться всеми плагинами);
- isMultilingual - многоязычные функции активны (1-да, 0-нет);
- isSendBotMenu - посылать ли пользователям меню Бота из файла BotMenu.lua (1-да, 0-по запросу, -1-выкл);
- isSendHubMenu - посылать ли пользователям меню Хаба из файла HubMenu.lua (1-да, 0-по запросу, -1-выкл);
- isMixMenus - объединять меню Бота и Хаба по запросу для отправки (1-да, 0-нет);
- isShellEnable - здесь указывается пароль для доступа к Shell и LUA консоли (для админов). Если пароль не задан (пустая строка, ""), то функция консоли отключена;
- sCodePagesEncoding - название используемой кодировки. Эта кодировка указывает, какой файл кодовых страниц будет загружен (в папке PLUGINS должен быть файл с названием CodePages_[кодовая_страница].lua);
- sUnicodeHTMLChars - название кодировки для декодирования Unicode HTML-сущностей. Эта кодировка указывает, какой файл таблиц HTML-сущностей будет загружен (в папке PLUGINS должен быть файл с названием UnicodeHTMLChars_[кодовая_страница].lua);
- iMenuDividerFactor - количество строк меню в одной порции для плавной отправки.
Если константам isSendBotMenu и(или) isSendHubMenu присвоено значение 0, то соответствующее меню будет отсылаться лишь по запросу, по команде !getbotmenu или !gethubmenu. Если присвоено значение -1, то меню не будет отправляться вообще.
В файлах API в папке Бота с названием <название_локализации>.lua есть константа UseLocalCodePages. Если этой константе присвоено значение 1, то для преобразования кодировок будет применяться локальная (собственная) таблица кодировок (CodePages). На Verlihub (под UNIX) можно применять значение 0. Тогда будет использована утилита консоли iconv.В файле verlihub.lua для локализации verlihub также есть константа UseLuaSocket, в которой задаётся режим использования LuaSocket (1-да, 0-нет).
Остальные переменные и константы являются служебными и модификации не подлежат. Переменные, хранящиеся в массиве MySettings загружаются при запуске скрипта из файла Config.cfg. Сюда же записываются переменные активных плагинов. Если этот файл не найден, используются настройки по умолчанию, а файл Config.cfg сохраняется в папку бота. Для этих настроек есть соответствующие команды и пункты меню.
Обратим внимание на файлы, в которых хранится меню: это файлы BotMenu.lua, HubMenu.lua, Menu.lua (в папке плагина соответствующей локализации) (меню Бота, произвольное меню Хаба и меню плагина соответственно). Меню Бота и плагинов менять не рекомендуется (если не знаете, что делаете). В этих меню содержатся команды, которые касаются исключительно бота Экзекутор. А вот в Меню Хаба могут содержаться любые другие команды по желанию администратора. В установочном дистрибутиве присутствуют четыре варианта меню хаба для четырёх типов локализации. Просто переименуйте нужный в HubMenu.lua. При первом запуске, если меню Хаба ещё не переименовано, бот сам попытается найти и переименовать соответствующее заданной локализации меню. В техническом смысле между файлами меню Бота и Хаба нет никаких различий. В файле меню одновременно с самим меню содержится справочная информация о команде, а также разрешения по классам пользователей и локализациям. Таким образом, этот файл является одновременно и содержимым меню, справкой и разрешениями по классам для команд. Справка по командам формируется автоматически на основании содержимого этих файлов и выводится в личном сообщении (если написать в приват Экзекутору или воспользоваться соответствующей строкой меню). Причём эта справка учитывает класс пользователя.
Как уже отмечалось, в папке welcome под именем <имя_локализации>.lua хранятся файлы-скрипты информационного приветствия, которое показывается при входе на хаб. Для каждого класса может быть индивидуальное приветствие типа <имя_локализации>_<класс>.lua. В папке txt хранятся текстовые файлы с именем, которое вы хотите использовать как команды. Содержимое отправляется пользователю, когда он введёт команду с именем содержащегося в этой папке текстового файла (расширение .txt не учитывается, но файл должен его содержать).
Расскажу как устроены файлы меню. В таблице BotMenu, HubMenu или Menu (у плагинов) содержатся элементы - таблицы, ключом которых служит название команды. Пример:
Menu = {
["testcommand"]={
["PROFILES"]={
["verlihub"]={
[3]=1,
[4]=1,
[5]=1,
[6]=1,
[7]=1,
[8]=1,
[9]=1,
[10]=1,
},
["ptokax04"]={
[0]=1,
[1]=1,
[2]=1,
[3]=1,
},
["rushub"]={
[0]=1,
[1]=1,
[2]=1,
[3]=1,
},
["eximius"]={
[0]=1,
[1]=1,
[2]=1,
[3]=1,
},
},
["HELP"]=" - ТЕСТОВАЯ КОМАНДА",
["COMMANDS"]={
"{menuname}ТЕСТОВОЕ МЕНЮ\\Тестовая команда$<%[mynick]> {prefix}testcommand",
},
},
}
Как видите, внутри таблицы команды ["testcommand"] содержатся три таблицы: профилей (["PROFILES"]), команд (["COMMANDS"]) и строка справки по команде (["HELP"]). Строка справки - это строка, которая выводится как подсказка по команде в приват от Экзекутора, когда выводится листинг доступных команд. В таблице ["COMMANDS"] содержится перечень строк меню, которых может быть сколько угодно, через запятую, в виде строковых значений. Строки меню являются элементами таблицы команд. При этом обратите внимание на флаги {menuname} и {prefix}, которые заменяются на название главного пункта меню из настроек скрипта и соответствующий профилю пользователя префикс команд. Для языковой локализации используются флаги {gl:тип_индекс}, где тип - указание на файл языковой локализации, например, Bot (для указания файла языковой локализации бота), Hub или название плагина; индекс - индекс элемента в указанном файле языковой локализации.
Внутри таблицы профилей ["PROFILES"] содержатся перечень таблиц с названием локализаций, в которых будет задействована данная команда. Внутри таблицы с названием локализации идёт перечень профилей, разрешённых для этой команды. Если в перечне профилей нет профиля пользователя, использующего команду, Экзекутор ответит, что команда не разрешена для его профиля. Если для команды не задан блок разрешений или не присутствует текущая локализация, то разрешения для команды не проверяются. Если профиль присутствует в списке, но ему присвоено значение 0, то пользователю не будет отправлено меню этой команды.
Также в файлах Vars.lua плагинов также обычно содержатся различные константы с настройками.