Volver al blog
Tutorial10 min de lectura

Taller de tuning de vehículos FiveM: crea LS Customs como se debe

Abre un taller de tuning en tu servidor FiveM. Personaliza ruedas, motor y pintura con los mejores scripts de LS Customs para QBCore y ESX.

Agency Scripts

Fundador y desarrollador principal en Agency Scripts

Ajuste de vehículos en el contexto del roleplay

La personalización de vehículos es una de las funciones más populares en cualquier servidor de roleplay de FiveM. Los jugadores invierten mucho tiempo y dinero en sus autos, y un taller de tuning les permite personalizar sus vehículos con mejoras de rendimiento, modificaciones visuales, trabajos de pintura personalizados y piezas de aftermarket. Un sistema de tuning bien diseñado hace mucho más que mostrar en un menú los natives de modificación de vehículos integrados en GTA. Crea todo un ecosistema que incluye talleres mecánicos gestionados por jugadores, precios que sirven como sumideros de dinero para la economía, temporizadores de instalación que generan tiempos de espera realistas y un mercado de piezas donde se pueden conseguir componentes de distintos proveedores y con diferentes niveles de calidad. El taller de tuning se convierte en un centro social donde se reúnen los aficionados a los autos, los mecánicos construyen su reputación y cada vehículo modificado cuenta una historia sobre los gustos y el presupuesto de su dueño.

Comprender las natives de modificación de vehículos de GTA

GTA V expone las modificaciones de vehículos mediante una serie de funciones nativas que te permiten aplicar mejoras a ranuras de modificación específicas. Cada vehículo tiene un conjunto de tipos de modificación identificados por índices numéricos: las mejoras de motor usan el índice 11, los frenos usan el índice 12, la transmisión usa el índice 13, la suspensión usa el índice 15 y las piezas visuales, como alerones, parachoques y faldones, usan los índices del 0 al 10. La SetVehicleMod native aplica una modificación específica de las opciones disponibles para ese modelo de vehículo y tipo de modificación. No todos los vehículos admiten todas las categorías de modificaciones, así que debes comprobar la disponibilidad usando GetNumVehicleMods antes de mostrar las opciones al jugador. Los trabajos de pintura usan natives independientes, como SetVehicleColours para los colores primarios y secundarios, SetVehicleExtraColours para los colores perlados y de las ruedas, y SetVehicleCustomPrimaryColour para los valores RGB personalizados:

-- Mod type indices reference
local ModTypes = {
    spoiler = 0,
    front_bumper = 1,
    rear_bumper = 2,
    side_skirt = 3,
    exhaust = 4,
    frame = 5,
    grille = 6,
    hood = 7,
    fender = 8,
    right_fender = 9,
    roof = 10,
    engine = 11,
    brakes = 12,
    transmission = 13,
    horns = 14,
    suspension = 15,
    armor = 16,
    turbo = 18,
    xenon = 22,
    front_wheels = 23,
    back_wheels = 24,
    plate_holder = 25,
    vanity_plates = 26,
    trim = 27,
    ornaments = 28,
    dashboard = 29,
    dial = 30,
    door_speaker = 31,
    seats = 32,
    steering_wheel = 33,
    shifter_leavers = 34,
    plaques = 35,
    speakers = 36,
    trunk = 37,
    hydraulics = 38,
    engine_block = 39,
    air_filter = 40,
    struts = 41,
    arch_cover = 42,
    aerials = 43,
    trim2 = 44,
    tank = 45,
    windows = 46,
    livery = 48,
}

function GetAvailableMods(vehicle, modType)
    local count = GetNumVehicleMods(vehicle, modType)
    local mods = {}
    for i = 0, count - 1 do
        table.insert(mods, {
            index = i,
            label = GetModTextLabel(vehicle, modType, i) or ('Option ' .. (i + 1)),
        })
    end
    return mods
end

Configuración del taller de tuning

Configura las ubicaciones de los talleres de tuning con los servicios disponibles, los multiplicadores de precios y las categorías de modificaciones que ofrecen. No todos los talleres tienen que ofrecer todos los servicios. Un taller de personalización de alta gama en Vinewood podría especializarse en trabajos de pintura de lujo y modificaciones visuales premium con precios más altos, pero de mejor calidad. Un taller de barrio en el sur de LS podría centrarse en piezas de rendimiento económicas y trabajos básicos de carrocería. Esta diferenciación da a los jugadores motivos para visitar distintos talleres y refuerza la identidad de rol de cada negocio. Cada taller necesita una ubicación física con un punto de entrada para vehículos donde el jugador conduzca su coche hacia el interior, una posición de cámara para previsualizar las modificaciones y, de forma opcional, un MLO interior para el entorno del garaje:

