Los vehículos son de los mods más pedidos por la comunidad, sobre todo porque muchos packs de Build 41 nunca se actualizaron. También son de los más complicados. Esta guía junta lo que aprendimos con ChileCars (patrullas de Carabineros, taxi, camión de correo) y Wanaco (el carro lanza-aguas).
Las piezas de un vehículo
| Pieza | Dónde | Qué es |
|---|---|---|
| Modelo 3D | media/models_X/vehicles/ | La carrocería (una sola malla con un solo mapa UV) |
| Textura | media/textures/Vehicles/ | La pintura, más una máscara para las luces |
| Script del modelo | media/scripts/ | model con shader = vehicle |
| Script del vehículo | media/scripts/vehicles/ | Físicas, ruedas, puertas, asientos, motor, luces |
| Nombre | Translate/<IDIOMA>/IG_UI.json | "IGUI_VehicleName<NombreDelScript>": "Nombre visible" |
| Aparición en el mapa | Lua | VehicleZoneDistribution |
El error del "vehículo fantasma"
Síntoma: el vehículo aparece, pero solo se ve su sombra.
Causa: en el script del vehículo, el modelo se escribió sin módulo (file = Wanaco_GuanacoActros). Sin módulo, el juego solo lo busca en el módulo Base.
Solución: escribe siempre el módulo: file = Wanaco.Wanaco_GuanacoActros.
Físicas: no te pases
- Masa (
mass): mantenla dentro de los valores vanilla, hasta ~1160. Con 2400 el Wanaco aceleraba el motor pero no se movía. - Fuerza del motor (
engineForce): hasta ~7000, el máximo vanilla. - Ruedas: el juego simula solo 4 ruedas. Si tu camión tiene más ejes, los demás son solo parte del modelo. Todas las ruedas vanilla usan
radius = 0.15. - Escala: los modelos de vehículos se escalan ×1,82. Ten en cuenta ese factor al posicionar ruedas, puertas y cajas de colisión.
Textos y logos: el juego los muestra al revés
Los vehículos se dibujan espejados de izquierda a derecha respecto a como los ves en Blender o en tu visor. Si pintas "CARABINEROS" en la puerta, en el juego se lee al revés.
Solución: pinta los textos espejados en la textura. Un texto de varias palabras se espeja como bloque completo. Para comprobarlo antes de abrir el juego, voltea horizontalmente tu render de prueba.
Luces
Las luces (focos, stop, balizas) se marcan en una máscara de color aparte: cada zona de la textura se pinta con un color exacto que el shader reconoce. Los colores están en el shader del juego (media/shaders/vehicle.frag). Nosotros los usamos para la baliza de las patrullas.
Que aparezca en el mapa
Así lo hace Wanaco (media/lua/shared/Wanaco_VehicleZones.lua), para que aparezca en las comisarías:
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()Hay zonas para estacionamientos, calles, policía, bomberos, etc. Para ver todas, busca VehicleZoneDefinition.lua dentro de media/lua/ en la carpeta de instalación del juego.
Un sistema propio (el cañón de agua)
Si tu vehículo hace algo especial, como disparar agua, sigue el patrón de Lua para mods: el jugador pide desde el cliente y el servidor aplica. Guarda el estado en el modData de una parte del vehículo y sincronízalo con vehicle:transmitPartModData(part).