RE:NODE

Руководства12 мин чтения

Админ-команды Project Zomboid, уровни доступа и safehouse

Админ-аккаунт Project Zomboid, все уровни доступа и их возможности, полный список команд, баны и белые списки, настройки safehouse и логи.

0 прочтений

В Project Zomboid нет RCON. Администрирование происходит в двух местах: в консоли сервера и в игровом чате у персонажа, вошедшего под аккаунтом с уровнем доступа. Аккаунт по умолчанию называется admin, его пароль задаётся при первом запуске, а всё остальное - кики, баны, белые списки, выдача предметов, погода, споры о safehouse - проходит через около сорока слэш-команд и одну игровую панель.

Это вся модель, и у неё два следствия, о которых стоит знать, прежде чем кому-то передавать пароль. Нет удалённого админ-протокола, который нужно защищать или который можно оставить открытым, и это одной ошибкой возможных меньше. Но нет и способа выполнить команду, не будучи подключённым к серверу или не стоя у его консоли, и нет встроенного способа дать кому-то право кикать, не дав ему заодно персонажа со сверхспособностями. В этом руководстве разобраны аккаунт, пять уровней доступа, справочник команд, баны и белые списки, система safehouse, которая порождает большую часть споров, и логи, которые понадобятся, когда кто-то скажет, что это был не он.

Настройка админ-аккаунта#

При первом запуске выделенного сервера он запрашивает в консоли пароль администратора и не продолжает работу, пока не получит его:

code
Enter new administrator password:Confirm the password:

Имя пользователя - admin. Хостеры, которые запускают сервер за вас, передают учётные данные аргументами запуска (-adminusername и -adminpassword), поэтому на сервере, установленном через панель, этого запроса вы не увидите. На RE:NODE пароль администратора генерируется для каждого сервера при установке, а не поставляется как значение по умолчанию, и показывается вместе с остальными сгенерированными учётными данными сервера.

Чтобы им воспользоваться, подключитесь к своему серверу и войдите с именем admin и этим паролем, а не создавайте персонажа обычным способом. Аккаунт уже существует, поэтому неверный пароль будет отклонён, а не создаст молча второй аккаунт.

Две вещи нужно сделать правильно сразу:

  • Смените пароль, если его хоть раз набирали в окне чата. /changeoption этого сделать не может; остановите сервер и задайте пароль в аргументах запуска или на вкладке Startup панели.
  • Не играйте под админ-аккаунтом. Админские возможности привязаны к персонажу, поэтому легко оставить включённой невидимость или режим бога, а потом гадать, почему вам ничто не может навредить. Держите обычного персонажа для игры и входите как admin только чтобы что-то сделать.

Повышайте других людей, а не делитесь паролем:

code
/setaccesslevel "Bob" "moderator"/grantadmin "Alice"/removeadmin "Alice"

Имя - это имя аккаунта, а не имя персонажа в игре, а кавычки обязательны, если в имени есть пробел. Повышение вступает в силу при следующем подключении этого игрока.

Пять уровней доступа#

Ниже admin есть четыре именованных уровня, а игрок без всех них - обычный выживший:

УровеньПримерно для чего он
adminВсё, включая параметры сервера и выдачу уровней доступа
moderatorМодерация: кик, бан, телепорт, большая часть админ-панели
overseerНаблюдение и управление игроками без полной модерации
gmГейм-мастер: выдача предметов и существ, погода, события
observerУровень только для чтения: смотреть игроков, следовать за ними, ничего не менять

Неприятно то, что точное разграничение разработчики никогда не документировали до конца, и между сборками оно слегка менялось. Считайте таблицу намерением, а не спецификацией, и перед тем как выдать кому-то gm, войдите под тестовым аккаунтом этого уровня и попробуйте две-три вещи, которые вас интересуют. Та же осторожность относится к руководствам, где перечислено, какой команде нужен какой уровень: проверяйте на своём сервере, на своей сборке.

Общий принцип тот же, что в статье субпользователи и минимальные привилегии: тому, кто проводит ваши игровые вечера, нужен gm, а не admin, а тому, кто разбирает споры в два часа ночи, нужен moderator, а не и то и другое.

Справочник команд#

