Перейти к содержанию

Структура и диагностика модов машин в Project Zomboid Build 42

Учебный обзор структуры модов машин, одной причины появления только тени, авторских наблюдений о физике, зеркальных текстур, масок света и примера появления в зоне. Это не полный проект машины и не гарантированный диагноз.

Учебный обзор на примерах ChileCars и Wanaco: из каких частей состоят моды машин, как проверить одну причину отображения только тени, какие числовые настройки автор наблюдал, как устроены маски света и регистрация появления машины в зоне. Это не полное руководство по созданию или экспорту машины: готовой модели, полного vehicle script и проекта мода в источнике нет.

Автор отмечает, что многие паки Build 41 не обновлены, а создание транспортных модов сложно. В примерах ChileCars — полицейские автомобили Carabineros, такси и почтовый фургон; Wanaco — грузовик с водомётом. Carabineros — национальная полиция Чили; guanaco — чилийское прозвище грузовиков с водомётами. В источнике страница обновлена 10 октября 2026 года, точный минорный билд не указан.

Из чего состоит мод машины

ЧастьРасположениеНазначение по источнику
3D-модельmedia/models_X/vehicles/Кузов: одна сетка с одной UV-картой.
Текстураmedia/textures/Vehicles/Окраска и маска света.
Model scriptmedia/scripts/Объект model с shader = vehicle.
Vehicle scriptmedia/scripts/vehicles/Физика, колёса, двери, сиденья, двигатель и свет.
НазваниеTranslate/<IDIOMA>/IG_UI.jsonКлюч "IGUI_VehicleName<NombreDelScript>": "Display name".
Появление на картеLuaРегистрация через VehicleZoneDistribution.

Совет автора: возьмите за основу похожую стандартную машину и меняйте рабочий пример. Vehicle scripts длинные; источник указывает каталог media/scripts/vehicles/ внутри папки установки игры.

Если видна только «тень»

Описанный симптом: машина появляется, но видна только её тень. Автор связывает один такой случай с тем, что в vehicle script имя модели указали без namespace:

Неуточнённая ссылка из примера источника: file = Wanaco_GuanacoActros

Автор объясняет, что без модуля игра ищет файл только в модуле Base. Для описанного случая он предлагает полное имя:

Исправление в примере источника: file = Wanaco.Wanaco_GuanacoActros

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

Физика: числовые наблюдения автора

  • Масса (mass): автор советует держаться наблюдаемых значений vanilla примерно до 1160. В его примере Wanaco при 2400 набирал обороты, но не двигался.
  • Сила двигателя (engineForce): автор называет ~7000 верхним стандартным значением.
  • Колёса: по наблюдению автора, игра симулирует только четыре; дополнительные оси грузовика остаются частью модели. В стандартных машинах он указывает radius = 0.15.
  • Масштаб: автор сообщает, что модели машин масштабируются ×1.82; предлагает учитывать это при расстановке колёс, дверей и коллизий.

Все числовые значения здесь — наблюдения автора, а не проверенные пределы движка или универсальные требования. Сверьте их с целевым билдом.

Текст и логотипы отображаются зеркально

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

Для проверки автор предлагает зеркально нарисовать надпись на текстуре; фраза из нескольких слов, по его наблюдению, отражается как единый блок. До запуска игры можно горизонтально отразить тестовый рендер. Это поведение не проверялось независимо.

Световые приборы

Фары, стоп-сигналы и маячки обозначаются отдельной цветовой маской: области текстуры закрашиваются точными цветами, распознаваемыми шейдером. Автор указывает, что цвета находятся в шейдере игры media/shaders/vehicle.frag, и рассказывает, что использовал их для световой балки полицейских машин.

Добавить появление машины на карте

Ниже — фрагмент Wanaco из media/lua/shared/Wanaco_VehicleZones.lua, который автор использует для появления машин в полицейских участках. Это пример регистрации зоны, а не полный пакет мода:

Фрагмент Lua из источника (код не дополнялся): require "VehicleZoneDefinition" local function agregarGuanacos() local police = VehicleZoneDistribution and VehicleZoneDistribution.police if not police or not police.vehicles then print("[Wanaco] VehicleZoneDistribution.police no disponible") return end police.vehicles["Wanaco.GuanacoActros"] = { index = 0, spawnChance = 40 } police.vehicles["Wanaco.Guanaco8x8"] = { index = 0, spawnChance = 25 } end agregarGuanacos()

В игре есть зоны для парковок, улиц, полиции, пожарных и других мест. Чтобы найти их список, автор советует открыть VehicleZoneDefinition.lua в каталоге media/lua/ установленной игры. Существование указанной зоны и значения в примере требуется проверить на целевой версии.

Своя система: водомёт

Если машина выполняет особое действие — например, стреляет водой — источник отсылает к схеме из руководства по Lua: клиент отправляет запрос, сервер применяет и синхронизирует изменение. Состояние предлагается хранить в modData одной из частей машины и передавать методом vehicle:transmitPartModData(part). Этот обзор не содержит готового кода водомёта; сетевой пример из связанного материала также намеренно неполон.