Configuration
Default configuration
This is the default configuration of the script. Take note that there is others configurations in the bridge files : Configuration for your notification resource, keys system, fuel system, and more...
Config = { publicGarages = {}, jobGarages = {}, gangGarages = {}, impounds = {} }
-- [string] → The locale you want to use. If the locale does not exist, the script will use the default locale.
Config.locale = GetConvar(GetCurrentResourceName() .. ":locale", "en")
-- [string] → The bridge you want to use. You can put a valid bridge or put "auto_detect" to let the script choose the best bridge for you.
Config.bridge = "auto_detect"
-- [boolean] → If you want the script to check for updates. If the script is not up to date, it will print a message in the console.
Config.checkForUpdates = true
-- [string] → The system you want to use to interact with the locations. You can put "marker" or "target"
Config.interactSystem = GetConvar("lyre_garage:interact", "marker")
-- [boolean] → If you want the background to be blurred when the menu is opened.
Config.backgroundBlur = false
-- [boolean] → If you want to apply a stylized filter to vehicle images for better visual rendering.
Config.useVehicleImageFilter = true
-- [string] → The online source to use as a fallback for vehicle images when local images are not found.
-- Set to false to disable online image loading.
Config.imageSecondLoaderOnlineSource = "https://raw.githubusercontent.com/lyrescripts/lyre_garage-images/refs/heads/main/images/"
-- [table] → The hud functions, use them if you want to show and hide your hud when the menu is opened.
Config.hud = {
show = function() end,
hide = function() end,
}
-- [string] → The method you want to use to spawn the vehicle.
-- Avalaible options are "serversetter" or "client"
-- It is recommended to use the "client" method if you want to ensure 100% that the vehicle always spawns correctly.
-- However, the "serversetter" method allows vehicles to spawn server-side, which gives you the ability to enable
-- lockdown on your server and provides an easy way to implement a highly effective anti-cheat system.
-- Note that using the "serversetter" method may, in some cases on very large servers (300-400 connected players),
-- cause synchronization issues. This is due to how FiveM works, and we have no control over it.
-- It is up to you to choose the method that best suits your needs.
Config.spawnVehicleMethod = "serversetter"
-- [boolean] → If you want vehicles to be locked when they spawn.
Config.lockVehicleOnSpawn = false
-- [table] → The maximum upgrades for the vehicles.
Config.vehiclesMaxUpgrades = {
["modEngine"] = 3,
["modBrakes"] = 2,
["modTransmission"] = 2,
["modTurbo"] = 1,
}
-- [boolean] → If you want to use the unique garage system. If set to true, vehicle cannot be take out from a different garage
-- than the one they are stored in.
Config.uniqueGarage = true
-- [boolean] → If you want to use the unique impound system. If set to true, vehicle cannot be take out from a different impound
-- than the one they are impounded in.
Config.uniqueImpounds = true
-- [boolean] → If you want the script to block NPC vehicles from spawning in garage zones. Big performance impact when enabled, prefer other way to block NPC spawns if possible.
Config.antiNPCSpawn = false
-- [boolean] → If you want to enable duty verification for job garages. If set to true, players must be on duty to access job garages.
Config.jobGaragesDutyVerification = false
-- [boolean] → If you want to enable duty verification for gang garages. If set to true, players must be on duty to access gang garages.
Config.gangGaragesDutyVerification = false
-- [number] → The price to transfer a vehicle between garages
Config.transferVehiclePrice = 500
-- [table] → Blacklist of vehicle models that cannot be transferred to another owner
-- Format: ["model_name"] = true
Config.vehicleSellBlacklist = {
-- Example:
-- ["adder"] = true,
-- ["t20"] = true,
}
-- [boolean] → Does the garage blips use location names or not.
-- true : The blips will use the location names (ex: "Garage A")
-- false : The blips will use generic names (ex: "Public Garage")
Config.blipUseLocationName = false
-- [table] → Configuration for blips
Config.blips = {
["public"] = {
sprite = 357, -- [number] → The sprite ID for the blip
scale = 1.0, -- [number] → The scale of the blip
color = 3, -- [number] → The color ID for the blip
isShortRange = true, -- [boolean] → Whether the blip is short-range
},
["public_boat"] = {
sprite = 356, -- [number] → The sprite ID for the blip
scale = 1.0, -- [number] → The scale of the blip
color = 3, -- [number] → The color ID for the blip
isShortRange = true, -- [boolean] → Whether the blip is short-range
},
["public_heli"] = {
sprite = 360, -- [number] → The sprite ID for the blip
scale = 1.0, -- [number] → The scale of the blip
color = 3, -- [number] → The color ID for the blip
isShortRange = true, -- [boolean] → Whether the blip is short-range
},
["public_plane"] = {
sprite = 359, -- [number] → The sprite ID for the blip
scale = 1.0, -- [number] → The scale of the blip
color = 3, -- [number] → The color ID for the blip
isShortRange = true, -- [boolean] → Whether the blip is short-range
},
["impound"] = {
sprite = 68, -- [number] → The sprite ID for the blip (police impound icon)
scale = 1.0, -- [number] → The scale of the blip
color = 1, -- [number] → The color ID for the blip (red)
isShortRange = true, -- [boolean] → Whether the blip is short-range
},
["impound_boat"] = {
sprite = 455, -- [number] → The sprite ID for the blip (boat impound)
scale = 1.0, -- [number] → The scale of the blip
color = 1, -- [number] → The color ID for the blip (red)
isShortRange = true, -- [boolean] → Whether the blip is short-range
},
["impound_heli"] = {
sprite = 64, -- [number] → The sprite ID for the blip (helicopter impound)
scale = 1.0, -- [number] → The scale of the blip
color = 1, -- [number] → The color ID for the blip (red)
isShortRange = true, -- [boolean] → Whether the blip is short-range
},
["impound_plane"] = {
sprite = 307, -- [number] → The sprite ID for the blip (plane impound)
scale = 1.0, -- [number] → The scale of the blip
color = 1, -- [number] → The color ID for the blip (red)
isShortRange = true, -- [boolean] → Whether the blip is short-range
},
["job"] = {
sprite = 357, -- [number] → The sprite ID for the blip
scale = 1.0, -- [number] → The scale of the blip
color = 5, -- [number] → The color ID for the blip (yellow)
isShortRange = true, -- [boolean] → Whether the blip is short-range
},
["gang"] = {
sprite = 357, -- [number] → The sprite ID for the blip
scale = 1.0, -- [number] → The scale of the blip
color = 1, -- [number] → The color ID for the blip (red)
isShortRange = true, -- [boolean] → Whether the blip is short-range
},
}
-- [table] → Custom actions that appear as buttons in garage vehicle menus
-- These actions will be available in Public Garage, Property Garage, Job Owned Garage, and Gang Owned Garage menus
-- Each action will receive comprehensive vehicle data when triggered
Config.garageActions = {
-- {
-- id = "custom_action_1",
-- label = "Custom Action #1",
-- icon = "fa-solid fa-star",
-- callback = function(vehicleData)
-- print("=== Custom Action 1 Triggered ===")
-- print("Vehicle Name: " .. (vehicleData.name or "N/A"))
-- print("Vehicle Plate: " .. (vehicleData.plate or "N/A"))
-- print("Vehicle Model: " .. (vehicleData.model or "N/A"))
-- print("Vehicle Location: " .. (vehicleData.location or "N/A"))
-- print("Vehicle Location Name: " .. (vehicleData.locationName or "N/A"))
-- print("Vehicle Type: " .. (vehicleData.type or "N/A"))
-- print("Vehicle Health: " .. (vehicleData.state and vehicleData.state.health or "N/A"))
-- print("Vehicle Fuel: " .. (vehicleData.state and vehicleData.state.fuel or "N/A"))
-- if vehicleData.garageType then
-- print("Garage Type: " .. vehicleData.garageType)
-- end
-- if vehicleData.garageId then
-- print("Garage ID: " .. vehicleData.garageId)
-- end
-- print("Player Source: " .. (vehicleData.source or "N/A"))
-- end
-- },
}
-- [table] → Configuration for ped advanced animations
Config.pedsAdvancedAnimationsConfiguration = {
["all"] = { dict = "amb@world_human_seat_wall_tablet@female@base", anim = "base" }
}
-- [table] → Configuration for ped prop placement
Config.pedsAdvancedPropConfiguration = {
["all"] = { model = "prop_cs_tablet", bone = 57005, pos = { x = 0.17, y = 0.07, z = -0.16 }, rot = { x = 20.0, y = 180.0, z = 180.0 } },
}
-- [table] → Configuration for take out marker style
Config.pedsAdvancedMarkerStyle = {
["all"] = "takeout"
}
-- [table] → Configuration for park vehicle marker style
Config.parkAdvancedMarkerStyle = {
["all"] = "park"
}
-- [table] → Configuration for the impound command
Config.impoundCommand = {
-- [string] → The name of the slash command to impound vehicles
commandName = "impound",
-- [table] → List of jobs that can use the impound command
authorizedJobs = {
"police",
"sheriff",
"state",
},
-- [table] → List of admin ranks that can use the impound command (for admin permissions)
authorizedAdminRanks = {
"admin",
"superadmin",
"owner",
},
-- [number] → Maximum distance to detect a nearby vehicle for impounding
maxVehicleDistance = 5.0,
-- [table] → Animation played when impounding a vehicle
animation = {
dict = "amb@world_human_clipboard@male@idle_a",
name = "idle_c",
duration = 3000, -- milliseconds
flag = 1,
},
-- [table] → Prop shown during impound animation (clipboard)
prop = {
model = "prop_notepad_02",
bone = 18905, -- right hand
pos = { x = 0.1, y = 0.02, z = 0.08 },
rot = { x = -50.0, y = -50.0, z = -30.0 },
},
}
-- [number] → The price to retrieve a vehicle from the impound
Config.impoundFee = 1000
-- [boolean] → Allow officers to set custom impound fees (if false, uses Config.impoundFee)
Config.allowSetCustomImpoundFees = true
-- [boolean] → Allow players to retrieve their own impounded vehicles (if false, only authorized jobs can release)
Config.allowRetrieveImpoundByMyself = true
-- [boolean] → Allow officers to set retrieval conditions (who can retrieve: owner only, anyone, job only)
Config.allowSetRetrieveCondition = true
-- [boolean] → Allow officers to set a minimum date before vehicle can be retrieved
Config.allowSetMinimumRetrieveDate = true
-- [boolean] → Allow officers to set an impound reason that will be visible to the player
Config.allowSetImpoundReason = true
-- [boolean] → Show who impounded the vehicle to the player (officer name)
Config.showImpoundExecutor = false
Config.giveCommand = {
-- [string] → The name of the slash command to give vehicles
commandName = "dbgivevehicle",
-- [table] → List of admin ranks that can use the give vehicle command (for admin permissions)
authorizedAdminRanks = {
"admin",
"superadmin",
"owner",
},
}
Config.deleteCommand = {
-- [string] → The name of the slash command to delete vehicles
commandName = "dbdeletevehicle",
-- [table] → List of admin ranks that can use the delete vehicle command (for admin permissions)
authorizedAdminRanks = {
"admin",
"superadmin",
"owner",
},
}
Config.changePlateCommand = {
-- [string] → The name of the slash command to change vehicle plates
commandName = "dbchangeplate",
-- [table] → List of admin ranks that can use the change plate command (for admin permissions)
authorizedAdminRanks = {
"admin",
"superadmin",
"owner",
},
}
Config.garagesCommand = {
-- [string] → The name of the slash command to manage garages
commandName = "garagemanagement",
-- [table] → List of admin ranks that can use the garages management command
authorizedAdminRanks = {
"admin",
"superadmin",
"owner",
},
}
Config.unlockImpoundCommand = {
-- [string] → The name of the slash command to unlock impounded vehicles
commandName = "unlockiv",
-- [table] → List of jobs that can use the unlock impound command
authorizedJobs = {
"police",
"sheriff",
"state",
},
-- [table] → List of admin ranks that can use the unlock impound command (for admin permissions)
authorizedAdminRanks = {
"admin",
"superadmin",
"owner",
},
}
-- [table] → Discord webhook configuration for logging system actions
-- Set the webhook URL for each event type you want to log (set to false to disable that log type)
Config.webhooks = {
-- Garage management
["create_garage"] = false, -- When a garage is created via /garagemanagement
["delete_garage"] = false, -- When a garage is deleted via /garagemanagement
["edit_garage"] = false, -- When a garage configuration is edited
-- Impound management
["create_impound"] = false, -- When an impound is created via /garagemanagement
["delete_impound"] = false, -- When an impound is deleted via /garagemanagement
["edit_impound"] = false, -- When an impound configuration is edited
-- Vehicle storage/retrieval (public/job/gang owned garages)
["store_vehicle"] = false, -- When a player stores a vehicle in their garage
["retrieve_vehicle"] = false, -- When a player retrieves a vehicle from their garage
["transfer_vehicle"] = false, -- When a player transfers a vehicle between garages
["rename_vehicle"] = false, -- When a player renames their vehicle
-- Job/Gang spawn garage vehicles
["spawn_job_vehicle"] = false, -- When a job vehicle is spawned from a spawn garage
["spawn_gang_vehicle"] = false, -- When a gang vehicle is spawned from a spawn garage
["return_job_vehicle"] = false, -- When a job vehicle is returned to a spawn garage
["return_gang_vehicle"] = false, -- When a gang vehicle is returned to a spawn garage
-- Impound operations
["impound_vehicle"] = false, -- When a vehicle is impounded via /impound command
["retrieve_impound"] = false, -- When a vehicle is retrieved from impound
["unlock_impound"] = false, -- When an impounded vehicle is unlocked via /unlockiv
-- Admin commands
["give_vehicle"] = false, -- When an admin gives a vehicle via /dbgivevehicle
["delete_vehicle"] = false, -- When an admin deletes a vehicle via /dbdeletevehicle
["change_plate"] = false, -- When an admin changes a vehicle plate via /dbchangeplate
}
-- [table] → This is the list of vehicles for each types. Any vehicle that is not in the list will be considered as "automobile"
Config.vehiclesTypes = {
["boat"] = {
"dinghy",
"dinghy2",
"dinghy3",
"dinghy4",
"jetmax",
"marquis",
"seashark",
"seashark2",
"seashark3",
"speeder",
"speeder2",
"squalo",
"submersible",
"submersible2",
"suntrap",
"toro",
"toro2",
"tropic",
"tropic2",
"tug",
"avisa",
"dinghy5",
"kosatka",
"longfin",
"patrolboat",
"predator",
},
["plane"] = {
"alphaz1",
"avenger",
"avenger2",
"besra",
"blimp",
"blimp2",
"blimp3",
"bombushka",
"cargoplane",
"cargoplane2",
"cuban800",
"dodo",
"duster",
"howard",
"hydra",
"jet",
"lazer",
"luxor",
"luxor2",
"mammatus",
"microlight",
"miljet",
"mogul",
"molotok",
"nimbus",
"nokota",
"pyro",
"rogue",
"seabreeze",
"shamal",
"starling",
"strikeforce",
"stunt",
"titan",
"tula",
"velum",
"velum2",
"vestra",
"volatol",
"alkonost",
},
["heli"] = {
"akula",
"annihilator",
"annihilator2",
"buzzard",
"buzzard2",
"cargobob",
"cargobob2",
"cargobob3",
"cargobob4",
"conada",
"frogger",
"frogger2",
"havok",
"hunter",
"maverick",
"savage",
"seasparrow",
"seasparrow2",
"seasparrow3",
"skylift",
"supervolito",
"supervolito2",
"swift",
"swift2",
"valkyrie",
"valkyrie2",
"volatus",
"polmav",
},
}
-- [table] → The styles for the markers, only used if Config.interactSystem is set to "marker"
Config.markerStyles = {
["takeout"] = {
["far"] = {
{
type = 6,
size = vec3(1.0, 1.0, 1.0),
rotation = vec3(270.0, 0.0, 0.0),
offset = vec3(0.0, 0.0, 0.0),
bobUpAndDown = false,
faceCamera = false,
rotate = false,
color = { r = 100, g = 100, b = 200, a = 150 },
},
},
["near"] = {
{
type = 6,
size = vec3(1.0, 1.0, 1.0),
rotation = vec3(270.0, 0.0, 0.0),
offset = vec3(0.0, 0.0, 0.0),
bobUpAndDown = false,
faceCamera = false,
rotate = false,
color = { r = 150, g = 150, b = 200, a = 150 },
},
},
},
["park"] = {
["far"] = {
{
type = 1,
size = vec3(6.0, 6.0, 0.5),
rotation = vec3(0.0, 0.0, 0.0),
offset = vec3(0.0, 0.0, 0.0),
bobUpAndDown = false,
faceCamera = false,
rotate = false,
color = { r = 100, g = 100, b = 200, a = 150 },
},
{
type = 2,
size = vec3(0.5, 0.5, 0.5),
rotation = vec3(180.0, 0.0, 0.0),
offset = vec3(0.0, 0.0, 1.5),
bobUpAndDown = false,
faceCamera = false,
rotate = true,
color = { r = 100, g = 100, b = 200, a = 150 },
},
},
["near"] = {
{
type = 1,
size = vec3(6.0, 6.0, 0.5),
rotation = vec3(0.0, 0.0, 0.0),
offset = vec3(0.0, 0.0, 0.0),
bobUpAndDown = false,
faceCamera = false,
rotate = false,
color = { r = 150, g = 150, b = 200, a = 150 },
},
},
},
}Last updated