Veículos estão entre os mods mais pedidos pela comunidade, principalmente porque muitos packs da Build 41 nunca foram atualizados. Também estão entre os mais complicados. Este guia junta o que aprendemos com ChileCars (viaturas dos Carabineros, a polícia chilena, táxi, caminhão dos correios) e Wanaco (o caminhão lança-água, que no Chile chamam de guanaco).
As peças de um veículo
| Peça | Onde | O que é |
|---|---|---|
| Modelo 3D | media/models_X/vehicles/ | A carroceria (uma única malha com um único mapa UV) |
| Textura | media/textures/Vehicles/ | A pintura, mais uma máscara para as luzes |
| Script do modelo | media/scripts/ | model com shader = vehicle |
| Script do veículo | media/scripts/vehicles/ | Físicas, rodas, portas, assentos, motor, luzes |
| Nome | Translate/<IDIOMA>/IG_UI.json | "IGUI_VehicleName<NombreDelScript>": "Nombre visible" |
| Aparição no mapa | Lua | VehicleZoneDistribution |
O erro do "veículo fantasma"
Sintoma: o veículo aparece, mas só dá para ver a sombra dele.
Causa: no script do veículo, o modelo foi escrito sem módulo (file = Wanaco_GuanacoActros). Sem módulo, o jogo só procura no módulo Base.
Solução: escreva sempre o módulo: file = Wanaco.Wanaco_GuanacoActros.
Físicas: não exagere
- Massa (
mass): mantenha dentro dos valores vanilla, até ~1160. Com 2400 o Wanaco acelerava o motor mas não saía do lugar. - Força do motor (
engineForce): até ~7000, o máximo vanilla. - Rodas: o jogo simula só 4 rodas. Se o seu caminhão tem mais eixos, os outros são só parte do modelo. Todas as rodas vanilla usam
radius = 0.15. - Escala: os modelos de veículos são escalados em ×1,82. Leve esse fator em conta ao posicionar rodas, portas e caixas de colisão.
Textos e logos: o jogo mostra eles espelhados
Os veículos são desenhados espelhados da esquerda para a direita em relação a como você vê no Blender ou no seu visualizador. Se você pintar "CARABINEROS" na porta, no jogo vai aparecer ao contrário.
Solução: pinte os textos espelhados na textura. Um texto de várias palavras é espelhado como um bloco inteiro. Para conferir antes de abrir o jogo, inverta horizontalmente o seu render de teste.
Luzes
As luzes (faróis, luz de freio, giroflex) são marcadas numa máscara de cor separada: cada área da textura é pintada com uma cor exata que o shader reconhece. As cores estão no shader do jogo (media/shaders/vehicle.frag). Nós usamos isso para o giroflex das viaturas.
Fazer ele aparecer no mapa
É assim que o Wanaco faz (media/lua/shared/Wanaco_VehicleZones.lua), para aparecer nas delegacias:
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()Existem zonas para estacionamentos, ruas, polícia, bombeiros etc. Para ver todas, procure VehicleZoneDefinition.lua dentro de media/lua/ na pasta de instalação do jogo.
Um sistema próprio (o canhão de água)
Se o seu veículo faz algo especial, como disparar água, siga o padrão de Lua para mods: o jogador pede pelo cliente e o servidor aplica. Guarde o estado no modData de uma peça do veículo e sincronize com vehicle:transmitPartModData(part).