Команды вводятся в игровой чат с ведущим / или в консоль сервера. Аргументы с пробелами берутся в двойные кавычки. Сервер подтверждает каждую команду в консоли, и это самый быстрый способ отличить опечатку от проблемы с правами.

Игроки и модерация:

КомандаЧто делает
/playersПоказывает подключённых игроков
/kick "user" -r "reason"Отключает игрока, причина показывается ему
/banuser "user" -r "reason"Банит аккаунт, добавьте -ip, чтобы забанить и адрес
/unbanuser "user"Снимает бан аккаунта
/banid <SteamID>Банит Steam ID, что переживает новый аккаунт
/unbanid <SteamID>Снимает бан Steam ID
/adduser "user" "password"Создаёт аккаунт на закрытом сервере
/addusertowhitelist "user"Добавляет существующий аккаунт в белый список
/removeuserfromwhitelist "user"Убирает его обратно
/addalltowhitelistВносит в белый список всех, кто сейчас подключён
/setaccesslevel "user" "level"Устанавливает один из пяти уровней
/voiceban "user" -trueОтключает игроку голосовой чат

Игроки и мир:

КомандаЧто делает
/additem "user" "Base.Axe" 1Выдаёт предмет по модулю и типу
/addvehicle "Base.CarNormal" "user"Создаёт транспорт по имени скрипта рядом с игроком
/addxp "user" Woodwork=200Добавляет опыт в одном навыке
/godmod "user" -trueНеуязвимость, обратите внимание на написание
/invisible "user" -trueСкрывает игрока от заражённых
/noclip "user" -trueХождение сквозь стены
/teleport "user1" "user2"Телепортирует первого игрока ко второму
/teleportto x,y,zТелепортирует вас в координаты
/createhorde <count>Создаёт орду там, где вы стоите
/chopperЗапускает событие с вертолётом
/gunshotЗвук выстрела рядом с игроком
/alarmВключает сигнализацию в здании, где вы находитесь
/startrain, /stoprainПогода
/startstorm, /stopweatherЕщё погода
/thunder, /lightningВ вашей позиции
/releasesafehouseОсвобождает safehouse, в котором вы стоите

Сервер и обслуживание:

КомандаЧто делает
/saveНемедленно записывает мир на диск
/quitСохраняет и корректно выключает сервер
/servermsg "text"Рассылает сообщение всем
/showoptionsВыводит текущие параметры сервера
/changeoption <name> <value>Меняет один параметр на лету
/reloadoptionsПеречитывает ini и применяет то, что можно применить
/reloadlua "filename"Перезагружает один файл Lua, для отладки
/checkModsNeedUpdateСпрашивает Steam, обновился ли какой-нибудь мод из workshop
/helpПеречисляет команды, доступные вашему уровню

Названия предметов имеют вид module.type, почти всегда Base.Something, и чувствительны к регистру. Названия транспорта - это скрипты Base.*. Названия навыков для /addxp внутренние: Woodwork, Cooking, Fitness, Strength, Sprinting, Aiming и так далее, а не отображаемые имена с пробелами.

Белые списки, аккаунты и база пользователей#

Два разных механизма определяют, кто попадёт на сервер, и их постоянно путают.

Password= в ini - единый пароль сервера, который вводят при подключении. Он не пускает посторонних, и только.

Open= определяет, как работают аккаунты. При Open=true (по умолчанию) новый игрок при первом входе вводит имя и пароль, и аккаунт создаётся для него. При Open=false подключиться могут только уже существующие аккаунты, и создаёте их вы сами:

code
/adduser "Bob" "a-password-you-tell-Bob"/addusertowhitelist "Bob"

Для уже работающего сервера с Open=true и группой постоянных игроков самый быстрый способ закрыть его - попросить всех подключиться один раз, выполнить /addalltowhitelist, затем поставить Open=false и перезапустить.

Всё это хранится в базе SQLite в Zomboid/db/<servername>.db: аккаунты, хэши паролей, уровни доступа и баны. Практических следствий два: удаление этого файла сбрасывает все аккаунты, включая admin, а его копирование - способ перенести список пользователей на новый сервер, не заставляя всех регистрироваться заново. Копируйте его вместе с сохранением, а не вместо него.

Баны по аккаунту тривиально обходятся созданием нового аккаунта на открытом сервере, для того и существует /banid. Steam ID появляется в серверных логах при каждом подключении, поэтому для нарушителя-рецидивиста порядок такой: найти ID в логе, выполнить /banid, а затем забанить и аккаунт, чтобы имя осталось в записи.

