Garage
Step by step installation guide, common issues & solutions, troubleshooting guide, code snippets, common error codes, config previews, locales previews and changelogs; all in 1 easily accessible place
Buy Here
YouTube Showcase Video - this video is outdated, new one coming soon!
This resource can be purchased as part of a bundle for a discount here.

Translate

START HERE

1. Unzip the cd_garage.zip folder and place this folder in your servers resource folder.
2. Add the resource to your server start config: ensure cd_garage (it must be placed anywhere below your framework resource eg., es_extended, not above). The name of the folder must not be changed or the resource will not function correctly.
3. WARNING do not edit the encrypted files in any way.

INSTALLATION GUIDE

Step 0 - For existing customers

ALL EXISTING CUSTOMERS WHO WERE USING PREVIOUS VERSIONS ON ESX MUST FOLLOW THE 2 STEPS BELOW:
  • Use this chat command in your server console before any player join - cd_garage_jobvehicles.
  • Remove all vehicles from the impound in your database - Either manually set them all to 0 in the impound column OR execute this SQL query in your database UPDATE owned_vehicles SET impound = 0 WHERE impound > 0.
If you have recently purchased this resource for the first time you do NOT need to follow the steps above.

Step 1 - Install the SQL

You MUST import the SQL file to your database. This SQL file is located inside theREAD_ME_AFTER_PURCHASING folder, the file is named SQL_main.sql. Watch this video if you are unsure how to do this HeidiSQL / PHPMyAdmin.

Step 2 - Fxmanifest

You may need to make some changes to the fxmanifest.lua, depending on your framework and dependencies. We have made this easier for you by commenting on the lines which you may need to change.

Step 3 - Configure the resource

You MUST read all of the configurable options inside the config.lua and configure them to suit your server's needs. Please read the ”commented out help text” at the end of each line so you can understand what each config option does.
The most important sections are the options under the Framework and Important sections at the top of the config.lua. Everything else is optional.

Step 4 - Install the dependencies

There are 3 resources that this resource requires. They are provided in your purchase and are located inside the dependencies folder. Add them to your resources folder, then add them to the server start config.

Step 5 - Vehicle plate format

PLEASE READ CAREFULLY!
Does your vehicle database table (owned_vehicles / player_vehicles) store the plate with spaces or without spaces? (What do you mean by space?)
With spaces like this? Then set Config.VehicleDatabasePlateType to 'with_spaces'.
📌 PLEASE READ I BEG YOU: If you are using this option; your vehicle shop(s), civilian job vehicle(s), basically any vehicle that gets spawned in for a player must be generating a plate that is 8 characters long including spaces. If plates are 7 characters long or less you will not receive keys.
Without spaces like this? Then set Config.VehicleDatabasePlateType to 'without_spaces'.
📌 If you are using this option; all plates will be automatically trimmed (spaces removed) so no further action is needed.
All plates are 8 characters like this? If all of the vehicle plates in your database are 8 characters without any spaces, then set Config.VehicleDatabasePlateType to 'without_spaces'.
📌 If you are using this option; all plates will be automatically trimmed (spaces removed) so no further action is needed.
Convert all vehicle plates format in database: We have provided code snippets here which will allow you to automatically change the plate format for every vehicle in your database.

Step 6 - ESX vehicle props

ESX GetVehicleProperties
ESX SetVehicleProperties
QBCore GetVehicleProperties
QBCore SetVehicleProperties
In es_extended/client/functions.lua - search for a function called ESX.Game.GetVehicleProperties and make sure it contains these lines inside the return table.
Example
1
bodyHealth = ESX.Math.Round(GetVehicleBodyHealth(vehicle), 1),
2
engineHealth = ESX.Math.Round(GetVehicleEngineHealth(vehicle), 1),
3
tankHealth = ESX.Math.Round(GetVehiclePetrolTankHealth(vehicle), 1),
Copied!
In es_extended/client/functions.lua - search for a function called ESX.Game.SetVehicleProperties and make sure it contains these lines.
Example
1
if props.bodyHealth then SetVehicleBodyHealth(vehicle, props.bodyHealth + 0.0) end
2
if props.engineHealth then SetVehicleEngineHealth(vehicle, props.engineHealth + 0.0) end
3
if props.fuelLevel then SetVehicleFuelLevel(vehicle, props.fuelLevel + 0.0) end
Copied!
In qb-core/client/functions.lua - search for a function called QBCore.Functions.GetVehicleProperties and make sure it contains these lines inside the return table.
Example
1
bodyHealth = Round(GetVehicleBodyHealth(vehicle), 1),
2
engineHealth = Round(GetVehicleEngineHealth(vehicle), 1),
3
tankHealth = Round(GetVehiclePetrolTankHealth(vehicle), 1),
Copied!
In qb-core/client/functions.lua - search for a function called QBCore.Functions.SetVehicleProperties and make sure it contains these lines.
Example
1
if props.bodyHealth then SetVehicleBodyHealth(vehicle, props.bodyHealth + 0.0) end
2
if props.engineHealth then SetVehicleEngineHealth(vehicle, props.engineHealth + 0.0) end
3
if props.fuelLevel then SetVehicleFuelLevel(vehicle, props.fuelLevel + 0.0) end
Copied!

