Here is what I have for the player... have not ventured into the traffic system yet though.
You may already have your 3d model named, if not, add a name in your opr file
OPRP
LoadObject Truck.obj
ObjectName CarBody
...
...
EditSurface rlights
SurfaceBlendMode Normal
SurfaceBlendOperation Add
SurfaceDiffuseMap turn3.jpg
SurfaceNormalMap
SurfaceSpecularMap
SurfaceDetailMap
SurfaceShaderSpec
SurfaceShaderEnabled 1
SurfaceFlags
SurfaceTextureFlags
SurfaceSpecular 0
SurfaceShinyness 128
SurfaceDetailAmount 0
SurfaceDetailMapScale 1
SurfaceTextureAnimLayers 1
SurfaceTextureScale 0 1.000000 1.000000
SurfaceTextureOffset 0 0.000000 0.000000
SurfaceTextureAnim 0 0.000000 0.000000
SurfaceTextureStep 0 0.000000 0.000000
SurfaceWaveParams 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
SurfaceNormalMapScale 1
SurfaceDisplacement 0
SurfaceNormalOffset 0
SurfaceNormalMapIntensity 1
SurfaceLuminosity 0
SurfaceDiffuse 1
SurfaceTransparency 0
SurfaceTranslucency 0
SurfaceColor 255 255 255
SurfaceDrawOrder 0
SurfaceNoDebugOverride 0
SurfaceAlphaTestThreshold 127
Then control it from the script.
if (handbrakePressed > 0.1f && gear != -1)
{
GetGameManager().GetWorld().GetObject("VehicleBody").GetMesh("CarBody").GetSurface("rlights").SetColor(1.25, 0.0, 0.0);
if (!aicontrolled && lightson)
{
GetGameManager().GetWorld().GetObject("VehicleBody").GetLight("LeftTailLightGround").SetIntensity( 0.03);
GetGameManager().GetWorld().GetObject("VehicleBody").GetLight("RightTailLightGround").SetIntensity( 0.03);
}
}
else
{
GetGameManager().GetWorld().GetObject("VehicleBody").GetMesh("CarBody").GetSurface("rlights").SetColor(0.7, 0.0, 0.0);
if (!aicontrolled && lightson)
{
GetGameManager().GetWorld().GetObject("VehicleBody").GetLight("LeftTailLightGround").SetIntensity( 0.015);
GetGameManager().GetWorld().GetObject("VehicleBody").GetLight("RightTailLightGround").SetIntensity( 0.015);
}
}