Optional Features
This section explains how the built-in features work and, if needed, how to make them compatible with other resources. These optional features can be configured in [configs/config.lua].
Boat & Air garages
How Do Boat & Air Garages Work?
When a player purchases a boat or aircraft, you’ll need to update the garage_type field in the database for that vehicle.
If your server doesn’t use boats or aircraft, you can skip this step — the default garage_type is set to "car".
Compatible Code Snippets Provided by CodesignOn our Resource Integration page, we provide:
Step-by-step photos
Custom code snippets
Exact line edits
These make it easy to set up full compatibility with ESX, QBCore, and paid resources.
👉 Click here for QBCore setup →
Changing Garage Names
To rename a garage (for example, change "b" to "PINK MOTEL"), edit the Garage_ID in the Config.Locations section of the configs/config.lua file.
The script will automatically update the database for you.

Custom vehicle logos
Credits to @Baby Amnesia for making this tutorial.
Fake Plates
How Do Fake Plates Work?
In the
config.lua, you can set the spawn name for the usable fake plate item.To use it, stand near a vehicle you own and use the item. A random new plate will be generated and applied to your vehicle. The fake plate is persistent — it stays on the vehicle until it’s manually removed.
You or specific jobs (such as the police) can remove a fake plate using the
/removefakeplatecommand.
Gang Garages
How Do Gang Garages Work?
The main difference between job garages and gang garages is how vehicle access is shared.
When a player stores their personal vehicle in a gang garage, any member of that gang can take it out and use it. The vehicle remains available to the gang until the owner retrieves it and stores it back in their personal garage.
However, other gang members cannot store your vehicle in their own personal garages.
Garage Slots
How Do Garage Slots Work?
The garage slots feature lets you control how many vehicles a player can own.
By default, there’s no limit, but you can enable restrictions to set a maximum number of vehicles per player. Players can buy extra slots using in-game commands, and authorized jobs (like car dealers) can sell these extra slots. You can also set custom prices for extra slots, and players can check how many slots they have using a chat command.
Job Garages
How Do Job Garages Work?
There are three types of job garages, and each one works differently. You can configure each garage location to use a different method depending on how you want vehicles to be managed.
This garage script does not include a built-in vehicle shop. If you use Personal Owned or Society Owned methods, you’ll need to handle that setup yourself.
TL;DR – Job Garage Types
Regular: Shared job vehicles that are spawned in and not owned by anyone. Simple and no database setup needed.
Personal: Vehicles bought by individual players that only they can access from their job garage.
Society: Shared job vehicles that belong to the entire job — any member of that job can use them.
Compatible Code Snippets Provided by CodesignOn our Resource Integration page, we provide:
Step-by-step photos
Custom code snippets
Exact line edits
These make it easy to set up full compatibility with ESX, QBCore, and paid resources.
Regular
None — vehicles are spawned, not owned.
All players with the job.
❌ Not saved.
Shared or temporary job vehicles.
Personal
Owned by the player.
Only the vehicle owner.
✅ Saved with job_personalowned = player’s job name.
Employee-owned job vehicles.
Society
Owned by the job.
All members of the same job.
✅ Saved with identifier = job name.
Shared company or organization vehicles.
Setup: Regular Job Vehicles
Setup: Personal-Owned Job Vehicles
Setup: Society Owned Job Vehicles
Persistent Vehicles
How Do Persistent Vehicles Work?
The persistent vehicle system automatically saves and respawns vehicles that despawn, even after you leave and rejoin the server. By default, only vehicles spawned from the garage are persistent, but you can make others persistent using the events below. A vehicle’s position is saved when it stays still for more than 5 seconds.
Compatible Code Snippets Provided by CodesignOn our Resource Integration page, we provide:
Step-by-step photos
Custom code snippets
Exact line edits
These make it easy to set up full compatibility with ESX, QBCore, and paid resources.
👉 View Add Persistent Vehicle Event →
👉 View Remove Persistent Vehicle Event →
Private Garages
How Private Garages Work
Private garages function the same as public garages but can be placed anywhere using a chat command. Only the player who purchases a private garage can see and use it. In the
config.lua, you can enable certain jobs (such as real estate) to create and sell private garages to players.
Property Garages
How Do Property Garages Work?
Property garages work by opening the garage UI directly from your property script. When a player accesses their property garage, the script simply triggers the event to open the Codesign garage interface, allowing them to store or retrieve vehicles from that location.
👉 View Open Property Garage Event →
👉 View Store Vehicle Property Garage Event →
Vehicles Display Names
Vehicle Display Names and Data Vehicle display data provides key details—such as the vehicle’s name, class, price, and garage tax—used in the garage UI. This information helps ensure accurate and consistent vehicle listings across all garages.
Vehicle Keys
How Vehicle Keys Work
If you’re using the built-in vehicle keys system, you must trigger a specific event whenever a vehicle is spawned outside of Codesign resources — for example, from a
/carcommand, vehicle shop, or civilian job script. This ensures the player automatically receives the correct keys for that vehicle.
Compatible Code Snippets Provided by CodesignOn our Resource Integration page, we provide:
Step-by-step photos
Custom code snippets
Exact line edits
These make it easy to set up full compatibility with ESX, QBCore, and paid resources.
👉 Click here for QBCore setup →
Vehicle Key Script ConflictsIf you’re using the built-in key system, you must remove or disable all other key scripts to prevent conflicts. Make sure they are completely stopped — some scripts can still start automatically if listed as dependencies, even if they’ve been removed from your server start configuration.
Vehicle Plate Format
PLEASE READ CAREFULLY!
You must complete this step correctly. You must read the information below and confirm your server's plate format.
Please read all 3 options below carefully before confirming which one you use.
Please note that you NEED to use the plate format your server already uses; changing them just because you like the benefits can cause script-breaking issues.
What is vehicle plate formats?Your vehicle shop/car dealer is the script that usually decides what plate format owned vehicles will use on your server. So you need to configure the
Config.PlateFormatsin the [configs/config.lua] file to what plate format your server uses. We have added compatibility with all 3 known plate formats.
Short ExplanationBy default, every vehicle's plate in FiveM is 8 characters long. So for example if your vehicle shop forces the plate to be 4 characters long, when you use the FiveM native to get a vehicle's plate
GetVehicleNumberPlateText(vehicle), this will return a string that is 8 characters long even though the plate is 4 characters long on your vehicle in-game (ABCD); because FiveM will add whitespaces until the plate is 8 characters long including whitespaces.
What do you mean by "trimmed" plate format?
By "trimmed", we mean your vehicle shop removes all spaces and whitespaces from the default 8-character plate.
Example of what the "trimmed" plate looks like when using DEBUG PRINTS.
Example of what the "trimmed" plate looks like in the DATABASE.
Example of what the "trimmed" plate looks like IN-GAME.