Step 7 - Vehicle fuel

If you use a vehicle fuel resource you will need to modify the GetFuel() and SetFuel() functions in the configs/client_customise_me.lua to work with your current vehicle fuel resource. You will see some pre-set examples which are hashed out.

OPTIONAL MODIFICATIONS

Vehicle Keys - PLEASE READ

If you are using the built in vehicle keys system, you will need to trigger an event every time you spawn a vehicle eg., /car command, vehicle shop(s), civilian job vehicles(s), etc.
Example
From client to client
From server to client
If the "plate" is already defined: If the "plate" is already defined in the code, simply send the plate in the first argument, as seen in the code snippet below.
1
TriggerEvent('cd_garage:AddKeys', plate)
Copied!
If the "plate" is NOT defined: If the "plate" is NOT defined in the code, simply use the GetPlate export in the first argument to get the plate of the vehicle a player currently is in, as seen in the code snippet below.
1
TriggerEvent('cd_garage:AddKeys', exports['cd_garage']:GetPlate(vehicle))
Copied!
If the "plate" is already defined: If the "plate" is already defined in the code, simply send the plate in the first argument, as seen in the code snippet below.
1
TriggerClientEvent('cd_garage:AddKeys', source, plate)
Copied!

Boat & Air garages

When a player purchases a boat/air vehicle, the script requires you to update the garage_type for this vehicle in the database. If you do not use boat/air vehicles, you can ignore this as the default garage_type value in the database is car.
Example
  • The garage_type can only be set to 3 values: 'car' 'boat' 'air' . These values must be sent as a string. For example, in order to make a boat show in the boat garage you need to edit the SQL query in your vehicle shop to insert 'boat' into the garage_type column in the owned_vehicles / player_vehicles database table for this vehicle. And same for air vehicles etc. You do not need to do this for cars/bikes as the default value In the database for this column is always ’car’.

Property Garages

If you use a paid property resource, then it's really the developer of said resource who will be best suited to help you with the property garages, as the Codesign Team doesn't have access to their resources and we can't have access to them without the developers permission, considering we haven't purchased them. But, we have made it extremely simply for you yourself to implement this into your property resource.
From client to client
From server to client
Spawning a Vehicle - You must send either 'quick' or 'inside' in the 1st argument. And to choose a shell for the inside garage replace nil with '10cargarage_shell' or '40cargarage_shell' in the 2nd argument
1
TriggerEvent('cd_garage:PropertyGarage', 'quick', nil)
Copied!
Spawning a Vehicle - You must send either 'quick' or 'inside' in the 2nd argument. And to choose a shell for the inside garage replace nil with '10cargarage_shell' or '40cargarage_shell' in the 3rd argument
1
TriggerClientEvent('cd_garage:PropertyGarage', source, 'quick', nil)
Copied!
From client to client
From server to client
Storing a Vehicle - the 1st and 2nd argument must always stay the same.
1
TriggerEvent('cd_garage:StoreVehicle_Main', 1, false)
Copied!
Storing a Vehicle - the 2nd and 3rd argument must always stay the same.
1
TriggerClientEvent('cd_garage:StoreVehicle_Main', source, 1, false)
Copied!

Job Garages

