Explorer
KNOW-PAT-095

FiveM - Vehicle Shop Config : mapping marques GTA vers logos et couleurs vehicules

Domaine
fivem
Type
pattern
Priorité
P3

Parent : [[INDEX-FIVEM-GAMEPLAY]]

FiveM - Vehicle Shop Config : mapping marques GTA vers logos et couleurs véhicules

Problème

Les véhicules GTA ont des noms de marques (Albany, Annis, Benefactor...) qui ne sont pas user-friendly. Une config statique permet d'afficher des logos et couleurs personnalisées dans l'UI du concessionnaire.

Solution

Mapping statique des marques GTA vers logos images, liste de couleurs véhicules avec IDs, et configuration de catégories/prices par véhicule.

// Mapping marques → logos
config.brandsLogos = {
    ['Albany']: 'Albany.webp',
    ['Annis']: 'Annis.webp',
    ['Benefactor']: 'Benefactor.webp',
    ['Bravado']: 'Bravado.webp',
    ['Declasse']: 'Declasse.webp',
    ['Dewbauchee']: 'Dewbauchee.webp',
    ['Emperor']: 'Emperor.webp',
    ['Enus']: 'Enus.webp',
    ['Gallivanter']: 'Gallivanter.webp',
    ['Imponte']: 'Imponte.webp',
    ['Inverto']: 'Inverto.webp',
    ['Karin']: 'Karin.webp',
    ['Lampadati']: 'Lampadati.webp',
    ['Obey']: 'Obey.webp',
    ['Ocelot']: 'Ocelot.webp',
    ['Pegassi']: 'Pegassi.webp',
    ['Pfister']: 'Pfister.webp',
    ['Progen']: 'Progen.webp',
    ['Schyster']: 'Schyster.webp',
    ['Truffade']: 'Truffade.webp',
    ['Vapid']: 'Vapid.webp',
    ['Weeny']: 'Weeny.webp',
    ['Zircoflow']: 'Zircoflow.webp'
};

// Couleurs GTA avec IDs
config.colorsList = [
    { label: "Metallic Black", id: 0 },
    { label: "Metallic Graphite Black", id: 1 },
    { label: "Metallic Black Steal", id: 2 },
    { label: "Metallic Dark Silver", id: 3 },
    { label: "Metallic Silver", id: 4 },
    { label: "Metallic Blue Silver", id: 5 },
    { label: "Metallic Steel Gray", id: 6 },
    { label: "Metallic Shadow Silver", id: 7 },
    { label: "Metallic Stone Silver", id: 8 },
    { label: "Metallic Midnight Silver", id: 9 },
    { label: "Metallic Gun Metal", id: 10 },
    { label: "Metallic Anthracite Grey", id: 11 },
    { label: "Matte Black", id: 12 },
    { label: "Matte Gray", id: 13 },
    { label: "Matte Light Grey", id: 14 },
    { label: "Util Black", id: 15 },
    { label: "Util Black Poly", id: 16 },
    { label: "Util Dark silver", id: 17 },
    { label: "Util Silver", id: 18 },
    { label: "Util Gun Metal", id: 19 },
    { label: "Util Shadow Silver", id: 20 }
];

// Véhicule config
config.vehicles = {
    ['adder']: {
        name: 'Adder',
        brand: 'Truffade',
        price: 1000000,
        category: 'super',
        model: 'adder',
        hash: GetHashKey('adder')
    }
};

Pourquoi

  • Les logos donnent une identité visuelle au concessionnaire
  • Les IDs couleurs sont les valeurs natives GTA pour SetVehicleColours
  • La config statique est rapide (pas de query base de données pour l'UI)

Quand l'utiliser

  • Concessionnaires véhicules, garages, custom shops
  • Toute UI affichant des marques/couleurs

Quand NE PAS l'utiliser

  • Si les véhicules sont chargés dynamiquement depuis une base de données

Exemples

Correct

// Génération dynamique de l'UI à partir de la config
function getVehicleDisplayData(model) {
    const vehicle = config.vehicles[model];
    if (!vehicle) return null;
    
    return {
        ...vehicle,
        brandLogo: config.brandsLogos[vehicle.brand] || 'default.webp',
        colors: config.colorsList
    };
}

Incorrect

// Hardcodé dans le code → maintenance impossible
if (model === 'adder') {
    logo = 'Truffade.webp';
    price = 1000000;
} else if (model === 'zentorno') {
    logo = 'Pegassi.webp';
    price = 725000;
}

Références

  • vms_vehicleshopv2/config/config.js L1-109