Config.TuningShops = {
    ['benny_motorworks'] = {
        label = "Benny's Original Motor Works",
        coords = vector3(-205.67, -1312.58, 31.30),
        vehicleSpot = vector4(-211.89, -1320.88, 31.09, 178.94),
        camOffset = vector3(0.0, 5.5, 1.5),
        blipSprite = 72,
        categories = {'performance', 'visual', 'paint', 'wheels', 'lights', 'livery'},
        priceMultiplier = 1.0,
        restrictedTo = nil,  -- Open to all
    },
    ['ls_customs'] = {
        label = 'LS Customs - Burton',
        coords = vector3(-347.55, -133.00, 39.01),
        vehicleSpot = vector4(-339.20, -136.73, 39.01, 116.89),
        camOffset = vector3(0.0, 5.0, 1.5),
        blipSprite = 72,
        categories = {'performance', 'visual', 'paint', 'wheels'},
        priceMultiplier = 0.85,
        restrictedTo = nil,
    },
}

Config.ModPrices = {
    engine = {1500, 3500, 6000, 10000},       -- Level 1-4
    brakes = {1000, 2500, 4500, 7500},
    transmission = {1200, 3000, 5500, 9000},
    turbo = {15000},
    suspension = {800, 1500, 2500, 4000},
    armor = {2500, 5000, 10000, 17500, 25000},
    spoiler = 2000,       -- Flat price per option
    front_bumper = 1800,
    rear_bumper = 1500,
    side_skirt = 1200,
    exhaust = 1000,
    hood = 2500,
    roof = 1500,
    paint_standard = 500,
    paint_metallic = 1500,
    paint_custom_rgb = 5000,
    wheels = 3000,
    xenon = 3000,
    livery = 2500,
}

Sistema de previsualización de vehículos en tiempo real

Los jugadores necesitan ver las modificaciones en su vehículo antes de confirmar una compra. Implementa un sistema de previsualización en directo que aplique temporalmente las modificaciones seleccionadas al vehículo mientras el jugador explora las opciones, y luego revierta todos los cambios si cancela o aplique solo las modificaciones compradas. Cuando el jugador entre en el menú de tuning, guarda las propiedades actuales del vehículo como una instantánea. Mientras explora distintas opciones, aplica cada modificación temporalmente usando las natives de modificación de vehículos para que el cambio se vea de inmediato. Si el jugador selecciona otra opción de la misma categoría, revierte la modificación temporal anterior antes de aplicar la nueva. Cuando el jugador confirme una compra, la modificación pasa a ser permanente y se guarda en el registro del vehículo en la base de datos. Si cancela, restaura el vehículo al estado de la instantánea guardada. Coloca la cámara del juego para que orbite alrededor del vehículo durante la previsualización, permitiendo que el jugador rote la vista e inspeccione las modificaciones desde todos los ángulos:

local originalMods = {}

function SaveVehicleSnapshot(vehicle)
    originalMods = QBCore.Functions.GetVehicleProperties(vehicle)
end

function PreviewMod(vehicle, modType, modIndex)
    SetVehicleMod(vehicle, modType, modIndex, false)
end

function RevertToSnapshot(vehicle)
    if originalMods then
        QBCore.Functions.SetVehicleProperties(vehicle, originalMods)
    end
end

function SetupTuningCamera(vehicle, shopConfig)
    local coords = GetEntityCoords(vehicle)
    local camCoords = coords + shopConfig.camOffset

    tuningCam = CreateCam('DEFAULT_SCRIPTED_CAMERA', true)
    SetCamCoord(tuningCam, camCoords.x, camCoords.y, camCoords.z)
    PointCamAtEntity(tuningCam, vehicle, 0.0, 0.0, 0.0, true)
    SetCamActive(tuningCam, true)
    RenderScriptCams(true, true, 1000, true, false)
end

Integración con el trabajo de mecánico

Convierte el taller de tuning de un menú automatizado en un negocio gestionado por jugadores integrándolo con un sistema de trabajo de mecánico. Los mecánicos de servicio pueden realizar modificaciones en los vehículos de los clientes y crear una interacción de rol centrada en el servicio. Cuando un cliente lleve su vehículo al taller, podrá usar el quiosco de autoservicio a un precio más alto o pedir un mecánico con una tarifa reducida. El mecánico verá las solicitudes de servicio entrantes en la interfaz de su tableta, aceptará el trabajo, hablará con el cliente sobre las modificaciones que desea y realizará el trabajo. Durante la instalación, reproduce animaciones y efectos de partículas adecuados para simular al mecánico trabajando en el vehículo. Añade temporizadores de instalación que varíen según la complejidad de la modificación, con cambios de motor que tarden varios minutos y trabajos de pintura que requieran menos tiempo. Los mecánicos ganan una comisión por cada trabajo que completan, lo que los motiva a ofrecer un buen servicio y crear una cartera de clientes. Registra estadísticas del mecánico, como el total de trabajos completados, las valoraciones de satisfacción de los clientes y las áreas de especialización, para crear un sistema de progresión dentro de la carrera de mecánico.