We have 3 options for job garages, each job garage location can be set to use a different method and needs to be implemented in a different way.
This garage script does not include any kind of vehicle shop, so if you choose to use the Personal Owned or Society Owned methods you would need to sort that out yourself.
Regular
Personal Owned
Society Owned
These are spawned in vehicles and are not owned by anyone.
How to use this?
Add the vehicles of your choice to the Config.JobVehicles.RegularMethod table in the config. Each job has their own choice of vehicles that can be only used by players with said job.
This will use your personal job vehicles that you have purchased from the car dealer and only you can access them from your job spawn location. These vehicles will not be accessible from normal garages.
How to use this?
For example, when a player purchases a vehicle from the vehicle shop, the job_personalowned column in the owned_vehicles / player_vehicles database table needs to be set to the job name of the player - Example.
You can also use this event; it will set the vehicle a player is currently in into a personal owned job vehicle.
1
TriggerEvent('cd_garage:SetJobOwnedVehicle', 'personal')
Copied!
This will use society-owned vehicles. This will allow all players of the same job type to use all of the vehicles their job owns.
How to use this?
For example, when a player purchases a vehicle from the vehicle shop, the identifier column in the owned_vehicles / player_vehicles database table needs to be set to a job name - Example.
You can also use this event; it will set the vehicle a player is currently in into a society owned job vehicle.
1
TriggerEvent('cd_garage:SetJobOwnedVehicle', 'society')
Copied!

Changing Garage Names

If you wish to change the names of the garages from eg., A to Legion you would also need to change the default value of the garage_id column in the owned_vehicles/player_vehicles database table to the new value you have chosen, so in our case, we would change it from A to Legion.
Before
After
But you MUST do this before any players join, otherwise you would have to manually change the garage_id from A to Legion for every player who's garage_id was set to A.

Vehicles Data

ESX
QBCore
On ESX we will grab this data from the "vehicles" database table, as this is very common in esx servers. So we will use this to store information for us to display on the garage UI’s.
If Config.VehiclesData is enabled, the script will fetch the vehicle display name, vehicle class, vehicle price, and the garage tax amount (if Config.VehiclesData.garage_tax is enabled), from the "vehicles" database table. This is simply the easiest way you can fully configure everything to your server's specific needs.
Multiple "vehicles" database tables
We were made aware that some servers use multiple "vehicles" database tables for donator vehicles, emergency vehicles etc. So all you need to do is add the names of these database tables into the Config.VehiclesData.VehicleDatabase_TableNames in the config,lua.
On QBCore we will grab this data from the qb-core/shared.lua/QBShared.Vehicles, as this is very common in QBCore servers. So we will use this to store information for us to display on the garage UI’s.
If Config.VehiclesData is enabled, the script will fetch the vehicle display name, vehicle class, vehicle price, and the garage tax amount (if Config.VehiclesData.garage_tax is enabled), from the shared.lua. This is simply the easiest way you can fully configure everything to your server's specific needs.
If you wish to use the garage tax, you need to add an extra line to the tables - Example.
Although this is not required, because if Config.VehiclesData is disabled, the script will alternatively get the vehicle display names from the vehicles handling files vehicles.meta. Example: <gameName>Adder</gameName>. But the vehicle classes/prices will not be displayed on the garage UIs and the Config.VehiclesData.garage_tax will be automatically disabled.

Custom vehicle logos

Credits to @Baby Amnesia for making this tutorial.

INFORMATION

Default Key Binds

Please Read Here for more information regarding key-mapping.
Key
Description
E
Open the outside quick garage.
H
Enter the inside garage.
G
Store your vehicle.
E
Hotwire a vehicle.
M
Toggle vehicle lock.

Chat commands

All of these chat commands can be renamed and disabled/enabled in the config/code.
Command
Description
/impound
Impound system to impound a vehicle.
/transfervehicle
Transfer system to transfer a vehicle to another player.
/checkmiles
Check the mileage of the vehicle you are in.
/garagespace
Players with defined jobs can sell garage slots to other players.
/garagespacecheck
Check how many garage spaces you have.
/vehicle-add
(Staff only) Add the vehicle you are currently sat inside to a player's garage.
/vehicle-delete
(Staff only) Delete the vehicle you are currently sat inside from the database.
/vehicle-plate
(Staff only) Change the plate of the vehicle you are currently sat inside.
/vehicle-keys
(Staff only) Give yourself keys to the vehicle you are currently sat inside.
/privategarage
Players with defined jobs can create and sell private garages to players.
/removefakeplate
Remove a fake plate from the closest vehicle.
/givekey
Give temporary keys (keys delete after server restart) to to the closest player to the closest vehicle.
/givekeysave
Give saved keys (keys save in database) to to the closest player to the closest vehicle.
/removekey
Open the keys UI to remove keys you have given out to other players.
/vehlock
Toggle vehicle lock.

