txAdmin - это веб-панель, встроенная в каждый артефакт FXServer: запустите сервер без +exec server.cfg, откройте порт 40120, введите PIN из консоли, и у вас появится мастер-аккаунт, который управляет сервером, его рестартами, базой игроков и администраторами. Большинство серверов на этом и останавливаются и используют десятую часть возможностей. Но выживет ли сообщество FiveM в первый год, решают скучные вещи: админские аккаунты с узкими правами, расписание рестартов с предупреждениями, баны, которые учитывают не только имя, но и железо, резервная копия папки txData и веб-панель, которая не открыта всему интернету со слабым паролем.
Руководство предполагает, что сервер уже есть. Получение лицензионного ключа, установка FXServer и написание server.cfg разобраны в статье установка сервера FiveM с txAdmin. Здесь речь о самом txAdmin: страница за страницей, с важными настройками и ошибками, из-за которых люди теряют списки банов.
Что такое txAdmin и где он находится#
txAdmin - не ресурс и не отдельная программа. С начала 2020 года он поставляется внутри FXServer, и когда FXServer запускается без конфига для выполнения, вместо него работает txAdmin, который затем запускает FXServer как дочерний процесс с вашей конфигурацией. В этом вся суть: txAdmin находится снаружи игрового сервера, поэтому может заметить, что сервер завис или упал, убить его и запустить снова, а также вести учёт всех игроков между рестартами.
Что он умеет, списком:
- Разворачивает серверы из рецептов, включая полную установку фреймворков вместе с базой данных.
- Перезапускает сервер по расписанию с предупреждениями в игре, а также автоматически после падения или зависания.
- Ведёт собственную базу игроков - это файл, а не MySQL, - с идентификаторами, временем игры, заметками, предупреждениями и банами.
- Ведёт whitelist по участию в Discord, по роли в Discord, по одобренной лицензии или только для админов.
- Запускает Discord-бота с живым статусным embed и командой для whitelist.
- Показывает живую консоль, графики CPU и памяти, график времени тика и журнал активности сервера.
- Даёт игровое меню (
/tx) для админов: NoClip, телепорт, наблюдение, заморозка, лечение, инструменты для транспорта, баны и предупреждения. - Редактирует `server.cfg` в браузере, с проверкой синтаксиса.
Он не заменяет права ACE. Админ txAdmin управляет веб-панелью и игровым меню, а ACE управляет игровыми командами и ресурсами. Это две отдельные системы, а как их связать, объясняет руководство по правам через Discord.
Первый запуск, PIN и мастер-аккаунт#
При первом запуске txAdmin создаёт папку с данными, занимает TCP-порт 40120 и выводит четырёхзначный PIN и адрес, который нужно открыть:
[txAdmin] Use the PIN below to register:[txAdmin] 1234[txAdmin] Open http://203.0.113.10:40120/ in your browser.Пока аккаунта нет, PIN - единственное, что отделяет весь мир от владения вашим сервером. Любой, кто может достучаться до порта 40120 и прочитать этот PIN, может занять мастер-аккаунт, поэтому регистрируйтесь сразу, а не оставляйте свежий сервер на экране установки на всю ночь.
Регистрация предлагает два пути: привязать аккаунт Cfx.re (тот, которым вы пользуетесь на форуме и в keymaster) или создать логин и пароль. Для мастер-аккаунта лучше привязать Cfx.re, потому что так txAdmin получает и ваш идентификатор FiveM, который нужен игровому меню, чтобы вас узнавать. Резервный пароль к аккаунту можно задать и потом.
Созданный здесь аккаунт - мастер. Он ровно один. У него есть все права, другие админы не могут его удалить, и это единственный аккаунт, который может менять права других админов, не имея all_permissions или manage.admins. Относитесь к нему как к паролю root: один человек, надёжные учётные данные, никому не передавать.
После регистрации начинается мастер настройки. Вы называете сервер и выбираете способ развёртывания: популярный рецепт, URL удалённого рецепта, свой рецепт, вставленный вручную, или существующие данные сервера (уже имеющаяся папка server-data). Точные названия менялись от версии к версии, но эти четыре пути остаются стабильными. Для существующего сервера укажите папку и её server.cfg, и дальше txAdmin берёт управление на себя.
Потерян мастер-аккаунт
Если пароль мастера утерян и аккаунт Cfx.re не привязан, обычный способ восстановления грубоват. Остановите сервер, удалите txData/admins.json (сохранив копию) и запустите снова: txAdmin не найдёт админов, выведет новый PIN, и вы зарегистрируете нового мастера. Все остальные админские аккаунты уйдут вместе с этим файлом, так что потом их придётся создать заново. Сначала именно остановите сервер: txAdmin держит список админов в памяти и записывает его обратно, поэтому правки файла во время работы будут перезаписаны. По сообщениям на форуме Cfx.re, поведение не во всех версиях одинаково, так что если всё происходит не так, как описано, сверьтесь с актуальной документацией txAdmin.
Админы и права#
У каждого модератора должен быть свой аккаунт txAdmin. Общие логины уничтожают то, что txAdmin умеет лучше всего: журнал действий, который показывает, кто кого забанил, кто перезапустил сервер в субботу в 21:00 и кто выполнил команду в консоли.
Админов создаёт на странице Admins мастер или любой, у кого есть manage.admins. Для каждого аккаунта задаются имя, при желании привязанные Cfx.re и Discord ID, и набор прав. Идентификаторы прав в том виде, в каком их хранит txAdmin:
| Право | Что разрешает |
|---|---|
all_permissions | Всё; перекрывает остальные |
manage.admins | Создавать, изменять и удалять админов |
settings.view | Читать настройки (токены скрыты) |
settings.write | Менять настройки |
console.view | Читать живую консоль |
console.write | Отправлять команды в консоль |
control.server | Запускать, останавливать и перезапускать |
commands.resources | Запускать и останавливать ресурсы |
server.cfg.editor | Читать и записывать server.cfg |
announcement | Отправлять объявления |
txadmin.log.view | Читать журнал действий txAdmin |
server.log.view | Читать журнал активности сервера |
И права на игроков и меню:
| Право | Что разрешает |
|---|---|
players.warn / players.kick | Предупредить или кикнуть |
players.ban | Банить и разбанивать |
players.whitelist | Одобрять заявки в whitelist |
players.direct_message | Писать игроку личное сообщение |
players.spectate / players.freeze | Наблюдать или заморозить |
players.teleport | Телепортировать себя или других |
players.heal | Лечить себя или всех |
players.playermode | NoClip, god mode, суперпрыжок |
players.troll | Меню троллинга |
players.remove_ids | Убрать ID или HWID у игрока |
menu.vehicle | Создавать и чинить транспорт |
menu.clear_area | Сбросить область мира |
menu.viewids | Показывать ID игроков в игре |
Права хранятся в txData/admins.json. Разумное разделение для ролевого сервера:
- Стажёры-модераторы:
players.warn,players.kick,players.direct_message,players.spectate,menu.viewids. Достаточно, чтобы разобраться с проблемой на месте, но недостаточно, чтобы создать постоянную. - Модераторы: всё перечисленное плюс
players.ban,players.whitelist,players.freeze,players.teleport,players.heal,players.playermodeиserver.log.view, чтобы они могли проверить, что произошло, прежде чем действовать. - Администраторы: всё перечисленное плюс
control.server,commands.resources,announcement,console.viewиsettings.view. - Разработчики:
console.view,console.write,commands.resources,server.cfg.editor. Банить кого-либо разработчикам нужно редко.
Два права требуют осторожности. console.write - это по сути полный контроль: консоль сервера может останавливать ресурсы, менять convar и запускать всё, что ресурс предоставляет в виде команды. server.cfg.editor может изменить лицензионный ключ, строку подключения к базе данных и список ACE, а значит, выдать игровые права кому угодно. Давайте эти два права только тем, кому вы доверили бы и пароль мастера. players.troll забавен примерно неделю, а потом становится темой жалоб; большинство серьёзных серверов отключают его для всех.
Чтобы игровое меню работало, у аккаунта админа должен быть привязан идентификатор Discord или Cfx.re. Без них /tx ничего не делает, и это самая частая причина жалобы «меню сломано». Общий довод в пользу узкого доступа тот же, что в статье субпользователи и принцип наименьших привилегий.
Рецепты и deployer#
Рецепт - это YAML-файл, который объясняет deployer, как собрать сервер: что скачать, куда положить, какой SQL выполнить и что записать в server.cfg. Популярные рецепты в мастере настройки (cfx-default, ESX, QBCore и другие) поддерживаются в публичном репозитории, а для сервера, который вы часто пересобираете, можно написать свой.
$engine: 3$minFxVersion: 5181$onesync: onname: Longship baseversion: 1.0.0author: Longship staffdescription: Default resources plus our own core pack.tasks: - action: download_github src: https://github.com/citizenfx/cfx-server-data subpath: resources dest: ./resources/[cfx-default] - action: download_file url: https://example.com/longship-core.zip path: ./tmp/core.zip - action: unzip src: ./tmp/core.zip dest: ./resources/[core] - action: connect_database - action: query_database file: ./resources/[core]/install.sql - action: write_file file: ./server.cfg data: | endpoint_add_tcp "{{serverEndpoints}}" endpoint_add_udp "{{serverEndpoints}}" sv_maxclients {{maxClients}} sv_licenseKey "{{svLicense}}" set mysql_connection_string "{{dbConnectionString}}" ensure [cfx-default] ensure [core] - action: remove_path path: ./tmpЗначения $engine, $minFxVersion и номера сборок выше приведены для примера; актуальные берите из документации по рецептам в репозитории txAdmin. Набор действий в задачах фиксирован: download_github, download_file, unzip, move_path, copy_path, remove_path, ensure_dir, write_file, replace_string, connect_database, query_database и load_vars. Переменные вроде {{svLicense}}, {{dbConnectionString}}, {{serverEndpoints}} и {{maxClients}} заполняются тем, что вы вводите в deployer.
Рецепты ограничены папкой развёртывания, поэтому рецепт не может перезаписать admins.json или что-либо ещё за её пределами. Это ограничивает ущерб, но рецепт от незнакомца всё равно не становится безопасным: он скачивает и запускает любые ресурсы, которые в нём названы, а те работают с полным серверным доступом. Читайте чужой рецепт перед развёртыванием так же, как читали бы ресурс. Рецепт - это отправная точка, а не выбор фреймворка; решить, какой из них вам нужен, поможет сравнение фреймворков.
Если развёртывание обрывается на полпути, обычные причины такие: лимит запросов GitHub (в рецептах с множеством задач download_github стоит закрепить ref), база данных, до которой deployer не может достучаться, или ссылка на скачивание, которая переехала. Лог deployer называет задачу, которая не выполнилась; устраните причину и разверните заново в пустую папку.
Живая консоль и журнал сервера#
Страница Live Console - это вывод самого FXServer в браузере, с командной строкой, историей и поиском. Всё, что можно ввести в терминал FXServer, работает и здесь: ensure myresource, чтобы перезапустить один ресурс, refresh, чтобы подхватить новую папку ресурса, status, чтобы увидеть подключённых игроков. Каждая отправленная команда записывается в журнал действий на имя админа, который её отправил.
Журнал сервера - это другая страница и другая сущность: хронология подключений, выходов, смертей, чата, взрывов и действий админов. Когда кто-то оспаривает бан, здесь можно выяснить, что происходило до него, и именно поэтому server.log.view стоит давать модераторам, которые выдают баны.
График производительности на дашборде показывает, сколько времени главный поток сервера тратит на тик, по интервалам, рядом с числом игроков. Это самый быстрый способ отличить проблему ресурса от проблемы мощности, подробно разобранную в руководстве по resmon и производительности. Общий навык выбирать нужные строки из шума описан в статье как читать консоль.
Рестарты по расписанию и обработка падений#
FXServer и фреймворки поверх него не рассчитаны на работу неделями. Память растёт, число сущностей накапливается, и рестарт каждые несколько часов - обычная практика на любом загруженном ролевом сервере. В настройках Restarter txAdmin принимает список времён в 24-часовом формате HH:MM:
Restart schedule: 06:00, 14:00, 22:00Время указывается по часовому поясу хост-машины, а на арендованном сервере он часто не ваш. Прежде чем доверять расписанию, сверьтесь с часами на дашборде txAdmin. Перед каждым плановым рестартом txAdmin объявляет о нём в игре за 30, 15, 10, 5, 4, 3, 2 и 1 минуту и в те же моменты вызывает событие txAdmin:events:scheduledRestart со значением secondsRemaining. Фреймворки и ресурсы инвентаря слушают это событие и txAdmin:events:serverShuttingDown, чтобы сохранить данные игроков до завершения процесса, поэтому рестарт через txAdmin безопасен, а завершение процесса снаружи - нет.
AddEventHandler('txAdmin:events:scheduledRestart', function(data) if data.secondsRemaining == 60 then -- осталась минута: сохраняем всех сейчас TriggerEvent('longship:saveAllPlayers') endend)Админ может пропустить ближайший плановый рестарт с дашборда, если событие затянулось; о пропуске сообщает txAdmin:events:scheduledRestartSkipped. Выбирайте время рестартов вокруг пика нагрузки, а не внутри него. О том, как его выбрать, рассказывает статья расписания рестартов, которые помогают.
Обработка падений автоматическая. Если FXServer завершился, txAdmin запускает его снова. Если сервер перестал отвечать (главный поток заблокирован, heartbeat молчит), txAdmin по тайм-ауту убивает его и перезапускает. Если сервер раз за разом перезапускается из-за зависания, не увеличивайте тайм-аут: что-то блокирует главный поток на секунды, и исправлять нужно это, начав с профилирования.
На RE:NODE вкладка Schedules в панели может запускать бэкапы и действия питания по cron-выражению. Для FiveM оставьте рестарты на txAdmin, а расписание панели используйте для ночного бэкапа, назначив его через несколько минут после рестарта txAdmin, когда база данных спокойна.
Игроки, предупреждения и баны#
txAdmin записывает каждого подключившегося игрока по всем идентификаторам, которые предлагает клиент: license, discord, fivem, steam (если запущен Steam), live, xbl и IP. Он также записывает токены оборудования (HWID), которые сменить сложнее, чем любой аккаунт. База игроков - это файл внутри txData, а не MySQL, поэтому она работает без какой-либо базы данных и переживает смену фреймворка.
Щелчок по игроку открывает его карточку: время игры, первый и последний визит, все идентификаторы, заметки сотрудников и история предупреждений и банов. Заметки недооценены: запись «устно предупреждён о VDM, 14 окт» не даёт одному и тому же разговору повториться четыре раза с четырьмя разными модераторами.
Предупреждения показываются на экране игрока в виде полного оверлея, который нужно подтвердить, и сохраняются в его карточке. Это правильный инструмент для первого нарушения, потому что игрок не может сказать, что не видел. Если игрок не в сети, предупреждение покажется при следующем входе.
Баны задаются причиной и сроком: один из пресетов, произвольная длительность или навсегда. Бан привязывается к идентификаторам и, если в настройках банов включён бан по HWID, ещё и к токенам оборудования, так что забаненный игрок, который завёл новые аккаунты Rockstar и Discord, всё равно будет пойман. В недавних версиях можно сохранять шаблоны банов (пары «причина и срок», например «Combat logging, 2 days»), чтобы модераторы применяли одно правило одинаково. У каждого бана есть ID действия, который игрок видит в сообщении об отказе, и именно на него он ссылается в апелляции.
Баны снимаются из карточки игрока или со страницы истории, и снятие записывается на имя админа, который это сделал. Если бан задел невиновного, живущего с забаненным в одной квартире или использующего то же оборудование, players.remove_ids позволяет старшему админу удалить из карточки конкретный идентификатор или HWID вместо того, чтобы разбанивать исходного игрока.
txAdmin умеет и чистить собственную базу: игроков, не заходивших долгое время, а также старые предупреждения, баны и записи whitelist - это делается в настройках базы данных. На сервере с десятками тысяч случайных посетителей это сохраняет скорость файла и поиска игроков. Очистка удаляет записи навсегда, поэтому сначала сделайте бэкап. О том, как ловить читеров, а не наказывать их постфактум, читайте в статье варианты античита для FiveM.
Режимы whitelist и Discord-бот#
Режимы whitelist: Disabled, Admin-only, Discord server member, Discord server roles и Approved license. Они находятся в настройках менеджера игроков, а настройка через роли Discord, включая токен бота, ID сервера (guild) и members intent, пошагово описана в руководстве по whitelist через Discord для FiveM. Здесь стоит добавить два момента:
- Admin-only - ваш выключатель на время обслуживания. Включите его перед обновлением или починкой базы данных: уже подключённые игроки остаются, а новым сообщают, что сервер закрыт. Потом верните обратно, потому что об этом легко забыть.
- Approved license создаёт заявку с коротким ID, когда незнакомый игрок пытается зайти. Админы с
players.whitelistодобряют её на странице Whitelist или через Discord-бота. Можно также заранее одобрить человека до его первого входа.
Discord-бот выполняет три задачи, когда в Settings, Discord Bot заданы его токен и guild. Он публикует статусный embed, который обновляется раз в минуту и показывает число игроков, аптайм и время следующего планового рестарта: введите /status add в канале, где он должен появиться, и выдайте боту там право Send Messages. Он принимает команду whitelist для одобрения игроков из Discord. И он может показать информацию об игроке. Содержимое embed и его кнопки (до пяти, обычно «Connect» и «Rules») редактируются в виде JSON на той же странице настроек. txAdmin не проверяет этот JSON при сохранении, поэтому если embed перестал обновляться, ищите ошибку на странице System Logs. Подробнее о ботах в целом - в статье Discord-боты для администрирования игровых серверов.
txData: что в ней лежит и как её бэкапить#
Всё, что знает txAdmin, хранится в одной папке, txData, отдельно и от артефакта, и от вашего server-data:
txData/ admins.json admin accounts and their permissions default/ the server profile config.json txAdmin settings (restarter, bot, whitelist...) data/ player database, bans, warnings, whitelist logs/ txAdmin, server and FXServer logsТочная структура внутри папки профиля менялась между мажорными версиями, поэтому воспринимайте дерево как ориентир и смотрите на свою копию. Важно, что вся папка - единое целое: копируйте её целиком и восстанавливайте целиком.
Именно расположение по умолчанию лишает людей списков банов. Начиная с txAdmin 8, по умолчанию это ../txData относительно FXServer в Windows (рядом с папкой артефакта) и ../../../txData от бинарного файла FXServer в Linux, то есть внутри распакованной папки артефакта. Если вы обновляетесь в Linux, заменяя эту папку целиком, txData уходит вместе с ней. Либо перенесите её и укажите txAdmin новое место через переменную окружения TXHOST_DATA_PATH, либо копируйте её перед каждым обновлением.
| Параметр | По умолчанию | Назначение |
|---|---|---|
TXHOST_DATA_PATH | см. выше | Где находится txData |
TXHOST_TXA_PORT | 40120 | Веб-порт txAdmin |
TXHOST_INTERFACE | 0.0.0.0 | Адрес, который слушает txAdmin |
Эти переменные окружения появились в txAdmin 8 и заменяют прежние параметры запуска +set txDataPath, +set txAdminPort и +set txAdminInterface, которые пока работают, но считаются устаревшими. Если заданы оба варианта, приоритет у значения TXHOST_.
Бэкап, который чего-то стоит, состоит из трёх частей: txData, server-data и база данных. Делайте все три перед каждым обновлением артефакта, потому что новый txAdmin может мигрировать свои данные так, что старый их не прочитает; саму процедуру обновления описывает руководство по артефактам. Остановите сервер или хотя бы не копируйте во время рестарта, чтобы config.json и база игроков не были пойманы посреди записи. Затем один раз восстановите копию на тестовом экземпляре - бэкап, который никто не восстанавливал, остаётся гипотезой, как сказано в статье бэкапы, которые действительно восстанавливаются.
На RE:NODE бэкапы, сделанные из панели, охватывают файлы всего сервера, включая txData, хранятся вне машины, могут быть заблокированы, чтобы ротация никогда не удалила копию перед обновлением, и восстанавливаются одной кнопкой. База данных находится в отдельном слоте и требует собственного экспорта.
Защита веб-панели#
Веб-интерфейс txAdmin работает по обычному HTTP на 40120 и по умолчанию слушает все интерфейсы. Веб-панель, которая умеет выполнять команды консоли, - ценная цель, а в интернете полно сканеров, которые знают номер порта.
- Используйте вход через Cfx.re или длинные уникальные пароли. В txAdmin нет собственного TOTP, поэтому аккаунт Cfx.re с включённой двухфакторной аутентификацией - самый надёжный вход для каждого админа.
- Ограничьте порт. Если вы управляете файрволом, разрешите
40120только с адресов, которыми пользуются ваши сотрудники, либо привяжите txAdmin к127.0.0.1черезTXHOST_INTERFACEи заходите по SSH-туннелю. Однострочная команда показана в статье SSH-туннели и проброс портов, а всё остальное - в статье правила файрвола, которые важны. - Поставьте HTTPS, если панель должна быть публичной. Обратный прокси с сертификатом не даст паролям идти по сети открытым текстом. Настройку объясняет статья что делает обратный прокси.
- Никогда не переносите txAdmin на `30120`. Это всё равно запрещено; игровой порт принадлежит FXServer.
- Чистите список админов. Когда модератор уходит, удалите его аккаунт в тот же день. Его роль в Discord и группа ACE существуют отдельно, так что уберите и их.
- Читайте журнал действий. Еженедельный просмотр того, кто выполнял команды консоли, выявляет и ошибки, и взломанные аккаунты.
- Держите FXServer свежим. Исправления безопасности txAdmin поставляются внутри артефактов, поэтому сервер, отставший на три месяца, отстал на три месяца и по панели.
То же рассуждение относится и к устаревшей консоли RCON: оставьте rcon_password незаданным, потому что txAdmin делает всё то же самое по более надёжному каналу. Общий случай разобран в статье безопасное использование RCON.
На RE:NODE тарифы FiveM поставляются с двумя выделенными портами, а ещё можно добавить на вкладке Network, когда txAdmin нужен собственный порт. Субпользователи самой хостинг-панели - отдельный уровень: дайте модератору доступ только к txAdmin, а доступ к панели (файлы, SFTP, бэкапы) оставьте тем, кому иначе понадобился бы мастер-аккаунт.
Диагностика#
PIN не появляется. Сервер запускается с +exec server.cfg, что полностью обходит txAdmin. Уберите это из команды запуска. Если в txData уже есть админ, PIN тоже не появится: txAdmin сразу открывает страницу входа.
Страница txAdmin не загружается. TCP-порт 40120 недоступен снаружи, или txAdmin привязан к 127.0.0.1. Посмотрите в сообщении при запуске адрес, который он вывел, и проверьте порт из другой сети.
Игровое меню ничего не делает. У аккаунта админа не привязан идентификатор Discord или Cfx.re, либо идентификатор не совпадает с тем, который отправляет клиент. Посмотрите в карточке игрока, с какими идентификаторами он реально подключается.
Настройки и админы пропали после обновления. txAdmin читает другую, пустую txData, обычно потому, что в Linux заменили папку артефакта. Восстановите папку или укажите на неё TXHOST_DATA_PATH.
Плановые рестарты происходят в неправильный час. Часовой пояс хоста отличается от вашего. Переведите время в то, что показывают часы txAdmin.
Забаненный игрок вернулся под новым именем. Бан по HWID выключен, либо игрок сменил оборудование. Включите сопоставление по HWID в настройках банов и проверьте в его карточке пересекающиеся идентификаторы.
Discord embed перестал обновляться. JSON embed неверен, либо бот потерял право Send Messages в этом канале. Ошибку называет страница System Logs.
FAQ#
Какой порт использует txAdmin?
По умолчанию TCP 40120. Измените его переменной окружения TXHOST_TXA_PORT в txAdmin 8 и новее или старым convar txAdminPort в более ранних версиях. Он не может делить 30120 с игрой.
Сколько мастер-аккаунтов может быть в txAdmin?
Один. Другим админам можно выдать all_permissions, что даёт все действия, но мастер-аккаунт единственный, и от него зависит восстановление. Храните его учётные данные у одного человека и в менеджере паролей.
Нужен ли txAdmin MySQL?
Нет. База игроков, баны, предупреждения и whitelist хранятся в файлах внутри txData. Вашему фреймворку по-прежнему нужна своя база данных; txAdmin её не использует.
Общие ли баны txAdmin между серверами?
Автоматически нет. Каждый профиль txData ведёт собственную базу игроков, поэтому бан, выданный на одном сервере, на другом не виден, если вы не используете внешнюю систему банов или не выдаёте его заново по идентификатору.
Безопасно ли давать модераторам доступ к консоли?
Доступ к консоли только на чтение, console.view, для большинства сотрудников нормален. console.write позволяет выполнять любую серверную команду, включая остановку ресурсов, поэтому давайте его только тем, кому вы доверили бы мастер-аккаунт.
Что происходит с несохранёнными данными игроков при рестарте через txAdmin?
txAdmin сначала предупреждает игроков и вызывает события рестарта и завершения работы, так что фреймворк, который их слушает, сохраняет всех. Процесс, убитый снаружи txAdmin, не получает предупреждения, и всё несохранённое теряется.