Sistema de pintura y vinilos personalizados

Ve más allá de la paleta de colores estándar de GTA implementando un sistema de pintura personalizada con selectores de color RGB, acabados metálicos y mate, capas perladas y vinilos personalizados. El selector de color de NUI debería mostrar una rueda de color de espectro completo o un control deslizante HSL que permita a los jugadores elegir cualquier color imaginable. Aplica el color seleccionado usando SetVehicleCustomPrimaryColour y SetVehicleCustomSecondaryColour con los valores RGB del selector. Para los efectos de vinilo, usa el sistema de liveries del vehículo junto con el reemplazo de texturas personalizadas para aplicar patrones, texturas de fibra de carbono o diseños de marca a la carrocería. Ofrece una opción de pintura de dos tonos donde los paneles principales y secundarios de la carrocería puedan tener colores distintos, creando combinaciones de colores únicas. Guarda los valores RGB exactos en el registro del vehículo en la base de datos para que los colores personalizados persistan entre sesiones y reinicios del servidor. Cobra más por los trabajos de pintura personalizada que por los colores estándar para reflejar el carácter premium del servicio y ofrecer una forma eficaz de retirar dinero de la economía.

Ajuste de rendimiento y pruebas en banco de potencia

Las modificaciones de rendimiento merecen más profundidad que simplemente seleccionar una opción del menú y obtener resultados instantáneos. Implementa una función de pruebas en banco de potencia donde los jugadores puedan probar las estadísticas de rendimiento de su vehículo antes y después de las modificaciones. La prueba simula que el vehículo funciona a toda potencia y muestra métricas como los caballos de fuerza estimados, el par motor, la velocidad máxima y el tiempo de aceleración. Usa los datos de manejo de vehículos del juego para calcular estos valores según las modificaciones instaladas. Muestra los resultados en un panel NUI claro que compare los valores anteriores y posteriores con gráficos de barras o indicadores numéricos. Así, los jugadores obtienen información concreta sobre cómo afecta cada mejora al rendimiento de su vehículo, lo que les permite tomar decisiones de compra más informadas y satisfactorias. Para añadir más realismo, implementa un sistema de chip de tuning o reprogramación de la ECU donde los jugadores puedan ajustar parámetros como la respuesta del acelerador, las relaciones de marcha y el equilibrio de los frenos mediante controles deslizantes, con cambios reflejados en las características reales de manejo del vehículo usando las SetVehicleHandlingFloat natives.

Guardar y conservar las modificaciones de vehículos

Todas las modificaciones aplicadas al vehículo de un jugador deben guardarse en la base de datos para que persistan entre sesiones. La mayoría de los frameworks de FiveM almacenan las propiedades de los vehículos como un objeto JSON en la tabla de vehículos de los jugadores. Cuando se aplica y se paga una modificación, actualiza las propiedades almacenadas del vehículo con los nuevos valores de modificación. Cuando el vehículo aparezca desde el garaje, aplica todas las modificaciones guardadas usando la función SetVehicleProperties del framework. Gestiona casos extremos, como guardados parciales si el servidor se bloquea durante una sesión de modificación, lo que podría dejar el vehículo en un estado incoherente. Usa un patrón de transacción donde el pago se procese y la modificación se guarde en una única operación atómica de base de datos. Si falla cualquiera de los pasos, revierte ambos para evitar que se cobre al jugador sin darle la modificación o que reciba una modificación gratis. Registra todas las modificaciones con marcas de tiempo y precios para que los administradores puedan revisarlas y realizar posibles reversiones si se descubren exploits.

Modificaciones ilegales y carreras callejeras

Añade una dimensión de juego criminal implementando modificaciones ilegales que solo estén disponibles en talleres de tuning clandestinos. La inyección de óxido nitroso proporciona un aumento temporal de velocidad que puede sobrecalentar y dañar el motor si se usa en exceso. Los cambios de motor que superen el límite legal de caballos de fuerza hacen que el vehículo pueda ser inspeccionado por la policía e incautado si descubren la infracción. Las matrículas retiradas, las ventanas oscurecidas por encima del porcentaje de tintado legal y las modificaciones de suspensión hidráulica dan a la policía motivos para detener el vehículo. Registra qué modificaciones de un vehículo se consideran ilegales y muestra esta información a la policía mediante una mecánica de inspección de vehículos. Los agentes pueden usar un escáner portátil para comprobar el estado de las modificaciones de un vehículo y detectar piezas ilegales que justifiquen una multa o una incautación. Esto crea una dinámica de tira y afloja entre la cultura del tuning y las fuerzas del orden que enriquece el ecosistema de rol del servidor.

El script adecuado

Listo para tu servidor, con actualizaciones incluidas.

¿Listo para empezar?

Consigue los scripts en nuestra tienda, o únete al Discord para soporte, novedades y un adelanto de lo que viene.