Does your server use the "trimmed" vehicle plate format?
Then you need to set the Config.PlateFormats in the config.lua to 'trimmed'.
What do you mean by "with spaces" plate format?
By "with spaces", we mean your vehicle shop does not modify the plate, so all plates will be 8 characters long no matter how many letters or numbers are in the plate because it will include whitespaces to make the length 8.
Example of what the "with spaces" plate looks like when using DEBUG PRINTS.
Example of what the "with spaces" plate looks like in the DATABASE.
Example of what the "with spaces" plate looks like IN-GAME.

Does your server use the "with_spaces" vehicle plate format?
Then you need to set the Config.PlateFormats in the config.lua to 'with_spaces'.
What do you mean by "mixed" plate format?
By "mixed", we mean your vehicle shop will remove any whitespaces at the start and the end of the plate, but it will not remove spaces in the centre of the plate. You should only be using this option if you use Qbcore or esx_vehicleshop.
QBCore: This option is recommended for QBCore servers as this is what QBCore also uses in its get plate function. Normally, QBCore's plates are 8 characters long with no spaces, so the examples below may not be relevant to you.
esx_vehicleshop: If your vehicle plates in the database are the same format as the examples below, you should use this option, as some esx vehicle shops by default, force the plate format to be 7 characters long with a space in the middle.
Example of what the "mixed" plate looks like when using DEBUG PRINTS.
Example of what the "mixed" plate looks like in the DATABASE.
Example of what the "mixed" plate looks like IN-GAME.

Does your server use the "mixed" vehicle plate format?
Then you need to set the Config.PlateFormats in the config.lua to 'mixed'.
Last updated
Was this helpful?





