Garage
A step-by-step installation guide, common issues and solutions, code snippets, error codes, config previews, locales previews, SQL previews, and changelogs—all in one easily accessible place.
This resource can be purchased as part of a bundle for a discount here.
Translate
INSTALLATION GUIDE
Installation video
Step 1 - Download
1. Download your resource from FiveM’s Keymaster.
2. Unzip the cd_garage.zip
folder and place this folder in your server's resource folder.
3. Add the resource to your server start config (server.cfg). Make sure cd_garage
is listed below your framework resource e.g., es_extended, not above it.
Step 2 - Fxmanifest
Depending on your framework and dependencies, you may need to make some changes inside [cd_garage/fxmanifest.lua]
. We have simplified this process by commenting on the lines that you may need to modify.
Step 3 - Configure Resource
You must read all configurable options inside [cd_garage/configs/config.lua]
and adjust them to fit your server's needs. Please pay attention to the "commented out help text" at the end of each line to understand the purpose of each config option.
The most important sections are those under the Framework and Important categories at the top of the config.lua
. Everything else is optional.
Step 4 - SQL Database
Insert Automatically?
If you set Config.AutoInsertSQL
in [cd_garage/configs/config.lua]
to true
, the resource will automatically insert the SQL for you. You can change this to false
after the SQL has been successfully inserted.
Insert Manually?
Alternatively, if you prefer to insert the SQL queries manually, you can find them here.
Step 5 - Configure Key Binds
Before starting this resource on your main/live server, we highly recommend configuring your key binds, as this resource uses FiveM's Key Mapping.
Where Can I Configure My Key Binds?
You can configure key binds in the Keys and Commands section near the bottom of [cd_garage/configs/config.lua]
.
Why Do I Need to Do This?
In short, once a player joins your server with this resource running, you can no longer force changes to their key binds through the
config.lua
. Only the players themselves can modify their key binds in the in-game pause menu settings. However, changes you make will apply to other players who join after the update.The benefit of this system is that it is much more optimized, allowing players to easily customize their key binds for both keyboards and controllers. You can also check out the Default Keybinds for this resource.
Step 6 - Install Dependencies
Where Can I Find These Dependencies?
You can find the dependencies by opening the [cd_garage/dependencies]
folder. Inside, you’ll find folders for each required dependency, and each folder contains a text file with a GitHub download link. Alternatively, the dependencies are listed in the table below.
Where Should I Put These Dependencies?
These resources should be placed in your resources folder like any other. However, make sure not to put them inside the cd_garage
folder.
Do I Need to Add Them to the Server Start Config?
Required: If a dependency is listed as required, you do not need to add it to the server start config, as it will start automatically due to being a dependency of this resource.
Optional: If a dependency is listed as optional, then yes, you need to add it to your
server.cfg
.
Step 7 - Vehicle Keys
Do You Use cd_garage’s Built-in Vehicle Key System?
Yes? The keys will automatically be given when you spawn a vehicle from the garage. Be sure to read the information in the #VehicleKeys, as you may need to modifications in other resources that spawn vehicles, such as vehicle shops or your framework’s /car chat command.
Do You Use a Different Vehicle Key Script?
Yes? By default, we have added compatibility with some, but not all, key resources. If your key resource isn't listed, open [cd_garage/configs/client_customise_me.lua]
and locate the function named [GiveVehicleKeys]
. You will need to add the event/export from your existing vehicle keys script to grant a player keys when a vehicle is spawned from the garage. (See image below.)
Do You Not Use Any Vehicle Key Script?
Then you can skip this step.
Step 8 - 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.PlateFormats
in 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'
.
COMMON ISSUES
Please check out our Troubleshooting Guide before contacting our support.
🔔 Folder Name Make sure the name of the folder is cd_garage
.
🔔 Encrypted Files Do not edit the encrypted files in any way.
Screen Flickering?
eg., if your screen is flickering while using cd_easytime.
SQL Default Value?
eg., if you see an error similar to this example when inserting an SQL query into your database -
“BLOB/TEXT column 'adv_stats' can't have a default value”
.
SQL Unknown Column?
eg., if you see an SQL error in the server console similar to this example -
ER_BAD_FIELD_ERROR: Unknown colum 'job_personalspawn' in 'where clause'
.
Is the impound Not Opening?
eg., if you see a thin line on screen where the impound UI should be and you see a client F8 print saying "toLowerCase".
✔️ Part 1: Use this chat command in your server console before any player joins.✔️ Part 2: Execute this SQL query in your database.
'L' client-side F8 Error?
eg., if you see an error in the client-side F8 console similar to this example -
attempt to call a number value (field 'L')
- example.
Fuel Not Saving Correctly?
eg., if your vehicles fuel is not saving when you store a vehicle or not applying when spawning a vehicle in the garage.
RGB Colours Not Saving Correctly?
eg., if your vehicles RGB colours are not saving when you store a vehicle or not applying when spawning a vehicle in the garage.
"ExitLocation" client-side F8 error?
eg., if you see an error in the client-side F8 console similar to this example -
attempt to call a nil value (field 'ExitLocation')
.
ERROR CODES
If you encounter an error code not listed below, please open a support ticket in the Codesign Discord for assistance.
6458145 - #Step 4 was not completed correctly. The adv_stats
column is missing from the database.
468454 - #Step 4 was not completed correctly. The vehicles
table is missing from the database.
46584645 - #Step 4 was not completed correctly. The impound
and impound_data
columns are missing from the database.
5454 - #Step 4 was not completed correctly. The cd_garage_keys
table is missing from the database.
3122 - #Step 4 was not completed correctly. The cd_garage_privategarage
table is missing from the database.
1975 - The vehicle shown in the server side print hasn't been added to QBCore's shared vehicle table.
0985 - The hash for a vehicle in your QBCore shared vehicle table is formatted incorrectly. It’s currently a string, but it should use backticks instead of apostrophes.
5111 - This warning appears when Config.UseExploitProtection
is disabled. It likely means the model
variable in the vehicle/mods
column is missing for a player's vehicle. This could be caused by a faulty vehicle shop or, less commonly, a player using a cheat engine. To fix it, delete the vehicle or manually add the plate in the JSON file.
CHANGELOG
Files Changed
Not every update requires replacing the entire folder, as we understand it’s a hassle to redo configs for each update.
All Files: Delete the old
cd_garage
folder, download the latest version, reconfigure the configs folder, and restart your server.All Files Except config.lua: Follow the steps above, but first back up your existing
config.lua
file. After downloading, replace the newconfig.lua
with your backup.Specific Files: Simply copy and paste the specific updated files over the old ones, then restart your server.
Update Type
Occasionally, updates are mandatory due to changes like authentication updates, which make older versions obsolete.
Mandatory - You must update to the latest version; older versions will stop working.
Optional - Updating is your choice, but we don’t support outdated versions.
Skipping Updates
If you’ve skipped previous updates, it’s best to update all files to ensure compatibility. For example, if you're on v4.0.1, skipped v4.0.2, and now want to update to v4.0.3, use the "All Files" method for safety.
26/12/2020 - 21/06/2021
v3.0.0 - v3.0.7
Files Changed:
Update Type:
Changelog:
Add
Added search option to quick and impound menu
Vehicles can now be searched by name, location, plate or manufacturer
Added option to allow multiple jobs to use the JobRestricted garages
Added a staff command to change the plate of the vehicle you are in. This will allow custom plates to be used
Added logs for the vehicle management commands
Added a new function called SetFuel(), (just under the GetFuel() function) to the client_customise_me which will make adding compatibility with fuel scripts much easier. The read me has also been updated
Added a check for the /vehicle-plate command to make sure you can not change a plate to one that already exists
Added the vehicle labels to the transfer vehicle webhooks (ONLY when used from the chat command)
Added the ability to rename all esx events such as the setjob and playerloaded events
When using the regular job garage we added the ability to restrict cars to certain job grades
Added the ability to have dedicated car/air/boat garages for job garages. This will work with all 3 types of job garages
Added an event that you can trigger after a player purchases a vehicle and it will update the garage_type in the database
Added an event that you can trigger after purchasing a job vehicle and it will set the vehicle as a job owned vehicle (you can choose if you want this vehicle to be personal owned or society owned)
Added full locales to the discord logs so you no longer need to redo them every time the file is updated
Edit
Updated quick menu design
Improved load time of quick menu
Major optimisation of the client side ms usage
Updated all of the stylings of the logs
If you have added jobs to a JobRestricted garage, only people with said job(s) will be able to see this blip. It will also display which jobs this location is restricted to on the blip
Reworked the job cars garage to use the drawtextui instead of chat commands
Reworked the personal owned job vehicles. To make a vehicle a personal owned job vehicle you will need to set the new column in the database 'job_personalowned' to 1. Meaning you no longer need to add all of the personal owned job vehicles to a table in the config
Simplified the whole job garage system in the config so it's easier to understand
Updated the codesign error handlers
Reworked the garage tax system to get the garage tax value from each car from the "vehicles" database table. (make sure to insert the new SQL)
Reworked the use of the "vehicles" database table. We now get the vehicle display name, vehicle price, vehicle class and the garage tax amount for each vehicle
Updated the impound UI to the new system of getting the vehicle labels from the database if possible so it always shows the vehicles labels instead of the spawn names
Moved the webhooks to a server-only file so it can not be dumped from the config
When impounding a vehicle, you can now choose to send the ID of the vehicle you wish to impound (so you can impound vehicles which are still on the back of tow trucks)
Changed the /vehicle-add command so you can not add a vehicle to the database if it is already owned by a player
Changed the /vehicle-delete so it does not log to discord if the vehicle is not owned by a player
Fix
Fixed spawn bug with long vehicle loading times
Fixed a bug with the adv_stats on some vehicles in the database sometimes being set to false
The drawtextui now closes when the pause menu is open and reopens when you close it
Fixed a bug with the impound where it always showed the car being in the city impound even tho it could have been in other impounds
Fixed return vehicle not showing
Fixed unimpounding vehicle bug when Config.AnyoneCanImpound is enabled
Fixed /impound UI showing 'undefined'
Fixed a potential bug with pressing H (when you have no cars in garage) and then pressing E straight after
Fixed an issue with the cooldown on using the garage not working correctly
Fixed submarines not being recognised as boats
Fixed the job garages showing the ’Garage A’ on the UI as it should say ‘Job Garage’
Fixed a bug causing owned job garages to not function correctly
Fixed the regular job vehicles not displaying the vehicles label from the database
Fixed an issue with searching plates when using the impound UI
Fixed not being able to search for plates on the quick vehicle UI when caps lock is enabled
Temporary fix for the canary issue until the new Tebex FiveM license system is ready to launch, when this is released we will be fully switching over to the new system
Authentication
Authentication update
Last updated