Внутриигровая админ-панель#

Если вы вошли под достаточным уровнем, в интерфейсе игры появляется админская кнопка. Панель - практичный интерфейс для того, что неудобно набирать вручную:

  • Players: список подключённых с позициями, с телепортом, киком и уровнем доступа в меню.
  • Items and vehicles: список для выдачи с поиском, избавляющий от необходимости искать названия Base..
  • Sandbox options: текущие значения sandbox, которые можно менять без перезапуска. Это самый быстрый способ изменить население зомби или редкость добычи для эксперимента, причём изменения применяются к работающему миру.
  • Safehouses: список занятых, с владельцем и участниками, и кнопкой освобождения.
  • Database: список аккаунтов, где можно поменять уровень или пароль без команды.

Всё, что вы меняете здесь, происходит немедленно и записывается в сохранение, а не в <servername>.ini или <servername>_SandboxVars.lua. В этом ловушка: значение, изменённое в панели, переживает перезапуски, потому что оно в сохранении, и когда файл и игра расходятся, побеждает сохранение. Если хотите, чтобы настройка была постоянной и очевидной, задайте её и в файле. Полный список этих значений - в статье настройки сервера Project Zomboid.

Safehouse и почему они вызывают споры#

Правила safehouse - самые социальные настройки на сервере Zomboid, и по умолчанию все они выключены. Каждый из этих ключей находится в <servername>.ini:

КлючПо умолчаниюЧто делает
PlayerSafehousefalseИгроки могут занять здание как safehouse
AdminSafehousefalseАдмины тоже могут занять
SafehouseAllowTrepasstrueПосторонним разрешено заходить
SafehouseAllowLoottrueПосторонним разрешено брать вещи внутри
SafehouseAllowFiretrueОгонь по-прежнему повреждает safehouse
SafehouseAllowRespawnfalseУчастники возрождаются в safehouse после смерти
SafehouseAllowNonResidentialfalseМагазины и склады можно занимать
SafehouseDaySurvivedToClaim0Сколько игровых дней нужно прожить, прежде чем игрок сможет занять
SafeHouseRemovalTime144Часов отсутствия владельца, после которых занятие снимается
DisableSafehouseWhenPlayerConnectedfalseЗащита отключена, пока участник онлайн

Обратите внимание на регистр в SafeHouseRemovalTime, который не совпадает с остальными. В ini есть несколько неровностей, поэтому копируйте ключи из сгенерированного файла, а не набирайте по памяти.

Сочетание, дающее мирный сервер, - PlayerSafehouse=true при SafehouseAllowTrepass=false и SafehouseAllowLoot=false: занятое здание действительно только ваше. Сочетание, порождающее жалобы, - SafehouseAllowTrepass=true при разрешённом мародёрстве, потому что тогда занятие ничего не защищает, а люди думают, что защищает.

SafehouseDaySurvivedToClaim стоит выставить выше нуля на публичном сервере. Это не даёт только что появившемуся игроку занять пожарную часть Rosewood через пять минут после входа, а именно это иначе происходит первым. SafeHouseRemovalTime со значением по умолчанию 144 часа означает, что занятие снимается после шести реальных суток без владельца: на оживлённом сервере уменьшите, для группы, играющей раз в неделю, увеличьте и сообщите людям это число.

DisableSafehouseWhenPlayerConnected требует отдельного предупреждения. Он отключает защиту, когда участник онлайн, что звучит справедливо и означает, что игрока, стоящего в собственной базе, могут ограбить, пока он спит за рулём. Оставьте false, если только вы не ведёте PvP-сервер и не хотите, чтобы рейды были возможны.

Админ, стоящий внутри спорного здания, может выполнить /releasesafehouse, чтобы снять занятие, и этим заканчивается большинство споров. Запишите, что вы это сделали, потому что тот, кто потерял здание, спросит.

Логи и доказательство того, что произошло#

Project Zomboid пишет гораздо больше одного лога. Полный вывод консоли идёт в Zomboid/server-console.txt, а в Zomboid/Logs/ лежат датированные файлы, разложенные по категориям. Точный набор зависит от сборки, но можно ожидать файлы для чата, подключений игроков, действий админов, выполненных команд, операций с предметами, изменений навыков, PvP и изменений карты.