Events

These events are completely optional, and therefore you if you wish to use them.
Make sure to look in the code to see if any events require data to be sent in the arguments.

Server Side Events

Event Name
Description
TriggerServerEvent('cd_garage:SaveAllMiles')
Trigger 1 minute before a server restart to force save the mileage of every player's vehicle.
TriggerServerEvent('cd_garage:UpdateGarageType')
Update the database with the correct garage_type after purchasing a vehicle.
TriggerEvent('cd_garage:SetJobOwnedVehicle', type)
Update the database to set your vehicle as an owned job vehicle. The type must be either ”personal” or ”society”.
TriggerEvent('cd_garage:SaveImpoundTimers')
Trigger 1 minute before a server restart to save the impound timer time of all vehicles in the impound to the database.

Client Side Events

Event Name
Description
TriggerEvent('cd_garage:checkmileage')
Check the vehicle's mileage.
TriggerEvent('cd_garage:ImpoundVehicle')
Impound vehicles. You can send a vehicles id as the first argument, otherwise, it will choose the closest vehicle.
TriggerEvent('cd_garage:TransferVehicle', playerid)
Transfer a vehicle. You must send the player's server-id.
TriggerEvent('cd_garage:ToggleVehicleLock')
Toggle vehicle lock.
TriggerEvent('cd_garage:AddKeys', plate)
Give a player keys to a vehicle. You must send the plate.
TriggerEvent('cd_garage:RemoveKeys', plate)
Remove a players keys from a vehicle. You must send the plate.

Exports

These exports are completely optional, and therefore you if you wish to use them.

Server Side Exports

Export
Description
exports['cd_garage']:GetGarageLimit(source)
Returns the player's garage limit amount (number).
exports['cd_garage']:GetGarageCount(source, garage_type)
Returns the number of vehicles the player owns (number).
exports['cd_garage']:GetMaxHealth(plate)
Returns the vehicle's max health (number).
exports['cd_garage']:CheckVehicleOwner(source, plate)
Returns if the player owns this vehicle (boolean).
exports['cd_garage']:GetConfig()
Returns the full garage config.

Client-Side Exports

Export
Description
exports['cd_garage']:GetGarageType(vehicle)
Returns the type of vehicle (‘car’ / ‘boat’ / ‘air’) (string).
exports['cd_garage']:GetAdvStats(plate)
Returns the mileage table (plate / mileage / maxhealth) (table).
exports['cd_garage']:GetKeysData()
Returns a players full key table (table).
exports['cd_garage']:DoesPlayerHaveKeys(plate)
Returns if the player has keys to a vehicle (boolean).
exports['cd_garage']:GetPlate(vehicle)
Returns the vehicles plate a player is currently in (string).
exports['cd_garage']:GetCorrectPlateFormat(plate)
Returns the correct plate format decided by the Config.VehicleDatabasePlateType (string).
exports['cd_garage']:GetConfig()
Returns the full garage config.

SCRIPT NOT WORKING?

Common Issues

🔔 Folder Name Make sure the name of the folder is cd_garage.
Screen Flickering If your screen is flickering while using cd_easytime, this is due to you having multiple time/weather sync scripts running at the same time fighting each other eg., vSync or vMenu.
✔️ Stop the other time/weather script that is causing this or stop cd_easytime and remove it from the dependencies in the fxmanifest.lua of cd_garage.
SQL Default Value 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”.
✔️ You can use “VARCHAR(256)” instead of “LONGTEXT” in the SQL query.
SQL Unknown Column 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'.
✔️ You are missing one of the required database columns. The SQL file can be found in the "READ_ME_AFTER_PURCHASING" folder.
Vehicles don't have keys Firstly read this Step 5 - Vehicle plate format. If the Config.VehicleDatabasePlateType is set to 'with_spaces' in the config.lua; your vehicle shop(s), civilian job vehicle(s), basically any vehicle that gets spawned in for a player must be generating a plate that is 8 characters long including spaces. If plates are 7 characters or less you will not receive keys.
Secondly it's very important to read this #Vehicle Keys.
When storing a vehicle it says you don’t own it You must read Step 5 - Vehicle plate format. If the Config.VehicleDatabasePlateType is set to 'with_spaces' in the config.lua; your vehicle shop(s), civilian job vehicle(s), basically any vehicle that gets spawned in for a player must be generating a plate that is 8 characters long including spaces. If plates are 7 characters or less you will not be able to store it.

