T1GER Garage
Documentation, troubleshooting and support for T1GER Garage resource.

INSTALLATION
DEPENDENCIES
Dependency
Download
Install
Description
START
Extract
t1ger_garage.rar
and place it into your resource folder.Install the SQL file into your database (⚠️see #SQL for instructions).
Setup
config.lua
(⚠️see #CONFIGURATION for instructions).Add
ensure t1ger_garage
to your server start config (place it anywhere below the dependency & framework resources).Update
ESX Vehicle Properties
(⚠️see #ESX VEHICLE PROPERTIES for instructions).Update Fuel functions to correctly apply fuel on a vehicle or get fuel from a vehicle (⚠️see #FUEL SETUP for instructions).
If you want to use private garages, install & ensure K4MB1 Garage Shells Pack (download link in README).
SQL
Please open thet1ger_garage.sql
file. And follow the below instructions:
Copy the following query and execute it in your database inowned_vehicles
table:
ALTER TABLE `owned_vehicles`
ADD IF NOT EXISTS `state` TINYINT(1) NOT NULL DEFAULT 1,
ADD IF NOT EXISTS `type` VARCHAR(20) NOT NULL DEFAULT 'car',
ADD IF NOT EXISTS `fuel` DECIMAL(11, 2) NOT NULL DEFAULT 50,
ADD IF NOT EXISTS `seized` TINYINT(1) NOT NULL DEFAULT 0,
ADD IF NOT EXISTS `garage` VARCHAR(50) NULL DEFAULT NULL;
Select the appropriate tab below, depending on whether you already have t1ger_garage table in your database or not. If you are a new customer, then you obviously won't have it.
If you have t1ger_garage table in your database, then you need to update the column names and properties. Do so, by executing the following query in your database:
ALTER TABLE `t1ger_garage` CHANGE COLUMN `garageID` `id` INT(11);
ALTER TABLE `t1ger_garage` MODIFY `vehicles` LONGTEXT DEFAULT NULL;
You also want to make sure all vehicles in private garages are updated to be stored in a default garage A. So execute this query afterwards:
ALTER TABLE `t1ger_garage` CHANGE COLUMN `garageID` `id` INT(11);
UPDATE `owned_vehicles` SET garage = NULL WHERE garage = 'private';
This will ensure that players that had vehicles in their private garage, can now take them out from any public garage.
CONFIGURATION
Please go through all configurable options & settings in config.lua
and configure them to your server's preferences.
Also please read the comments at the end of each line, for a brief information on what the option does.
UTILITIES
ESX VEHICLE PROPERTIES
If using ESX Legacy SKIP this process.
Click on the tabs to view the source code forESX.Game.GetVehicleProperties
andESX.Game.SetVehicleProperties
.
Go to es_extended/client/functions.lua, find the function calledESX.Game.GetVehicleProperties
and replace that function with the provided function below:
ESX.Game.GetVehicleProperties = function(vehicle)
if DoesEntityExist(vehicle) then
local colorPrimary, colorSecondary = GetVehicleColours(vehicle)
local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle)
local extras = {}
for extraId=0, 12 do
if DoesExtraExist(vehicle, extraId) then
local state = IsVehicleExtraTurnedOn(vehicle, extraId) == 1
extras[tostring(extraId)] = state
end
end
local tyres = {}
for i = 0, 3 do
local index = i
if i == 2 then index = 4 end
if i == 3 then index = 5 end
tyres[i] = false
if IsVehicleTyreBurst(vehicle, index, false) or IsVehicleTyreBurst(vehicle, index, true) then tyres[i] = true end
end
local doors = {}
for i = 0, 5 do
doors[i] = false
if IsVehicleDoorDamaged(vehicle, i) then doors[i] = true end
end
local windows = {}
for i = 0, 3 do
windows[i] = false
if not IsVehicleWindowIntact(vehicle, i) then windows[i] = true end
end
return {
model = GetEntityModel(vehicle),
plate = ESX.Math.Trim(GetVehicleNumberPlateText(vehicle)),
plateIndex = GetVehicleNumberPlateTextIndex(vehicle),
bodyHealth = ESX.Math.Round(GetVehicleBodyHealth(vehicle), 1),
engineHealth = ESX.Math.Round(GetVehicleEngineHealth(vehicle), 1),
tankHealth = ESX.Math.Round(GetVehiclePetrolTankHealth(vehicle), 1),
fuelLevel = ESX.Math.Round(GetVehicleFuelLevel(vehicle), 1),
dirtLevel = ESX.Math.Round(GetVehicleDirtLevel(vehicle), 1),
color1 = colorPrimary,
color2 = colorSecondary,
pearlescentColor = pearlescentColor,
wheelColor = wheelColor,
wheels = GetVehicleWheelType(vehicle),
windowTint = GetVehicleWindowTint(vehicle),
xenonColor = GetVehicleXenonLightsColour(vehicle),
neonEnabled = {
IsVehicleNeonLightEnabled(vehicle, 0),
IsVehicleNeonLightEnabled(vehicle, 1),
IsVehicleNeonLightEnabled(vehicle, 2),
IsVehicleNeonLightEnabled(vehicle, 3)
},
neonColor = table.pack(GetVehicleNeonLightsColour(vehicle)),
extras = extras,
tyreSmokeColor = table.pack(GetVehicleTyreSmokeColor(vehicle)),
modSpoilers = GetVehicleMod(vehicle, 0),
modFrontBumper = GetVehicleMod(vehicle, 1),
modRearBumper = GetVehicleMod(vehicle, 2),
modSideSkirt = GetVehicleMod(vehicle, 3),
modExhaust = GetVehicleMod(vehicle, 4),
modFrame = GetVehicleMod(vehicle, 5),
modGrille = GetVehicleMod(vehicle, 6),
modHood = GetVehicleMod(vehicle, 7),
modFender = GetVehicleMod(vehicle, 8),
modRightFender = GetVehicleMod(vehicle, 9),
modRoof = GetVehicleMod(vehicle, 10),
modEngine = GetVehicleMod(vehicle, 11),
modBrakes = GetVehicleMod(vehicle, 12),
modTransmission = GetVehicleMod(vehicle, 13),
modHorns = GetVehicleMod(vehicle, 14),
modSuspension = GetVehicleMod(vehicle, 15),
modArmor = GetVehicleMod(vehicle, 16),
modTurbo = IsToggleModOn(vehicle, 18),
modSmokeEnabled = IsToggleModOn(vehicle, 20),
modXenon = IsToggleModOn(vehicle, 22),
modHeadlight = GetVehicleHeadlightsColour(vehicle),
modFrontWheels = GetVehicleMod(vehicle, 23),
modBackWheels = GetVehicleMod(vehicle, 24),
modPlateHolder = GetVehicleMod(vehicle, 25),
modVanityPlate = GetVehicleMod(vehicle, 26),
modTrimA = GetVehicleMod(vehicle, 27),
modOrnaments = GetVehicleMod(vehicle, 28),
modDashboard = GetVehicleMod(vehicle, 29),
modDial = GetVehicleMod(vehicle, 30),
modDoorSpeaker = GetVehicleMod(vehicle, 31),
modSeats = GetVehicleMod(vehicle, 32),
modSteeringWheel = GetVehicleMod(vehicle, 33),
modShifterLeavers = GetVehicleMod(vehicle, 34),
modAPlate = GetVehicleMod(vehicle, 35),
modSpeakers = GetVehicleMod(vehicle, 36),
modTrunk = GetVehicleMod(vehicle, 37),
modHydrolic = GetVehicleMod(vehicle, 38),
modEngineBlock = GetVehicleMod(vehicle, 39),
modAirFilter = GetVehicleMod(vehicle, 40),
modStruts = GetVehicleMod(vehicle, 41),
modArchCover = GetVehicleMod(vehicle, 42),
modAerials = GetVehicleMod(vehicle, 43),
modTrimB = GetVehicleMod(vehicle, 44),
modTank = GetVehicleMod(vehicle, 45),
modWindows = GetVehicleMod(vehicle, 46),
modLivery = GetVehicleLivery(vehicle),
tyres = tyres,
doors = doors,
windows = windows
}
else
return
end
end
FUEL SETUP
If you are using a custom fuel script, such asLegacyFuel
, then you need to setConfig.HasFuelScript
to true, otherwise resource will use FiveM's native for setting/getting fuel. You also need to add your fuel script's functions for getting fuel and setting fuel.
Setting Fuel:
Go tot1ger_garage/client/main.lua
and find the function called:SetVehicleFuel
. I useLegacyFuel
, so you should see an export for that resource, simply replace this export with the respective function/export from your fuel script, given the case that you are not usingLegacyFuel
.
Getting Fuel:
Go tot1ger_garage/client/main.lua
and find the function called:GetVehicleFuel
. I useLegacyFuel
, so you should see an export for that resource, simply replace this export with the respective function/export from your fuel script, given the case that you are not usingLegacyFuel
.
PUBLIC GARAGES
Players can also use the built-in command to view a list of their garages, by typing:/garages
.
JOB GARAGES
InConfig.JobGarage
you can add job garages around the map, where you have to specify the type of car (example: 'car' or 'aircraft'), options (example: 'spawner', 'society' or 'both'), jobs (example: '{'police','lspd'}), position to interaction, draw text, spawn pos of the vehicle (you can use the same as interact position), draw text to store, blip & markers settings. Read the end-line comments to understand each option!
The resource supports two types of job garages (click the tabs to see):
These are spawned vehicles and are not owned by anyone. They can be spawned unlimited. You can configure job-grade, model name, vehicle label and type for each spawn-able job vehicle.
To use this type of job-garage, you simply need to set the job-garage type as 'spawner'
Remember to add your job-vehicles, jobs and job-grades inConfig.JobVehicles
.
IMPOUNDS
InConfig.Impound
you can customize the impound settings of this resource.
SET VEHICLE IMPOUNDED
To send a vehicle to impound, you can use the built-in export function that works in client-sided environments, see the code block below or use the built-in (whitelisted) chat-command/impound
.
exports[t1ger_garage]:SetVehicleImpounded(car, state)
-- car is the vehicle you want to impound
-- state is usually false, only set to true if it's being seized (player cannot take from impound, unless contacting police)!
You can also leave the arguments empty and use:exports[t1ger_garage]:SetVehicleImpounded()
. The resource will find the closest vehicle or the vehicle player is in, impound & delete it by itself.
SEIZE & RELEASE
You can use the above export function with state set to true, to seize the closest vehicle or the vehicle player is in. You can also use the built-in chat-command (whitelisted):/seize
.
When a vehicle is seized by (whitelisted) police jobs, player can see the vehicle in the impound list but will not be able to take it out. Only the (whitelisted) police jobs can release the vehicle from the police impound register menu and then player will be able to take the vehicle from the impound lot.
PRIVATE GARAGES
Make sure you have K4MB1 Garage Shells Pack (link in README), downloaded and installed, before using these.
EXTRA/LIVERY
InConfig.Extras
you can add as many extra positions you want around the map.
MISCELLANEOUS
CHAT COMMANDS
Command
Description
/garages
See a complete list of owned vehicles and respective garage, type and state.
/impound
Impound closest vehicle or the vehicle player is in.
/seize
Seize the closest vehicle or the vehicle player is in.
EXPORTS
Export Function
Description
exports['t1ger_keys']:SetVehicleImpounded(car, state)
Updates an owned vehicle to be either impounded/seize, read more here.
SCRIPT NOT WORKING / ERRORS
VEHICLE NAME NULL ❓ My vehicles show up as NULL and not by name.
✔️ Please read this post on CFX Forum on how to properly add custom vehicles to your server. If that didn't fix your issue, then find the respectivevehicles.meta
file (typically located in your stream folder for the given vehicle). In here you want to set the<gameName>
property to match the given vehicle mode in yourvehicles
table in database. There is a youtube guide here, I don't understand the language but the video itself should give you an idea.
KEYS FOR JOB VEHICLES ❓ How do I lock/unlock my job-vehicles?
✔️ You have to use your locking resource to lock/unlock. By default, my resource supportst1ger-keys
,
you can get it from here: click here.
Last updated