На сервере Project Zomboid есть аккаунты, а не просто игроки. Каждый человек заходит со своим логином и паролем, а сервер хранит эти аккаунты в базе данных SQLite в Zomboid/db/<servername>.db. Могут ли незнакомцы создать аккаунт, решает одна строка в ini: Open=true позволяет любому зарегистрироваться при первом входе; Open=false делает сервер доступным только по вайтлисту, и попасть на него могут лишь аккаунты, которые создали вы или которые уже существовали. Чтобы аккуратно закрыть сервер, попросите постоянных игроков зайти один раз, выполните /addalltowhitelist, установите Open=false и перезапустите сервер. Чтобы потом добавить кого-то, выполните /adduser "name" "password" и передайте человеку пароль.
В этом руководстве разобрано, как работают аккаунты и вайтлист, все связанные настройки, добавление и удаление людей, сброс забытого пароля, привязка к Steam ID, которая мешает делиться аккаунтами, вайтлисты с пермасмертью и приём заявок через Discord. Аккаунт администратора и список команд в целом описаны в статье админ-команды Project Zomboid.
Два пароля и зачем нужны оба#
Новые админы на сервере Zomboid путают их чаще, чем что-либо ещё.
- Пароль сервера - это
Password=в<servername>.ini. Все вводят один и тот же пароль на экране подключения. Он не пускает тех, кто просто нашёл ваш адрес, и больше ничего не делает. - Пароль аккаунта принадлежит одному аккаунту. Он задаётся при создании аккаунта - самим игроком при первом входе, если сервер открыт, или вами через
/adduser, если нет, - и подтверждает, что человек, входящий как «Bob», действительно Bob.
Сервер может использовать любой из них или оба. Пароль сервера при Open=true означает, что аккаунт может создать любой, кто знает общий пароль. Open=false без пароля сервера означает, что зайти могут только аккаунты из списка, и пароль сервера ничего не добавляет. Оба сразу - это перестраховка, полезная в основном на время перехода от одной модели к другой.
Где хранятся аккаунты#
Zomboid/ Server/servertest.ini Open, Password and the other keys below db/servertest.db accounts: usernames, password hashes, access levels, bans Saves/Multiplayer/servertest/ players.db charactersБаза данных хранит аккаунт; сохранение хранит персонажа. У этого разделения три полезных следствия:
- Вайп мира не стирает аккаунты. Удалите сохранение, и все зайдут с тем же логином и паролем в свежий мир. Виды вайпов разобраны в статье сброс сервера Project Zomboid.
- Удаление базы данных удаляет все аккаунты, включая
admin, все уровни доступа и все баны. Делайте это, только если действительно хотите начать список игроков с нуля. - Копирование базы данных переносит ваш список игроков. Чтобы поднять второй сервер или переехать к новому хостеру с теми же людьми, скопируйте
db/<servername>.db, переименовав его под новое имя сервера. Никому не придётся регистрироваться заново.
Делайте резервную копию базы данных вместе с сохранением. Её потеря не уничтожит мир, но заставит заново создавать аккаунты и по памяти восстанавливать все баны.
Ключи ini, которые управляют доступом#
| Ключ | По умолчанию | Что делает |
|---|---|---|
Open | true | false делает сервер доступным только по вайтлисту |
Password | пусто | Общий пароль сервера при подключении |
AutoCreateUserInWhiteList | false | При Open=true новые аккаунты добавляются в вайтлист при регистрации |
DropOffWhiteListAfterDeath | false | Убирать аккаунт из вайтлиста, когда его персонаж умирает |
MaxAccountsPerUser | 0 | Сколько аккаунтов разрешено на один аккаунт Steam. 0 - без ограничений |
MaxPlayers | 32 | Слоты |
ServerWelcomeMessage | стандартное | Показывается при входе; хорошее место для правил и ссылки на Discord |
DisplayUserName | true | Показывать имена аккаунтов над игроками |
ShowFirstAndLastName | false | Показывать имена персонажей вместо них или вместе с ними |
Значения по умолчанию немного различаются от сборки к сборке, а в сгенерированном ini у каждого ключа есть комментарий. Некоторые из них заслуживают больше одной строки.
AutoCreateUserInWhiteList нужен для перехода от открытого сервера к закрытому. Держите сервер открытым на выходных запуска с этой настройкой, и все, кто зарегистрировался, уже будут в вайтлисте, когда вы переключите Open на false.
MaxAccountsPerUser важен на серверах со Steam. Аккаунты привязаны к Steam ID, с которого их создали, поэтому лимит 1 или 2 не даёт одному человеку завести пачку альтернативных аккаунтов, чтобы обходить бан или копить ресурсы. На сервере друзей это неважно; на публичном - задайте его.
DropOffWhiteListAfterDeath - переключатель пермасмерти, о нём ниже.
Как закрыть уже работающий сервер#
Обычная ситуация: сервер какое-то время был открыт, появилась группа постоянных игроков, и пора закрыть его от посторонних.
- Попросите всех, кто должен сохранить доступ, зайти один раз, чтобы их аккаунт существовал.
- От имени администратора выполните
/addalltowhitelist. Команда добавляет все аккаунты, известные серверу. - Остановите сервер.
- Установите
Open=falseв ini. - Запустите сервер и попробуйте зайти с новым именем, чтобы убедиться, что вход отклоняется.
Open=falsePassword=AutoCreateUserInWhiteList=falseMaxAccountsPerUser=1/addalltowhitelist добавляет всех, включая незнакомца, который завёл аккаунт прошлой ночью. После этого просмотрите список аккаунтов в админ-панели в игре и уберите тех, кого там быть не должно.
Open - также один из параметров, которые /changeoption может задать на работающем сервере, с последующим /reloadoptions. Это удобно, но впишите значение и в ini, чтобы перезапуск тихо не открыл сервер снова.
Добавление, удаление и баны#
Команды, которые выполняются в консоли или в чате от имени администратора:
/adduser "Bob" "temporary-password-42"/addusertowhitelist "Bob"/removeuserfromwhitelist "Bob"/addalltowhitelist/banuser "Bob" -ip -r "griefing the Muldraugh bakery"/unbanuser "Bob"/banid "76561198012345678"/unbanid "76561198012345678"/setaccesslevel "Bob" "moderator"| Команда | Что делает |
|---|---|
/adduser | Создать аккаунт с паролем, который выбрали вы |
/addusertowhitelist | Добавить в вайтлист уже существующий аккаунт |
/removeuserfromwhitelist | Удалить запись аккаунта из вайтлиста |
/addalltowhitelist | Добавить в вайтлист все существующие аккаунты |
/banuser | Забанить аккаунт; -ip банит ещё и адрес |
/banid | Забанить Steam ID, что не даёт создавать новые аккаунты с того же аккаунта Steam |
/setaccesslevel | Дать аккаунту уровень персонала или none, чтобы его снять |
Имена - это имена аккаунтов, а не персонажей, и кавычки важны, если в имени есть пробел. На сервере с вайтлистом люди попадают на него через /adduser: создайте аккаунт, затем отправьте человеку имя и пароль в личные сообщения. Попросите сменить пароль - игрок может сделать это в чате командой /changepwd "old" "new" на сборках, где она есть; /help покажет команды вашей сборки.
Бан аккаунта на открытом сервере легко обойти - игрок регистрирует новое имя. Держится бан по Steam ID. Steam ID есть в логах подключений сервера для каждого входа, и именно там его можно найти задним числом. Как записывать баны и разбирать апелляции, описано в статье правила сервера, модерация и команда.
Привязка к Steam ID и общие аккаунты#
На сервере со Steam аккаунт привязан к аккаунту Steam, который первым его использовал. Тот, кто знает логин и пароль Bob, всё равно не сможет зайти как Bob с другого аккаунта Steam. Это тихая полезная защита: общие пароли не приводят к общим персонажам, а утёкший пароль - меньшая катастрофа, чем кажется.
Она же объясняет два частых вопроса в поддержку. Игрок, купивший игру на новый аккаунт Steam, не сможет пользоваться своим старым аккаунтом Zomboid, пока администратор не удалит его и не создаст новый. А братьям, делящим один ПК с двумя аккаунтами Steam, нужны два аккаунта Zomboid.
Серверы, запущенные с параметром -nosteam, работают без Steam - для игроков с копиями игры не из Steam. Привязываться там не к чему, поэтому единственная защита - пароль аккаунта, а /banid не на что действовать. На любом сервере без Steam, доступном из интернета, используйте пароль сервера и вайтлист.
Сброс забытого пароля#
Ссылки «забыли пароль» нет. Есть три способа решить проблему - от самого простого до самого ручного.
- Админ-панель. Если вы вошли как администратор, во внутриигровой панели есть просмотр базы данных со списком аккаунтов, где администратор может изменить данные аккаунта. На сборках, где это есть, это самый быстрый путь.
- Удалить и создать заново.
/removeuserfromwhitelist "Bob", затем/adduser "Bob" "new-password". Если сервер отказывает, потому что имя всё ещё существует, удалите строку напрямую, как в третьем способе. В мультиплеере Build 41 персонаж хранится отдельно в сохранении и связан с аккаунтом по имени, поэтому пересоздание того же имени возвращает Bob к его персонажу. Если сервер с модами, сначала попробуйте на тестовом аккаунте. - Напрямую в базе данных. При остановленном сервере таблицу аккаунтов можно править любым инструментом для SQLite. Сначала сделайте копию файла.
$ cp Zomboid/db/servertest.db Zomboid/db/servertest.db.bak$ sqlite3 Zomboid/db/servertest.db ".schema whitelist"$ sqlite3 Zomboid/db/servertest.db "SELECT id, username FROM whitelist;"$ sqlite3 Zomboid/db/servertest.db "DELETE FROM whitelist WHERE username = 'Bob';"Таблица с аккаунтами называется whitelist даже на открытых серверах, и это многих удивляет. Прежде чем что-то менять, прочитайте схему: имена столбцов менялись между сборками, а пароли хранятся в виде хэшей, так что просто вписать новый пароль в таблицу не получится. Безопасное применение прямого доступа - удалить строку и пересоздать аккаунт через /adduser.
Вайтлисты с пермасмертью#
DropOffWhiteListAfterDeath=true удаляет аккаунт из вайтлиста, когда его персонаж умирает. Вместе с Open=false смерть означает, что игрок заблокирован, пока администратор не пустит его обратно.
Некоторые ролевые и хардкорные серверы используют это, чтобы смерть имела значение: каждое возвращение проходит через члена команды, который может потребовать новую анкету персонажа, срок ожидания или просто разговор о том, как это случилось. Лучше всего это работает с ясной письменной политикой - сколько длится ожидание, что нужно для новой анкеты, - иначе каждая смерть превращается в переговоры. Заодно доступность команды становится частью игры: смерть в 3 часа ночи, когда никто из команды не спит, - это заблокированный до утра игрок. Решите, приемлемо ли это, прежде чем включать.
Заявки через Discord#
Большинство сообществ с вайтлистом принимают заявки в Discord. Схема, которая работает:
- Канал для заявок с вопросами в закреплённом сообщении: имя, возраст, если этого требуют правила, часовой пояс, как человек нашёл сервер, и согласие с правилами.
- Член команды рассматривает заявку и, если одобряет, выполняет
/adduserсо сгенерированным паролем. - Пароль уходит заявителю в личные сообщения, никогда не в публичный канал, вместе с просьбой его сменить.
- Заявитель получает роль в Discord, чтобы команда с одного взгляда видела, кто в вайтлисте.
Так вайтлист сохраняет смысл без особых усилий. Слабое место - ручной шаг: кто-то должен выполнить команду. Правильное решение - дать модераторам уровень доступа, достаточный для этого, а не делиться паролем администратора; общая логика объясняется в статье сабюзеры и минимальные привилегии.
В Project Zomboid есть и встроенный мост для чата Discord, который настраивается в ini:
| Ключ | Что делает |
|---|---|
DiscordEnable | Включает мост |
DiscordToken | Токен бота из портала разработчиков Discord |
DiscordChannel | Имя канала для моста |
DiscordChannelID | Числовой ID канала |
Он пересылает чат между игрой и каналом Discord. Вайтлистом он не управляет и аккаунты не создаёт, а токен - это учётные данные: не показывайте ini на скриншотах, а если токен утечёт, перевыпустите его в портале разработчиков. Боты, которые обрабатывают заявки автоматически, существуют как отдельные проекты; более лёгкие способы связать сервер и сообщество разобраны в статье вебхуки Discord для статуса сервера.
Решение проблем#
После закрытия сервера новых игроков не пускает. Это работает вайтлист. Добавьте их через /adduser.
Игрок из вайтлиста не может зайти. Проверьте имя аккаунта, а не персонажа. Затем убедитесь, что он заходит с того аккаунта Steam, с которого создавался аккаунт Zomboid.
После перезапуска сервер снова открылся. Open поменяли через /changeoption, но не в файле ini. Пропишите его в файле.
Всем пришлось регистрироваться заново. Базу данных удалили или заменили, или сервер работает с другим -servername и другой базой. Восстановите файл из резервной копии.
Забаненный игрок продолжает возвращаться. Он создаёт новые аккаунты. Забаньте Steam ID через /banid и задайте MaxAccountsPerUser.
Игрок умер и не может вернуться. Включён DropOffWhiteListAfterDeath=true. Добавьте его обратно через /addusertowhitelist, если правила это позволяют.
FAQ#
Как сделать сервер Project Zomboid доступным только по вайтлисту?
Установите Open=false в ini и перезапустите сервер. Зайти смогут только уже существующие аккаунты. Если люди регистрировались, пока сервер был открыт, сначала выполните /addalltowhitelist, а новых людей добавляйте через /adduser.
Где хранятся аккаунты Project Zomboid?
В базе данных SQLite в Zomboid/db/<servername>.db, в таблице whitelist. Персонажи хранятся отдельно в сохранении мира, поэтому вайп мира не удаляет аккаунты.
Может ли игрок сам сбросить пароль?
На сборках, где она есть, команда /changepwd в чате меняет пароль игрока, если он знает текущий. Для забытого пароля нужен администратор.
Нужен ли пароль сервера, если сервер на вайтлисте?
Нет. Open=false уже ограничивает, кто может зайти. Пароль сервера добавляет второй барьер, что полезно на время перехода от открытого сервера к закрытому.
Почему мой друг не может зайти на мой аккаунт со своего ПК?
Аккаунты на серверах со Steam привязаны к аккаунту Steam, который их создал. Это защита от общих и украденных паролей. Пусть друг заведёт свой аккаунт.
Можно ли перенести список игроков на новый сервер?
Да. Скопируйте Zomboid/db/<servername>.db на новый сервер, переименовав его под имя сервера, если оно отличается. Аккаунты, уровни доступа и баны переедут вместе с ним.




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