Common Error Codes

Server
Client
468454 / 6458145 / 46584645 - #Step 1 of the installation guide has not been completed, meaning you have not added the SQL queries.
1654651 - The plate column in the owned_vehicles/player_vehicles database table for the one of this players vehicles is NULL or not a string.
87458434 / 3216584884 - The adv_stats column in the owned_vehicles/player_vehicles database table for one of this players vehicles is NULL or not a table.
2472782 - The garage_id column in the owned_vehicles/player_vehicles database table for one of this players vehicles is NULL or not a string.
465146541 - The property column in the owned_vehicles/player_vehicles database table for the one of this players vehicles is NULL or not a number.
63548 - The GetJob_grade() function in the client_customise_me.lua returned nil when it should have returned a number.

Troubleshooting

1. Check if the script has authorized correctly. Check the server console to make sure there are no errors saying You lack the required entitlement? and check for 2 client-sided prints saying Loaded Successfully!.
2. Check for obvious error prints in the server console and the client F8 console. If you don't see any obvious errors make sure to restart the script while the server is live and check again.
3. Change the key in the config.lua to one that you know works, as one of your other resources, may be disabling that specific key.
4. If none of the above worked, have a second read through the installation guide above, you may have missed something - you are only human.
If all else fails, contact the Codesign Team in the Codesign Discord.

CHANGELOG

Files Changed: Not every update requires you to replace the whole folder. We do this because we understand it's a pain to redo the configs for every update.
  • All Files - This means you should delete your old cd_garage folder, download and add in the latest version, reconfigure the configs folder and restart your server.
  • Specific Files - This means you can simply copy and paste the SPECIFIC new files over the old ones and restart the server.
Update Type: On rare occasions, you are forced to update to the latest version. Mostly due to authentication updates where the old versions will no longer work.
  • Mandatory - This means you MUST update to this new version or the old versions will no longer work.
  • Optional - This means its completely your choice whether you wish to update to the latest version. But we do not offer support for old versions for obvious reasons; they are old.
v3.0.0
v4.0.0
v4.0.1
v4.0.2
v4.0.3
v4.0.4

26/12/2020 - 21/06/2021

v3.0.0 - v3.0.7
Files Changed:
  • All files
  • Specific Files
Update Type:
  • Mandatory
  • Optional
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 had 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 styling 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 its 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 a 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 a 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

02/11/2021

Files Changed:
  • All files
  • Specific Files
Update Type:
  • Mandatory
  • Optional
Changelog:
Authentication
  • We are now using the official Authentication System provided by FiveM. The old auth system will be taken offline 1 week from now (give or take a few days if needed).
Add
  • Added a config option to disable the garage exploit protection
  • Added a 3rd key press when using the garage to store trailers, (G by default) which will store either the vehicle you are in or the closest vehicle. This will enable the use of trailers as you can store them now.
  • Added a new config option which will make players to pay a configurable percentage fee of the vehicles price to return vehicles using the outside quick UI. (or you can still use a configurable set price)
  • Added a function in the client_customise_me that is triggered after spawning a vehicle, making it easier for people to understand where they can add extra trigger events.
  • Added a fake plate system. You can add a fake plate by using an item and it will open a UI where you can input text to choose your own plate. The fake plate can be reverted by using a chat command or by storing the vehicle.
  • Added a private garage system, which wil allow specified jobs to create private garages anywhere on the map and sell them to players. The private garage will be placed at the coords and heading where the player is who created it.
  • Reworked the impound, now when you impound a car you will have a new UI where can input the reason, officers name, and impound duration or set it so only a officer can un-impound the vehicle. With this new system officers can impound vehicles for a set amount of time, and when this time expires the owner of the vehicle can retrieve the vehicle themselves after paying the fee calculated by the vehicles price.
  • Added a new garage transfer option to the quick garage UI to transfer to another garage for a configurable fee.
  • Added drag-and-drop compatibility with the QBCore framework.
  • Added support for oxmysql.
  • Added support for our new 40 car garage shell. This includes the new option to choose a shell for each garage location or allow the script to choose a shell for a player depending on how many vehicles a player owns.
  • Added vehicle keys which allow players to give temporary and saved keys, along with a UI to remove keys you have given to players. Temporary keys get removed after a server restart and saved keys save in the database and give them back to the players when they login.
  • Added a new config option which will allow you to set the garage to work with vehicles with no spaces in the plate and with spaces in the plate. So with this simple config option you no longer need to edit external scripts to work with the garage regarding the plates.
  • Added a new action bar for use when hotwiring vehicles.
