В очередной раз решил размяться в c# и сбацал, на мой взгляд, весьма полезную для сервера программку.
Эта программа позволяет расширить или заменить функции распространённых командеров (SC, PowerDaemon, и, пожалуй, любых других).
Или даже создать свой собственный командер с нуля.
При запуске одновременно с имеющимся комадером, никакого влияния на его обмен с сервером эта программа не оказывает.
В чём суть?
Эта программа - "обёртка" для обычного иловского сервера, позволяющая программно получать события из лога и строки из консоли сервера и передавать их любому количеству самодельных плагинов, а также отправлять из этих плагинов команды серверу, не задействуя TCP-консоль.
Консольный порт по прежнему абсолютно свободен для существующих командеров.
В консольное окно программы (заменяющее окно самого сервера) выводятся как консоль сервера, так и строки из лога.
Русские буквы в консоли отображаются корректно.
Точнее, корректно будут отображаться все буквы в кодировке системы, на которой установлен сервер (если русская локаль, то русские, если немецкая, то немецкие, если китайская, то китайские...)
В приложенном архиве - сама программа, файл её настроек (с путём установки сервера и именем исполняемого файла сервера), интерфейс Interface.dll и папка с плагином, собирающем логи сервера в папку Logs, с сортировкой в подпапках по году, месяцу и дню. На каждую новую миссию заводится новый файл лога консоли и логфайла с временем начала миссии и её названия в имени файла.
Порядок установки:
1. Установить net.framework4 с сайта microsoft.
2.Обязательно!!! переименовать файл сервера (il2server.exe), например, в il2fb.exe.
3. Распаковать содержимое архива в папку с сервером
4. Открыть файл il2server.exe.config в текстовом редакторе (блокнот, например) и вписать путь к серверу и имя исполняемого файла (во что переименовали il2server)
После этого, можно как обычно запускать или из командера, или непосредственно файл программы (сервер она запустит самостоятельно).<setting name="Serverpath" serializeAs="String">
<value>D:\server</value>
</setting>
<setting name="Serverexe" serializeAs="String">
<value>il2fb.exe</value>
</setting>
Внимание!
Если на компьютере установлено несколько серверов, то необходимо, чтобы имена исполняемых файлов серверов не совпадали.
Эта программа, при запуске, ищет среди процессов, процессы с именем исполняемого файла, прописанного в конфиге программы, и убивает все такие процессы.
В следующем посте будут исходники плагина на с# и пример плагина на VisualBasic
Итак...
Вторая версия.
Теперь основной функционал вынесен в файл IL2SERVER.dll.
Как и обещал - организован сбор статистики пилотов за сессию на сервере во встроенную таблицу.
Собирать статистику (опрашивать сервер), программа может как самостоятельно, так и с помощью Геннадьичевского SC.
посмотреть что и как собирается можно с помощью плагина TestPlugin, набрав в консоли программы команду l (малое латинское эль), ну и "энтенр".
Если программа запущена вместе с SC от Геннадьича, то таблица пилотов на сервере будет заполняться без дополнительных действий, если без SC, то чтобы таблица полностью заполнялась, нужно ввести в консоли команду start. Чтобы остановить сбор статистики - команду stop.
Из необычного - состояние игрока теперь формируется в виде строки символов, каждый из которых соответствует тому или иному событию с пилотом или самолётом.
Например, строка "MofWHKs" Означает, что из меню (M) появился на поле, занял самолёт(o), взлетел (f), пилот был ранен (W), тяжело ранен(H), убит(K), самолёт сбит(s). (большие буквы - события, относящиеся к игроку(пилоту), маленькие - к самолёту)
Полный перечень событий есть в документации (INTERFACE.XML) к файлу INTERFACE.dll, ну и в следующем, сообщении как и полный перечень собираемой статистики (колонки таблицы).
Кроме всего прочего, в таблице есть ещё 2 столбца - координаты начала (первое появление на поле или взлёта) и конца вылета (последние координаты, которые появились в логе).
Добавлено 20.10.2010
В архиве ServerCommander.rar обновлён до версии 2.1.0.0 файл IL2SERVER.dll.
Исправлен баг с пропуском событий отключения игроков