Лог карты - тот, о котором люди не знают. В него записываются изменения мира, сделанные игроками, и именно так вы выясняете, кто разобрал генератор. Лог предметов - способ выяснить, куда генератор делся. Между этими двумя и логом чата на почти любой спор о гриферстве можно ответить, не противопоставляя слово одного слову другого.

Два навыка помогают этому работать. Забирайте логи с сервера по расписанию, а не после инцидента, потому что ротация в конце концов удалит тот день, который вам понадобился: что хранить и как долго - в статье логи, которые стоит хранить. И читайте консоль, а не только ищите по ней: вывод при запуске сообщает, какие моды загрузились, какие типы античита включены и что сервер считает своими настройками. В общем виде это разобрано в статье как читать консоль.

Античит и кики, которые не связаны с читерством#

Сервер поставляется с нумерованным списком проверок античита, AntiCheatProtectionType1 по AntiCheatProtectionType24, каждая - булево значение с парным ...ThresholdMultiplier. Они охватывают невозможное перемещение, телепортацию, дублирование предметов и изменения инвентаря, которые сервер не санкционировал.

Они же дают ложные срабатывания, и обычная причина - моды. Всё, что законно перемещает игрока, меняет скорость движения или выдаёт предметы через собственный интерфейс, может задеть проверку, написанную в расчёте на то, что ничего подобного не бывает. Симптом - игрока раз за разом кикает в определённый момент (посадка в транспорт, использование меню мода), а в консоли названа сработавшая проверка.

Решение - отключить именно эту нумерованную проверку, а не все. Отключение всего списка на публичном сервере означает, что первый же обладатель чит-таблицы сможет выдать себе что угодно, а вы узнаете об этом, только когда экономика потеряет смысл. Если у вас длинный список модов, в статье моды для сервера Project Zomboid описано, как сузить круг подозреваемых, а в статье как держать сервер с модами в чистоте - более общая гигиена.

DoLuaChecksum связан с этим, но отличается. Он кикает клиентов, чьи файлы Lua не совпадают с серверными, что как раз то, что нужно, и как раз то, что ломается, когда у игрока есть лишний клиентский мод. Его отключение - решение о безопасности, а не об удобстве: это проверка, которая не даёт кому-то подсунуть собственную изменённую игровую логику.

FAQ#

Как стать админом на своём сервере Project Zomboid?

Войдите с именем admin и паролем, заданным при первом запуске; на хостинге он генерируется для вас и показывается вместе с учётными данными сервера. Если вы его забыли, остановите сервер и задайте новый в аргументах запуска; сам аккаунт хранится в Zomboid/db/<servername>.db.

Поддерживает ли Project Zomboid RCON?

Нет. RCON-порта нет и удалённого админ-протокола нет. Вы администрируете сервер из его консоли или из-под персонажа, вошедшего под аккаунтом с уровнем доступа, поэтому ограничение доступа к консоли здесь важнее, чем в играх, где всё делает RCON.

Чем белый список отличается от пароля сервера?

Пароль - одна общая строка, которую вводят при подключении. Белый список работает по аккаунтам: при Open=false зайти могут только уже существующие аккаунты, так что вы создаёте их через /adduser и раздаёте индивидуальные учётные данные. Используйте белый список, если когда-нибудь захотите убрать одного человека, не меняя пароль всем.

Можно ли менять настройки sandbox без перезапуска?

Да, через sandbox options в админ-панели, и изменение сразу применяется к работающему миру. Оно хранится в сохранении, а не в <servername>_SandboxVars.lua, поэтому обновите и файл, если хотите, чтобы настройка пережила пересоздание.

Почему игрока постоянно кикает за читерство?

Почти всегда это проверка античита, реагирующая на мод. Найдите нумерованный тип в выводе консоли и отключите в ini именно эту проверку, а не весь список, затем убедитесь, что кики прекратились, прежде чем менять что-либо ещё.

Как отобрать safehouse, который занял кто-то другой?

Встаньте внутри него как админ и выполните /releasesafehouse либо найдите его в списке safehouse админ-панели и освободите там. Занятие также снимается само после SafeHouseRemovalTime часов без владельца, по умолчанию 144.


Комментарии

Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.

0/2000