Структура и диагностика модов машин в 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 script | media/scripts/ | Объект model с shader = vehicle. |
| Vehicle script | media/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). Этот обзор не содержит готового кода водомёта; сетевой пример из связанного материала также намеренно неполон.