HRGarages
Advanced garages system with impound garages and rent-a-car extras with ESX/QBCore support
Preview



Purchase
You can purchase HRGarages from our webstore and also join our discord server to follow for discounts
Dependencies
ESX Legacy/QBCore framework
Installation
Purchase HRGarages from our tebex store and move the script in your resources folder
Download the dependencies
Configure HRLib, oxmysql and the framework for your needs
HRGarages is pre-configured script but you'll need to have a look through its config files, found in
HRGarages/config/folderAdd this to your
server.cfgstart oxmysql start HRLib start framework # es_extended or "qb-core" start HRGaragesRestart your server and enjoy the script
Config
HRGarages config is separated in couple files for better definition of the script's features configs.
You can find these files in HRGarages/config/ folder.
Very important to know is when you have custom cars, you have to add your own images for the cars in the rent-a-car feature if any of them is with custom model. You can do this by putting .webp images in HRGarages/config/customImages/ folder.
local config <const> = {}
config.commands = {
enable = true,
commandsSettings = {
giveVehicle = {
enable = true,
isRestricted = true,
name = 'giveVehicle',
description = 'Give vehicle to player',
suggestions = {
{
name = 'playerId',
help = 'Target player server Id'
},
{
name = 'vehicleModel',
help = 'The vehicle model (spawn code)'
},
{
name = 'vehiclePlate',
help = 'The vehicle\'s plate, must be 8 characters long, not more or less (not necessary, default - random plate)'
},
{
name = 'garageIndex',
help = 'The garage where to put the vehicle in (not necessary, default - random garage)'
}
}
},
removeVehicle = { -- Remove vehicle from garage
enable = true,
isRestricted = true,
name = 'removeVehicle',
description = 'Remove vehicle from someone\'s garage',
suggestions = {
{
name = 'vehiclePlate',
help = 'The target vehicle\'s plate'
}
}
}
}
}local config <const> = {}
config.impoundGarages = {
impoundFee = 500,
feeAccount = 'bank',
blipSettings = {
blipLabel = 'Наказателен Паркинг',
blipSprite = 50,
blipScale = 0.8,
blipColor = 1,
blipDisplay = 2
},
garagesCoords = {
{ -- The positions are the positions of davispd's impound
pedPosition = vector4(407.3775, -1624.6903, 29.2919, 229.4537),
spawnCoords = {
vector4(419.4937, -1629.6766, 28.7694, 141.8549),
vector4(416.9567, -1627.7761, 28.7691, 140.8800),
vector4(420.7558, -1635.7812, 28.7695, 90.0989),
vector4(420.2980, -1638.9332, 28.7694, 89.4561),
vector4(420.0670, -1641.9648, 28.7682, 90.4215),
vector4(417.9238, -1645.8817, 28.7692, 50.1330),
vector4(409.5179, -1639.7175, 28.7694, 50.1143),
vector4(411.7224, -1637.4547, 28.7677, 49.5121),
vector4(410.9884, -1656.1366, 28.7684, 320.7554),
vector4(408.5130, -1654.0081, 28.7674, 320.4073),
vector4(406.2133, -1651.8816, 28.7680, 321.2579),
vector4(403.6921, -1650.1006, 28.7698, 319.3674),
vector4(401.2584, -1647.9384, 28.7686, 321.0678),
vector4(398.8898, -1645.9050, 28.7681, 320.1758),
vector4(396.4982, -1643.9979, 28.7678, 319.6743)
},
},
{
pedPosition = vector4(-997.5369, -2609.1375, 34.1051, 61.4905),
spawnCoords = {
vector4(-1036.0671, -2594.7007, 33.6415, 239.7062),
vector4(-1041.9172, -2604.7439, 34.7515, 239.8721),
vector4(-1041.9172, -2604.7439, 34.7515, 239.8721),
vector4(-1043.8073, -2607.8970, 35.2286, 239.8059),
vector4(-1045.6228, -2611.1833, 35.6566, 242.0721),
vector4(-1047.4730, -2614.4690, 35.9615, 240.4093),
vector4(-1049.4044, -2617.7058, 36.0810, 240.4273),
vector4(-1051.3844, -2621.1892, 36.0819, 238.7776),
vector4(-1053.3983, -2624.7075, 36.0808, 239.7022),
vector4(-1055.1411, -2627.9231, 36.0809, 240.7404),
vector4(-1050.9165, -2634.1196, 36.0807, 330.4901),
vector4(-1045.8861, -2636.8496, 36.0816, 331.4610),
vector4(-1042.6552, -2638.9565, 36.0816, 329.7005),
vector4(-1039.1205, -2640.5459, 36.0813, 329.0218),
vector4(-1036.0254, -2642.4661, 36.0815, 329.2130),
vector4(-1032.8802, -2644.4602, 36.0807, 330.1822),
vector4(-1027.5354, -2647.1790, 36.0808, 329.9557),
vector4(-1020.0037, -2648.1252, 36.0807, 59.1351),
vector4(-1017.9937, -2645.0789, 36.0802, 59.2972),
vector4(-1016.4663, -2641.2429, 36.0812, 60.2956),
vector4(-1014.5867, -2637.9485, 36.0804, 61.3253),
vector4(-1012.6148, -2634.7622, 35.9692, 59.9850),
vector4(-1010.6698, -2631.4111, 35.6602, 59.4836),
vector4(-1008.7834, -2628.1858, 35.2374, 60.3894),
vector4(-1007.1145, -2624.9565, 34.7649, 59.8900),
vector4(-1005.0043, -2621.5977, 34.2634, 59.6823),
vector4(-990.3429, -2596.3906, 34.2909, 59.7864),
vector4(-988.6157, -2593.0942, 34.7629, 59.1846),
vector4(-986.8103, -2589.9231, 35.2353, 59.6966),
vector4(-984.6647, -2586.6897, 35.6740, 59.7913),
vector4(-983.0892, -2583.2856, 35.9689, 60.2164),
vector4(-981.1096, -2580.1484, 36.0817, 61.1329),
vector4(-979.1969, -2576.8584, 36.0813, 60.7341),
vector4(-977.2566, -2573.2073, 36.0814, 60.6374),
vector4(-975.1840, -2570.1863, 36.0806, 60.1721),
vector4(-979.5862, -2564.1074, 36.0814, 150.6615),
vector4(-984.6801, -2561.2854, 36.0803, 150.1661),
vector4(-988.0023, -2559.4822, 36.0808, 150.6355),
vector4(-991.0923, -2557.3784, 36.0819, 149.6764),
vector4(-994.3614, -2555.3557, 36.0806, 150.0310),
vector4(-997.5494, -2553.7366, 36.0804, 150.0156),
vector4(-1010.4410, -2549.7795, 36.0813, 239.5906),
vector4(-1012.2613, -2553.1436, 36.0803, 239.5801),
vector4(-1013.7484, -2556.6387, 36.0806, 240.5843),
vector4(-1015.9405, -2560.0564, 36.0814, 241.2577),
vector4(-1017.8153, -2563.3386, 35.9638, 238.7151),
vector4(-1019.6935, -2566.4441, 35.6764, 240.0490),
vector4(-1021.4668, -2569.7725, 35.2512, 239.9813),
vector4(-1023.5087, -2573.1062, 34.7443, 240.8344),
vector4(-1029.4121, -2583.2139, 33.6442, 240.5854),
vector4(-1032.8279, -2587.5667, 33.5808, 149.9727),
vector4(-1026.3269, -2631.1487, 36.0819, 60.3608),
vector4(-1024.6825, -2627.9026, 36.1887, 61.8188),
vector4(-1022.7653, -2624.3979, 36.5100, 61.4683),
vector4(-1020.8685, -2621.1584, 36.9404, 61.1954),
vector4(-1018.7793, -2617.7974, 37.4556, 59.8752),
vector4(-1017.1857, -2614.5049, 37.9135, 61.4325),
vector4(-1015.4185, -2611.3396, 38.2855, 62.0851),
vector4(-1013.4188, -2607.7563, 38.5135, 59.8955),
vector4(-1011.1500, -2603.8184, 38.5812, 61.7686),
vector4(-1008.8450, -2600.1765, 38.5809, 60.5307),
vector4(-1006.8692, -2596.5051, 38.5249, 60.3360),
vector4(-1004.6511, -2592.7224, 38.2919, 58.7827),
vector4(-1002.6298, -2589.6340, 37.9152, 60.2502),
vector4(-1001.0703, -2586.1936, 37.4431, 60.1256),
vector4(-998.9055, -2582.9937, 36.9406, 56.9936),
vector4(-997.0244, -2579.6938, 36.5058, 57.2840),
vector4(-995.3116, -2576.2146, 36.1944, 59.0174),
vector4(-993.0876, -2573.2109, 36.0807, 60.6300),
vector4(-1003.7957, -2567.1321, 36.0827, 239.0772),
vector4(-1005.5946, -2570.4246, 36.2016, 240.0495),
vector4(-1007.3491, -2573.5938, 36.4941, 242.8657),
vector4(-1009.3415, -2576.9468, 36.9389, 241.6693),
vector4(-1009.3415, -2576.9468, 36.9389, 241.6693),
vector4(-1013.2113, -2583.4050, 37.9021, 241.9596),
vector4(-1015.2641, -2586.6960, 38.2993, 240.7301),
vector4(-1017.1455, -2590.1094, 38.5125, 242.2208),
vector4(-1024.6184, -2601.6292, 38.5058, 239.7758),
vector4(-1025.5967, -2605.3992, 38.2896, 239.7485),
vector4(-1027.7299, -2608.4958, 37.9054, 237.1125),
vector4(-1029.4259, -2611.9224, 37.4243, 239.3226),
vector4(-1031.4971, -2615.0906, 36.9329, 237.0353),
vector4(-1033.2600, -2618.4114, 36.5051, 238.1352),
vector4(-1034.9653, -2621.7273, 36.2016, 239.4849),
vector4(-1037.1334, -2624.9343, 36.0816, 238.6463),
},
},
}
}local config <const> = {}
config.jobGarages = {
blip = {
scale = 0.8,
displayId = 2,
asShortRange = true,
},
garagesPositions = {
{
blipLabel = 'LSPD Garage',
blipSprite = 830,
blipColor = 3,
includeImpoundGarage = true,
jobs = {
'police'
},
vehiclesList = {
{ vehicle = 'police', minGrade = 2 },
{ vehicle = 'police2', minGrade = 2 },
{ vehicle = 'police3', minGrade = 2 },
{ vehicle = 'police4', minGrade = 2 },
{ vehicle = 'police5', minGrade = 2 },
},
coords = {
impoundBlipWaypointCoords = vector2(425.1, -979.5), -- It only matters to enter its value when includeImpoundGarage is true, it answers to the position of the waypoint when a player wants to see where its impounded vehicle is while its vehicle is in the job impound garage
pedCoords = vector4(459.0820, -1017.1157, 27.1510, 92.1553),
storeVehicle = vector3(449.1385, -1017.2701, 28.0165),
spawnCoords = {
vector4(462.2119, -1015.1483, 27.5545, 92.0322),
vector4(462.0640, -1019.4016, 27.5717, 91.4052),
vector4(446.0865, -1025.1759, 28.1097, 4.4707),
vector4(442.7256, -1025.6680, 28.1767, 3.2357),
vector4(438.7279, -1025.7568, 28.2453, 2.9294),
vector4(435.0581, -1026.0345, 28.3139, 1.2065),
vector4(431.2184, -1026.6810, 28.3892, 2.7038),
vector4(427.3548, -1026.9606, 28.4574, 3.2657)
}
}
},
{
blipLabel = 'Hospital Garage',
blipSprite = 830,
blipColor = 1,
jobs = {
'ambulance'
},
vehiclesList = {
{ vehicle = 'ambulance', minGrade = 2 },
},
coords = {
pedCoords = vector4(294.1237, -597.9418, 42.3017, 67.4052),
storeVehicle = vector3(287.3814, -597.8590, 42.6540),
spawnCoords = {
vector4(295.6890, -604.4202, 43.0926, 70.7867),
vector4(294.7276, -607.4980, 43.1167, 70.6208),
vector4(293.2164, -610.1205, 43.1302, 68.7475)
}
}
}
}
}local config <const> = {}
config.language = 'en'
config.pedInteraction = 'target' -- 'target' or 'key'
config.interactionSettings = {
target = {
distance = 5.0,
translation = {
optionLabel = 'Open garage'
}
},
key = {
distance = 1.0,
keyToInteract = 'E',
translation = {
textUIDescription = '[%s] - Garage' -- You must have the `%s` in the string, otherwise there will be an error!
}
}
}
config.garagePeds = {
'a_m_y_stbla_02',
'a_m_y_smartcaspat_01'
}
config.garagesBlip = {
blipLabel = 'Garage',
blipSprite = 357,
blipScale = 0.8,
blipColor = 5,
blipDisplay = 2,
asShortRange = true
}
config.storePoints = {
markerType = 36,
showInteractDistance = 20.0,
showTextUIDistance = 3.0,
color = { r = 255, g = 0, b = 0 },
alpha = 1000.0,
interactKey = 'E',
textUILabel = '[%s] - To store the vehicle' -- The %s is important (it is being replaced with the interact key)
}local config <const> = {}
config.rentACar = {
enable = true,
finesAccount = 'bank',
rentACarAccount = 'bank',
cars = {
{
model = 'asbo',
price = 200,
fine_markup = 100,
finePer10PercentDamage = 100
},
{
model = 'issi2',
price = 350,
fine_markup = 200,
finePer10PercentDamage = 150
},
{
model = 'blista',
price = 250,
fine_markup = 100,
finePer10PercentDamage = 200
},
{
model = 'carbonizzare',
price = 1000,
fine_markup = 300,
finePer10PercentDamage = 220
},
{
model = 'comet2',
price = 900,
fine_markup = 300,
finePer10PercentDamage = 300
},
{
model = 'comet6',
price = 2000,
fine_markup = 500,
finePer10PercentDamage = 400
}
}
}Last updated