# T1GER Garage

![](https://2167335559-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MiDWIMbFBeXle-trOlk%2F-Ml5sDPE1iobkIMzrm_b%2F-Ml5sNzM2NA53itzt_AS%2FGARAGE_COVER.png?alt=media\&token=8d911612-150e-4568-a50b-0f0f523da139)

#### [**View on Tebex**](https://store.t1ger.net/package/4717614) | [**CFX Forum Post**](https://forum.cfx.re/t/esx-t1ger-garage-advanced-system-player-owned-garages-impounds-and-more/4768574/6) | [**YouTube Showcase**](https://youtu.be/7qgiFW0Qi2Q) | [**Discord**](https://discord.gg/t1ger)

## INSTALLATION

### DEPENDENCIES

|                                        Dependency                                       |          Download         |    Install   | Description                     |
| :-------------------------------------------------------------------------------------: | :-----------------------: | :----------: | ------------------------------- |
| <p><a href="https://k4mb1.tebex.io/package/4673177">K4MB1<br>Garage Shells Pack</a></p> | `INCLUDED (CHECK README)` | **Optional** | Required to use private garages |

### START

1. Extract`t1ger_garage.rar` and place it into your resource folder.
2. Install the SQL file into your database (⚠️see [#SQL](https://docs.t1ger.net/free-resources/broken-reference) for instructions).
3. Setup`config.lua` (⚠️see [#CONFIGURATION](https://docs.t1ger.net/free-resources/broken-reference) for instructions).&#x20;
4. Add`ensure t1ger_garage`to your server start config (place it anywhere below the dependency & framework resources).
5. Update`ESX Vehicle Properties` (⚠️see [#ESX VEHICLE PROPERTIES](https://docs.t1ger.net/free-resources/broken-reference) for instructions).
6. Update Fuel functions to correctly apply fuel on a vehicle or get fuel from a vehicle (⚠️see [#FUEL SETUP](https://docs.t1ger.net/free-resources/broken-reference) for instructions).
7. If you want to use private garages, install & ensure K4MB1 Garage Shells Pack (download link in README).

### SQL

{% hint style="danger" %}
**Please open the`t1ger_garage.sql` file. And follow the below instructions:**
{% endhint %}

&#x20;Copy the following query and execute it in your database in`owned_vehicles` table:

```sql
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.&#x20;

{% tabs %}
{% tab title="t1ger\_garage exists" %}
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:&#x20;

```sql
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:

```sql
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.&#x20;
{% endtab %}

{% tab title="t1ger\_garage does not exist" %}
If you do not have t1ger\_garage (is a new customer/never used private garages) then simply execute the following query in your database:

```sql
CREATE TABLE `t1ger_garage` (
	`identifier` VARCHAR(100) NOT NULL,
	`id` INT(11),
	`vehicles` LONGTEXT DEFAULT NULL,
	PRIMARY KEY (`id`)
);
```

{% endtab %}
{% endtabs %}

### CONFIGURATION

{% hint style="warning" %}
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.&#x20;
{% endhint %}

### UTILITIES

{% hint style="info" %}
In`client/utils.lua` there is a file where you can edit some utility functions. In here you can customize notifications, draw texts and many other functions. \
Please do read it through and make changes to meet your server's preferences.
{% endhint %}

### ESX VEHICLE PROPERTIES

{% hint style="warning" %}
If using ESX Legacy SKIP this process.
{% endhint %}

{% hint style="danger" %}
Click on the tabs to view the source code for`ESX.Game.GetVehicleProperties` and`ESX.Game.SetVehicleProperties`.
{% endhint %}

{% tabs %}
{% tab title="ESX.Game.GetVehicleProperties" %}
Go to **es\_extended/client/functions.lua**, find the function calle&#x64;**`ESX.Game.GetVehicleProperties`** and replace that function with the provided function below:

```lua
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
```

{% endtab %}

{% tab title="ESX.Game.SetVehicleProperties" %}
Go to **es\_extended/client/functions.lua**, find the function calle&#x64;**`ESX.Game.SetVehicleProperties`** and replace that function with the provided function below:

```lua
ESX.Game.SetVehicleProperties = function(vehicle, props)
	if DoesEntityExist(vehicle) then
		local colorPrimary, colorSecondary = GetVehicleColours(vehicle)
		local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle)
		SetVehicleModKit(vehicle, 0)

		if props.plate then SetVehicleNumberPlateText(vehicle, props.plate) end
		if props.plateIndex then SetVehicleNumberPlateTextIndex(vehicle, props.plateIndex) end
		if props.bodyHealth then SetVehicleBodyHealth(vehicle, props.bodyHealth + 0.0) end
		if props.engineHealth then SetVehicleEngineHealth(vehicle, (props.engineHealth + 0.0)) end
		if props.tankHealth then SetVehiclePetrolTankHealth(vehicle, props.tankHealth + 0.0) end
		if props.fuelLevel then SetVehicleFuelLevel(vehicle, props.fuelLevel + 0.0) end
		if props.dirtLevel then SetVehicleDirtLevel(vehicle, props.dirtLevel + 0.0) end
		if props.color1 then SetVehicleColours(vehicle, props.color1, colorSecondary) end
		if props.color2 then SetVehicleColours(vehicle, props.color1 or colorPrimary, props.color2) end
		if props.pearlescentColor then SetVehicleExtraColours(vehicle, props.pearlescentColor, wheelColor) end
		if props.wheelColor then SetVehicleExtraColours(vehicle, props.pearlescentColor or pearlescentColor, props.wheelColor) end
		if props.wheels then SetVehicleWheelType(vehicle, props.wheels) end
		if props.windowTint then SetVehicleWindowTint(vehicle, props.windowTint) end

		if props.neonEnabled then
			SetVehicleNeonLightEnabled(vehicle, 0, props.neonEnabled[1])
			SetVehicleNeonLightEnabled(vehicle, 1, props.neonEnabled[2])
			SetVehicleNeonLightEnabled(vehicle, 2, props.neonEnabled[3])
			SetVehicleNeonLightEnabled(vehicle, 3, props.neonEnabled[4])
		end

		if props.extras then
			for extraId,enabled in pairs(props.extras) do
				if enabled then
					SetVehicleExtra(vehicle, tonumber(extraId), 0)
				else
					SetVehicleExtra(vehicle, tonumber(extraId), 1)
				end
			end
		end

		if props.neonColor then SetVehicleNeonLightsColour(vehicle, props.neonColor[1], props.neonColor[2], props.neonColor[3]) end
		if props.xenonColor then SetVehicleXenonLightsColour(vehicle, props.xenonColor) end
		if props.modSmokeEnabled then ToggleVehicleMod(vehicle, 20, true) end
		if props.tyreSmokeColor then SetVehicleTyreSmokeColor(vehicle, props.tyreSmokeColor[1], props.tyreSmokeColor[2], props.tyreSmokeColor[3]) end
		if props.modSpoilers then SetVehicleMod(vehicle, 0, props.modSpoilers, false) end
		if props.modFrontBumper then SetVehicleMod(vehicle, 1, props.modFrontBumper, false) end
		if props.modRearBumper then SetVehicleMod(vehicle, 2, props.modRearBumper, false) end
		if props.modSideSkirt then SetVehicleMod(vehicle, 3, props.modSideSkirt, false) end
		if props.modExhaust then SetVehicleMod(vehicle, 4, props.modExhaust, false) end
		if props.modFrame then SetVehicleMod(vehicle, 5, props.modFrame, false) end
		if props.modGrille then SetVehicleMod(vehicle, 6, props.modGrille, false) end
		if props.modHood then SetVehicleMod(vehicle, 7, props.modHood, false) end
		if props.modFender then SetVehicleMod(vehicle, 8, props.modFender, false) end
		if props.modRightFender then SetVehicleMod(vehicle, 9, props.modRightFender, false) end
		if props.modRoof then SetVehicleMod(vehicle, 10, props.modRoof, false) end
		if props.modEngine then SetVehicleMod(vehicle, 11, props.modEngine, false) end
		if props.modBrakes then SetVehicleMod(vehicle, 12, props.modBrakes, false) end
		if props.modTransmission then SetVehicleMod(vehicle, 13, props.modTransmission, false) end
		if props.modHorns then SetVehicleMod(vehicle, 14, props.modHorns, false) end
		if props.modSuspension then SetVehicleMod(vehicle, 15, props.modSuspension, false) end
		if props.modArmor then SetVehicleMod(vehicle, 16, props.modArmor, false) end
		if props.modTurbo then ToggleVehicleMod(vehicle,  18, props.modTurbo) end
		if props.modXenon then ToggleVehicleMod(vehicle,  22, props.modXenon) end
		if props.modHeadlight then SetVehicleHeadlightsColour(vehicle, props.modHeadlight) end
		if props.modFrontWheels then SetVehicleMod(vehicle, 23, props.modFrontWheels, false) end
		if props.modBackWheels then SetVehicleMod(vehicle, 24, props.modBackWheels, false) end
		if props.modPlateHolder then SetVehicleMod(vehicle, 25, props.modPlateHolder, false) end
		if props.modVanityPlate then SetVehicleMod(vehicle, 26, props.modVanityPlate, false) end
		if props.modTrimA then SetVehicleMod(vehicle, 27, props.modTrimA, false) end
		if props.modOrnaments then SetVehicleMod(vehicle, 28, props.modOrnaments, false) end
		if props.modDashboard then SetVehicleMod(vehicle, 29, props.modDashboard, false) end
		if props.modDial then SetVehicleMod(vehicle, 30, props.modDial, false) end
		if props.modDoorSpeaker then SetVehicleMod(vehicle, 31, props.modDoorSpeaker, false) end
		if props.modSeats then SetVehicleMod(vehicle, 32, props.modSeats, false) end
		if props.modSteeringWheel then SetVehicleMod(vehicle, 33, props.modSteeringWheel, false) end
		if props.modShifterLeavers then SetVehicleMod(vehicle, 34, props.modShifterLeavers, false) end
		if props.modAPlate then SetVehicleMod(vehicle, 35, props.modAPlate, false) end
		if props.modSpeakers then SetVehicleMod(vehicle, 36, props.modSpeakers, false) end
		if props.modTrunk then SetVehicleMod(vehicle, 37, props.modTrunk, false) end
		if props.modHydrolic then SetVehicleMod(vehicle, 38, props.modHydrolic, false) end
		if props.modEngineBlock then SetVehicleMod(vehicle, 39, props.modEngineBlock, false) end
		if props.modAirFilter then SetVehicleMod(vehicle, 40, props.modAirFilter, false) end
		if props.modStruts then SetVehicleMod(vehicle, 41, props.modStruts, false) end
		if props.modArchCover then SetVehicleMod(vehicle, 42, props.modArchCover, false) end
		if props.modAerials then SetVehicleMod(vehicle, 43, props.modAerials, false) end
		if props.modTrimB then SetVehicleMod(vehicle, 44, props.modTrimB, false) end
		if props.modTank then SetVehicleMod(vehicle, 45, props.modTank, false) end
		if props.modWindows then SetVehicleMod(vehicle, 46, props.modWindows, false) end

		if props.modLivery then
			SetVehicleMod(vehicle, 48, props.modLivery, false)
			SetVehicleLivery(vehicle, props.modLivery)
		end

		if props.tyres then
			for k,v in pairs(props.tyres) do
				local index = tonumber(k)
				if tonumber(k) == 2 then index = 4 end 
				if tonumber(k) == 3 then index = 5 end
				if props.tyres[k] == true then
					SetVehicleTyreBurst(vehicle, index, true, 1000.0)
				end
			end
		end

		if props.doors then
			for k,v in pairs(props.doors) do
				if props.doors[k] == true then 
					SetVehicleDoorBroken(vehicle, tonumber(k), true) 
				end
			end
		end

		if props.windows then
			for k,v in pairs(props.windows) do 
				if props.windows[k] == true then
					SmashVehicleWindow(vehicle, tonumber(k))
				end
			end
		end

	else
		return 
	end
end
```

{% endtab %}
{% endtabs %}

### FUEL SETUP

If you are using a custom fuel script, such as`LegacyFuel`, then you need to se&#x74;**`Config.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 t&#x6F;**`t1ger_garage/client/main.lua`** and find the function called:**`SetVehicleFuel`**. I use`LegacyFuel`, 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 using`LegacyFuel`.\
\
**Getting Fuel:**\
Go t&#x6F;**`t1ger_garage/client/main.lua`** and find the function called:**`GetVehicleFuel`**. I use`LegacyFuel`, 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 using`LegacyFuel`.

## PUBLIC GARAGES

{% hint style="info" %}
If you are using other types tha&#x6E;**`'car'`**,**`'aircraft'`** an&#x64;**`'boat'`**, make sure to add new normal public garages i&#x6E;**`Config.Garage.Location`** wit&#x68;**`type`** set to whatever type you have.&#x20;
{% endhint %}

Players can also use the built-in command to view a list of their garages, by typing:**`/garages`**.

## JOB GARAGES

I&#x6E;**`Config.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):

{% tabs %}
{% tab title="Spawned" %}
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'`**

{% hint style="danger" %}
Remember to add your job-vehicles,  jobs and job-grades i&#x6E;**`Config.JobVehicles`**.&#x20;
{% endhint %}
{% endtab %}

{% tab title="Society" %}
These are vehicles from you&#x72;**`owned_vehicles`** table wher&#x65;**`owner`** is &#x61;**`job-name`** and not a player identifier. This allows players from a job to use vehicles registered for their job. They can only take the vehicle out if they have the said job and if the vehicle is not already taken out.

To use this type of job-garage, you simply need to set the job-garage type as **`'society'`**

{% hint style="warning" %}
**Please note**, you have to manually set the`owner` column to a job name or make an implementation in your vehicle shop resource to set the`owner` column to a job name instead of an identifier. This part is not support by us.
{% endhint %}
{% endtab %}
{% endtabs %}

## IMPOUNDS

I&#x6E;**`Config.Impound`** you can customize the impound settings of this resource.&#x20;

{% hint style="info" %}
If you are using other types tha&#x6E;**`'car'`**,**`'aircraft'`** an&#x64;**`'boat'`**, make sure to add new impounds i&#x6E;**`Config.Impound.Location`** wit&#x68;**`type`** set to whatever type you have.&#x20;
{% endhint %}

### 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-comman&#x64;**`/impound`**.

```lua
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)!
```

{% hint style="warning" %}
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.
{% endhint %}

### 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.&#x20;

## PRIVATE GARAGES

{% hint style="danger" %}
Make sure you have K4MB1 Garage Shells Pack (link in README), downloaded and installed, before using these.
{% endhint %}

## EXTRA/LIVERY

I&#x6E;**`Config.Extras`** you can add as many extra positions you want around the map.&#x20;

{% hint style="info" %}
**Please note**, to use the extra menu, vehicles are restricted by vehicle class, so put in the relevant classes in the config option to be able to use the extra menu.
{% endhint %}

## MISCELLANEOUS

### CHAT COMMANDS

{% hint style="info" %}
*Please note, all these command strings are configurable and can be disabled as well.*
{% endhint %}

| 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

{% hint style="info" %}
These are available exports in the resource - use them as you please and find necessary.
{% endhint %}

| Export Function                                         | Description                                                                                                                      |
| ------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `exports['t1ger_keys']:SetVehicleImpounded(car, state)` | Updates an owned vehicle to be either impounded/seize, read more [here](https://docs.t1ger.net/free-resources/broken-reference). |

## SCRIPT NOT WORKING / ERRORS

{% hint style="success" %}
**VEHICLE NAME NULL**\
[❓](https://emojipedia.org/question-mark/)  My vehicles show up as NULL and not by name.

[✔️](https://emojiguide.com/symbols/check-mark/) Please read [this post](https://forum.cfx.re/t/how-to-add-on-vehicles-detailed/37501) on CFX Forum on how to properly add custom vehicles to your server. If that didn't fix your issue, then find the respective`vehicles.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 your`vehicles` table in database. There is a [youtube guide here](https://youtu.be/m5mR9qUy164), I don't understand the language but the video itself should give you an idea.
{% endhint %}

{% hint style="success" %}
**WATER INSIDE SHELL**\
[❓](https://emojipedia.org/question-mark/)  I spawn a garage shell and there is water in-side.&#x20;

[✔️](https://emojiguide.com/symbols/check-mark/) Temporary solution is to find a new and better spot for the garage position.&#x20;
{% endhint %}

{% hint style="success" %}
**KEYS FOR JOB VEHICLES**\
[❓](https://emojipedia.org/question-mark/)  How do I lock/unlock my job-vehicles?

[✔️](https://emojiguide.com/symbols/check-mark/) You have to use your locking resource to lock/unlock. By default, my resource support&#x73;**`t1ger-keys`**`,` you can get it from here: [click here](https://store.t1ger.net/package/4704431).&#x20;
{% endhint %}

{% hint style="info" %}
[🆘](https://emojipedia.org/sos-button/) **IF YOU HAVE TRIED YOUR BEST AND NOTHING WORKS, THEN CONTACT US ON OUR OFFICIAL DISCORD:** [**CLICK HERE**](https://discord.gg/FdHkq5q)**.**
{% endhint %}
