T1GER Scripts Documentation
Tebex StoreDiscordYouTubeCFX Forum
  • T1GER Scripts Documentation
  • Quick Links
    • t1ger.net | Shop Now
    • Join Discord
  • Information
    • FiveM Asset Escrow
  • Resources
    • T1GER Mechanic
      • Installation
        • Job Account
          • Setup
          • API
      • Configuration
        • Shop
      • API
        • Exports
        • Events
      • Troubleshoot
    • T1GER Library
      • Installation
        • Inventory
        • Target
        • Garage
        • Society Account
        • Vehicle Properties
      • Configuration
    • T1GER Gang System
      • Installation
      • Gang Garages
      • Product Information
    • T1GER Tuning System
      • Installation
      • API
        • Client
        • Server
      • Troubleshoot
        • Common Issues
        • Error Codes
      • Guides
        • Commands
        • Shops
        • Markers
        • Mod Stations
        • Pricing
        • Mod Orders
        • Vehicle Mods
        • Engine Swaps
        • Nitrous
    • T1GER ATM Robbery
      • Installation
      • API
        • Client
        • Server
      • Troubleshoot
        • Common Issues
        • Error Codes
      • Guides
        • Hacking Minigame
        • Dispatch
    • T1GER Dealerships
  • Free Resources
    • T1GER Keys
    • T1GER Garage
    • T1GER Bank Robbery
    • T1GER Tow Trucker
Powered by GitBook
On this page
  • INSTALLATION
  • DEPENDENCIES
  • START
  • SQL
  • CONFIGURATION
  • UTILITIES
  • ESX VEHICLE PROPERTIES
  • FUEL SETUP
  • PUBLIC GARAGES
  • JOB GARAGES
  • IMPOUNDS
  • SET VEHICLE IMPOUNDED
  • SEIZE & RELEASE
  • PRIVATE GARAGES
  • EXTRA/LIVERY
  • MISCELLANEOUS
  • CHAT COMMANDS
  • EXPORTS
  • SCRIPT NOT WORKING / ERRORS
  1. Free Resources

T1GER Garage

Documentation, troubleshooting and support for T1GER Garage resource.

PreviousT1GER KeysNextT1GER Bank Robbery

Last updated 3 months ago

| | |

INSTALLATION

DEPENDENCIES

Dependency

Download

Install

Description

INCLUDED (CHECK README)

Optional

Required to use private garages

START

  1. Extractt1ger_garage.rar and place it into your resource folder.

  2. Install the SQL file into your database (⚠️see #SQL for instructions).

  3. Setupconfig.lua (⚠️see #CONFIGURATION for instructions).

  4. Addensure t1ger_garageto your server start config (place it anywhere below the dependency & framework resources).

  5. UpdateESX Vehicle Properties (⚠️see #ESX VEHICLE PROPERTIES for instructions).

  6. Update Fuel functions to correctly apply fuel on a vehicle or get fuel from a vehicle (⚠️see #FUEL SETUP for instructions).

  7. 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.

If you do not have t1ger_garage (is a new customer/never used private garages) then simply execute the following query in your database:

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

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

Inclient/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.

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

Go to es_extended/client/functions.lua, find the function calledESX.Game.SetVehicleProperties and replace that function with the provided function below:

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

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

If you are using other types than'car','aircraft' and'boat', make sure to add new normal public garages inConfig.Garage.Location withtype set to whatever type you have.

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.

These are vehicles from yourowned_vehicles table whereowner is ajob-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'

Please note, you have to manually set theowner column to a job name or make an implementation in your vehicle shop resource to set theowner column to a job name instead of an identifier. This part is not support by us.

IMPOUNDS

InConfig.Impound you can customize the impound settings of this resource.

If you are using other types than'car','aircraft' and'boat', make sure to add new impounds inConfig.Impound.Location withtype set to whatever type you have.

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.

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.

MISCELLANEOUS

CHAT COMMANDS

Please note, all these command strings are configurable and can be disabled as well.

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

These are available exports in the resource - use them as you please and find necessary.

Export Function

Description

exports['t1ger_keys']:SetVehicleImpounded(car, state)

SCRIPT NOT WORKING / ERRORS

Updates an owned vehicle to be either impounded/seize, read more .

VEHICLE NAME NULL My vehicles show up as NULL and not by name.

Please read 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 , I don't understand the language but the video itself should give you an idea.

WATER INSIDE SHELL I spawn a garage shell and there is water in-side.

Temporary solution is to find a new and better spot for the garage position.

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: .

IF YOU HAVE TRIED YOUR BEST AND NOTHING WORKS, THEN CONTACT US ON OUR OFFICIAL DISCORD: .

❓
✔️
this post
youtube guide here
❓
✔️
❓
✔️
click here
🆘
CLICK HERE
here
K4MB1 Garage Shells Pack
View on Tebex
CFX Forum Post
YouTube Showcase
Discord