В Project Zomboid нет RCON. Администрирование происходит в двух местах: в консоли сервера и в игровом чате у персонажа, вошедшего под аккаунтом с уровнем доступа. Аккаунт по умолчанию называется admin, его пароль задаётся при первом запуске, а всё остальное - кики, баны, белые списки, выдача предметов, погода, споры о safehouse - проходит через около сорока слэш-команд и одну игровую панель.
Это вся модель, и у неё два следствия, о которых стоит знать, прежде чем кому-то передавать пароль. Нет удалённого админ-протокола, который нужно защищать или который можно оставить открытым, и это одной ошибкой возможных меньше. Но нет и способа выполнить команду, не будучи подключённым к серверу или не стоя у его консоли, и нет встроенного способа дать кому-то право кикать, не дав ему заодно персонажа со сверхспособностями. В этом руководстве разобраны аккаунт, пять уровней доступа, справочник команд, баны и белые списки, система safehouse, которая порождает большую часть споров, и логи, которые понадобятся, когда кто-то скажет, что это был не он.
Настройка админ-аккаунта#
При первом запуске выделенного сервера он запрашивает в консоли пароль администратора и не продолжает работу, пока не получит его:
Enter new administrator password:Confirm the password:Имя пользователя - admin. Хостеры, которые запускают сервер за вас, передают учётные данные аргументами запуска (-adminusername и -adminpassword), поэтому на сервере, установленном через панель, этого запроса вы не увидите. На RE:NODE пароль администратора генерируется для каждого сервера при установке, а не поставляется как значение по умолчанию, и показывается вместе с остальными сгенерированными учётными данными сервера.
Чтобы им воспользоваться, подключитесь к своему серверу и войдите с именем admin и этим паролем, а не создавайте персонажа обычным способом. Аккаунт уже существует, поэтому неверный пароль будет отклонён, а не создаст молча второй аккаунт.
Две вещи нужно сделать правильно сразу:
- Смените пароль, если его хоть раз набирали в окне чата.
/changeoptionэтого сделать не может; остановите сервер и задайте пароль в аргументах запуска или на вкладке Startup панели. - Не играйте под админ-аккаунтом. Админские возможности привязаны к персонажу, поэтому легко оставить включённой невидимость или режим бога, а потом гадать, почему вам ничто не может навредить. Держите обычного персонажа для игры и входите как
adminтолько чтобы что-то сделать.
Повышайте других людей, а не делитесь паролем:
/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 подключиться могут только уже существующие аккаунты, и создаёте их вы сами:
/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:
| Ключ | По умолчанию | Что делает |
|---|---|---|
PlayerSafehouse | false | Игроки могут занять здание как safehouse |
AdminSafehouse | false | Админы тоже могут занять |
SafehouseAllowTrepass | true | Посторонним разрешено заходить |
SafehouseAllowLoot | true | Посторонним разрешено брать вещи внутри |
SafehouseAllowFire | true | Огонь по-прежнему повреждает safehouse |
SafehouseAllowRespawn | false | Участники возрождаются в safehouse после смерти |
SafehouseAllowNonResidential | false | Магазины и склады можно занимать |
SafehouseDaySurvivedToClaim | 0 | Сколько игровых дней нужно прожить, прежде чем игрок сможет занять |
SafeHouseRemovalTime | 144 | Часов отсутствия владельца, после которых занятие снимается |
DisableSafehouseWhenPlayerConnected | false | Защита отключена, пока участник онлайн |
Обратите внимание на регистр в 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. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.