Чтобы держать порядок на ванильном сервере, до сих пор приходилось выбирать между внешними RCon-инструментами и модом, который должен установить каждый игрок. Есть третий путь: вся админ-система помещается в init.c миссии.
Никаких модов, никакой установки на стороне клиента, никаких серверных модов. Твои игроки ничего не устанавливают и ничего не замечают — они подключаются как обычно. Кто является администратором, решает SteamID64, а не игровое имя.
Проверено на DayZ 1.29.163451, выделенный сервер под Windows плюс клиент, Черноруссия.
Что внутри
27 команд в чате: телепорт с сохранёнными точками, лечение, режим бога, спавн, кик и бан, погода и время, управление администраторами.
- Машины целиком —
/vehicle sedanставит перед тобой готовый автомобиль: все детали установлены, все четыре жидкости залиты, аккумулятор заряжен. - Оружие целиком —
/weapon m4a1кладёт на землю полностью укомплектованный ствол, магазин вставлен, рядом два полных запасных. - Точки телепорта — 20 мест Черноруссии уже включены, свои добавляешь в игре командой
/addloc. - Список банов, который срабатывает уже при подключении, и журнал каждой выполненной команды.
Какие детали подходят к какой машине, нигде не прописано жёстко. При первом спавне скрипт читает конфиг игры и строит из него индекс по всем слотам. Поэтому работают и машины с оружием из модов — никому не нужно вести таблицу деталей.
Установка
Скопируй init.c в папку миссии, заменив существующий файл. Вся ванильная логика уже внутри, так что ничего не теряется.
DayZServer\mpmissions\dayzOffline.chernarusplus\init.cЗапусти сервер с папкой профиля (-profiles=). При первом старте система создаст там свои четыре файла: список администраторов, список банов, точки телепорта и журнал.
Как стать администратором
Твой SteamID64 — это 17-значное число, начинающееся с 7656119, оно есть в адресе твоего профиля Steam. В dayu_admins.txt пиши по одному в строке:
// DAYU admin list
76561198000000001
76561198000000002Затем в игре набери /reload; перезапуск для этого не нужен. Тот, кто уже администратор, может добавить других через /addadmin <steamid>.
Команды
Открой чат и начни сообщение с /.
- Информация:
/help,/players,/pos - Игрок:
/heal,/god,/kill - Телепорт:
/tp <x> <z>,/goto <место>,/locations,/addloc,/delloc,/tpto,/tphere - Спавн:
/vehicle <название>,/weapon <название>,/spawn <класс> [количество] - Модерация:
/kick,/ban,/unban,/bans - Сервер:
/say,/time,/weather,/admins,/addadmin,/deladmin,/reload
Имена игроков можно сокращать, а SteamID подходит везде, где ожидается имя. Для /vehicle и /weapon достаточно фрагмента: sedan даст CivilianSedan, m4a1 — M4A1.
Пределы ванили
Две вещи скрипт миссии сделать не может.
Набранная команда остаётся видна в чате для всех. Движок сам рассылает сообщения чата, и скрипт этому помешать не в силах. Если это нежелательно, отдавай команды в прямом чате — тогда их прочитают только те, кто рядом.
Настоящий бан на уровне BattlEye невозможен. Здешний список банов — собственный, он выбрасывает игрока при подключении; для жёстких банов используй ещё и BattlEye.
Скачать
github.com/006mi4/dayz-vanilla-admin-menu
Там лежит init.c и подробное руководство на английском со всеми командами. Сам скрипт под лицензией MIT; ванильные части файла принадлежат Bohemia Interactive.