Edit
  • Added a check to prevent the transfer vehicle chat command from being used without sending the players id in the first argument.
  • Cleaned up some of the code in the functions.lua.
  • Edited the personal owned job vehicle system., so for example if you purchase a personal owned police car for your job, you can only access this police car when you have the police job. Meaning if you leave the police to be a mechanic you will no longer have access to spawn the police car from the mechanic job garage.
  • Reworked the "inside garage blacklist", so instead of text appearing where your blacklisted vehicle should have been, it will now just place the next vehicle in its place.
  • Removed the garage_tax database column in the users database table as it is no longer needed, we will now cache the data server side instead.
  • The vehicle plate has been added to the main quick garage UI in replacement for the vehicle's category.
  • The inside garage is more responsive, while being more optimised.
Fix
  • Fixed an typo in the provided vehicles SQL table
  • Fixed the impound so unowned vehicles do not actually get added the impound when using /impound.
  • Fixed the 2 different types of liveries both not saving in the esx/qbcore props
  • Fixed the bug where on random occasions you could spawn a car that's already out on the streets when using onesync.
  • Fixed some vehicle damages not saving and reapplying.
  • When you store a boat in the garage it will now teleport you out of the water and onto solid ground.
  • All known bugs fixed from previous versions and from beta testing.

04/11/2021

Files Changed:
  • All files
  • Specific Files
Update Type:
  • Mandatory
  • Optional
Changelog:
Edit
  • Edited the vehicle management command permissions to be more user friendly with pre configured permissions for each framework
Fix
  • Fixed the data not being pulled correctly from the QBCore shared vehicles when Config.VehiclesData is enabled.
  • Fixed some bugs with the fakeplate.
  • Fixed some locales on the UI not being translatable.

08/11/2021

Files Changed:
  • All files
  • Specific Files
1
fxmanifest.lua - (IMPORTANT)
2
server/main/server.lua - (IMPORTANT)
3
client/main/client.lua - (IMPORTANT)
4
html (FULL FOLDER) - (IMPORTANT)
Copied!
Update Type:
  • Mandatory
  • Optional
Changelog:
Authentication
  • Small authentication update to ensure stability.
Fix
  • Fix for inside garage UI showing scroll wheel on small resolutions

24/11/2021

Files Changed:
  • All files
  • Specific Files
Update Type:
  • Mandatory
  • Optional
Changelog:
Add
  • Added accurately translated locales - 'CZ' / 'ES' / 'FI' / 'FR' / 'NL' / 'SE' / 'SK'
Edit
  • Reworked the garage tax system. The garage_tax column from the database has been removed. Now vehicles either get taxed based on a % of a vehicle price or a set configurable fee.
Fix
  • Fixed a bug where the closest vehicle checks sometimes don't get the correct vehicle.
  • Fixed the errors with the server event to save all mileage.
  • Fixed a typo which caused the server side garage space file to not load.
  • Fixed the avisa submarine not being storable in boat garages.
  • Fixed the GetGarageCount and GetGarageLimitfunctions not functioning correctly on QBCore servers.
  • Fixed the vehicle management command and garage space command not functioning correctly on QBCore servers.

28/11/2021

Files Changed:
  • All files
  • Specific Files
1
fxmanifest.lua - (IMPORTANT)
2
server/other/vehicle_managment.lua
3
configs/client_customise_me.lua
Copied!
Update Type:
  • Mandatory
  • Optional
Changelog:
Fix
  • Fixed random client framework error caused by framework not being initialized fast enough.
  • Fixed typo in /vehicle-plate command that caused an error.
Last modified 13h ago