Documentation

Config

Explanations for all config values.

General Information

Additional Settings
If there is a feature within the script that you can't find in the script's config, there is a chance that the configuration lies within zyke-lib.

Keymapping
When stated to utilize keymapping, the key can be changed in your GTA / FiveM keybinds.

Keys
All available keys can be found in the current zyke_lib key reference.

Prop Models
All prop models can be found here.

Ped Models
All ped models can be found here.

Blip Settings
All blip settings can be found here.

#Config.Settings

All basic settings.

Vehicle key access, key fob controls, lockpicking, hotwiring, NPC key theft, witnesses, and engine controls are configured in the selected key provider. See the Vehicle Keys config when using zyke_vehiclekeys.

#keyServices

Garage-owned services that call the selected vehicle-key provider. These settings do not select or configure the provider itself. Set vehicleKeys in zyke_lib/dependency_override.lua for that.

Example:

lua
keyServices = {
    handleAutomaticKeys = true,
    disableGaragePurchase = false,
    newKeyPrice = 500,
    repayOnCleanup = 100,
}

#keyServices.handleAutomaticKeys

Automatically gives a new owner access through the selected key provider after ownership is assigned.

Example:

lua
handleAutomaticKeys = true

#keyServices.disableGaragePurchase

Disables replacement-key purchases and the related garage personal settings. This does not disable the selected key provider.

Example:

lua
disableGaragePurchase = false

#keyServices.newKeyPrice

Price charged by Garages for a replacement physical key. Identifier-based providers do not use replacement purchases.

Example:

lua
newKeyPrice = 500

#keyServices.repayOnCleanup

Percentage of the configured key price repaid per matching physical key removed by the player's Key Cleanup garage setting.

Example:

lua
repayOnCleanup = 100

#debug

Debugging is a development tool used to track values within the resource. If you are experiencing odd issues, we recommend using the debug functionality to have a transparent view of what happens within the script. Utilizing debug can help you spot weird values and easily address the problem.

Example:

lua
debug = {
    basic = false,
    permission = {"command"},

    persistentVehicles = false,
    displayGarageCoverage = false,
    databaseIntegrity = false,
    vehicleActions = false,
    garageMenuBenchmark = false,
    startup = false
}

#debug.basic

Basic debugging.

Example:

lua
basic = false

#debug.permission

The permission required to use the debug commands.

Example:

lua
permission = {"command"}

#debug.persistentVehicles

Everything regarding persistent vehicles. This can spam quite a lot, so unless you specifically want to see it, we can disable it.

Example:

lua
persistentVehicles = false

#debug.displayGarageCoverage

Displays a radius around each garage blip on the map, this helps visualize the garage coverage and find dead-zones.

Example:

lua
displayGarageCoverage = false

#debug.databaseIntegrity

Database integrity debugs.

Example:

lua
databaseIntegrity = false

#debug.vehicleActions

This is for loops of vehicle actions, and can spam quite a lot. Such as locking newly spawned NPC vehicles etc. This won't log you just locking your car normally.

Example:

lua
vehicleActions = false

#debug.garageMenuBenchmark

Benchmarks garage menu open/fetch/render timings.

Example:

lua
garageMenuBenchmark = false

#debug.startup

Verbose startup flow timings for client/server initialization issues.

Example:

lua
startup = false

#blipCategories

Categories used to clump together blips in the map menu. These have to be unique to not interfere with other resources, set as nil to disable a category.

Example:

lua
blipCategories = {
    garages = 167,
    impounds = 168,
    trackedVehicles = 170,
    impounderPositions = 171,
}

#reservedBucket

Routing buckets are what is used to distribute people across "private sessions". We utilize them to only display entities or players in certain private garages or prevent problems when using the garage builder. When entering a private garage it will take the reserved value plus the index of the garage, which is basically in which order you created the garages. So if you have 100 garages, your range would be between 1001-1101 if you have 1000 as your value. It is important that these are unique to not cause any issues with other resources.

Example:

lua
reservedBucket = 1000

#vinLength

Number of characters the vin number will be. Should not touch this. Note that if you change this after vehicles have received a vin, it may break certain functionalities, also important that it has to be larger than entity identifiers, which is ~7

Example:

lua
vinLength = 17

#transferOwnershipInGarage

If disabled, the transfer ownership button is removed from the garage UI. This is just the basic button, disable transferContracts too, if you want to hide any transfer option completely.

Example:

lua
transferOwnershipInGarage = false

#transferContracts

Various settings for the transfer contracts, which are used to transfer vehicle ownership between players.

Example:

lua
transferContracts = {
    enabled = true,
    item = "vehicle_transfer_contract",
    draftCooldown = 5,
}

#transferContracts.enabled

Enable or disable transfer contracts entirely.

Example:

lua
enabled = true

#transferContracts.item

The item that is consumed when creating a transfer contract.

Example:

lua
item = "vehicle_transfer_contract"

#transferContracts.draftCooldown

Cooldown in seconds before you can create another draft after creating one.

Example:

lua
draftCooldown = 5

#gradeSeparator

When handling and tracking profession-based access we separate other types of identifiers from profession grades by adding this separator at the very beginning. If you have any grades with the separator already in their name, it will cause issues. It will format "chief" to "grade:chief".

Example:

lua
gradeSeparator = "grade:"

#spawnInVehicle

If enabled, you will teleport into the vehicle you spawned from a garage or impound.

Example:

lua
spawnInVehicle = false

#baseVehicleImage

Various settings for the base vehicle images shown in the garage menu.

Example:

lua
baseVehicleImage = {
    baseUrl = "https://cdn.zykeresources.com/basevehicles",
    url = "edited/<model>_sideview.png",
    useThumbnails = true,
    disableImageStudio = false,
}

#baseVehicleImage.baseUrl

The base URL of the hosted vehicle images. Missing images fall back to this base URL plus the url path.

Example:

lua
baseUrl = "https://cdn.zykeresources.com/basevehicles"

#baseVehicleImage.url

The image path for each vehicle model, <model> is replaced with the vehicle's model name. With the defaults, adder resolves to https://cdn.zykeresources.com/basevehicles/edited/adder_sideview.png.

Example:

lua
url = "edited/<model>_sideview.png"

#baseVehicleImage.useThumbnails

Recommended to reduce image size and garage menu load time, the difference can be up to 60x faster loading, with barely noticeable difference.

Example:

lua
useThumbnails = true

#baseVehicleImage.disableImageStudio

If enabled, the base URL is always used, even when zyke_imagestudio is started.

Example:

lua
disableImageStudio = false

#impound

Various settings for the impounds.

lua
impound = {
    command = "gimpound",
    defaultPoliceLock = false,
    management = {
        command = "gimpounds",
        commandEnabled = true,
        targetEnabled = true,
        itemsPerPage = 20,
    },
    licenseMapping = {
        -- Maps vehicle classes to license names, all classes are mapped in the config
    },
    defaultPrice = 2500,
    useSocietyPayout = true,
    entryMethods = {
        command = true,
        commandInZone = true,
        parkInZone = true,
        position = true,
    },
    positionBlip = {
        sprite = 525,
        scale = 0.8,
        color = 47,
        shortRange = true,
    },
    jobs = {
        {name = "mechanic", society = "mechanic", label = "Mechanic", restricted = 6, maxPrice = 20000, allowLicenseRequirement = true, allowVehicleRemoval = true},
        {name = "police", society = "police", label = "Police", maxPrice = 50000, allowLicenseRequirement = true},
        {name = "security", society = "security", label = "Security", restricted = 3, maxPrice = 5000},
    },
    length = {
        {value = 0, label = "Available Instantly"},
        {value = 3600, label = "1 Hour"},
        {value = 14400, label = "4 Hours"},
        {value = 43200, label = "12 Hours"},
        {value = 86400, label = "1 Day"},
        {value = 172800, label = "2 Days"},
        {value = 345600, label = "4 Days"},
        {value = 604800, label = "7 Days"},
    },
    autoImpound = {
        enabled = true,
        price = 2500,
        destroyedPrice = 10000,
        locked = 0,
    },
}

#impound.command

Command to prompt the impound menu.

Example:

lua
command = "gimpound"

#impound.defaultPoliceLock

Default state of the police lock option when impounding a vehicle.

Example:

lua
defaultPoliceLock = false

#impound.management

Various settings for the impound management menu.

Example:

lua
management = {
    command = "gimpounds",
    commandEnabled = true,
    targetEnabled = true,
    itemsPerPage = 20,
}

#impound.management.command

The command to open the impound management menu.

Example:

lua
command = "gimpounds"

#impound.management.commandEnabled

Allow opening impound management with the command.

Example:

lua
commandEnabled = true

#impound.management.targetEnabled

Add impound management to configured impound garage targets.

Example:

lua
targetEnabled = true

#impound.management.itemsPerPage

Amount of entries displayed per page. Probably don't touch.

Example:

lua
itemsPerPage = 20

#impound.defaultPrice

Default price is applied when you get your vehicle through the onRestart functionality.

Example:

lua
defaultPrice = 2500

#impound.useSocietyPayout

If enabled, all the money paid for impounds will go to the society account of the impounder. If disabled, it will not pay out to anything, just remove the money from the player.

Example:

lua
useSocietyPayout = true,

#impound.licenseMapping

Maps vehicle classes (GetVehicleClass) to a license name for Z.hasLicense. If a class is not listed or set to nil, no license is required for that class even if the license requirement is toggled on. License names are bridge-level, Z.hasLicense handles framework translation, such as "car" to "driver" for QB or "drive" for ESX.

Example:

lua
licenseMapping = {
    [0] = "car",   -- Compacts
    [1] = "car",   -- Sedans
    [8] = "bike",  -- Motorcycles
    [14] = "boat", -- Boats
    [15] = "pilot", -- Helicopters
}

#impound.entryMethods

Different ways to interact with an impound.

Example:

lua
entryMethods = {
    command = true,
    commandInZone = true,
    parkInZone = true,
    position = true,
}

#impound.entryMethods.command

Allow opening the impound menu through the command anywhere.

Example:

lua
command = true

#impound.entryMethods.commandInZone

Allow opening the impound menu through the command while inside the impound zone.

Example:

lua
commandInZone = true

#impound.entryMethods.parkInZone

Allow parking vehicles directly inside of the impound zone.

Example:

lua
parkInZone = true

#impound.entryMethods.position

Allow interacting with the impound position, such as through a target or prompt.

Example:

lua
position = true

#impound.positionBlip

Blip settings for the impound positions.

Example:

lua
positionBlip = {
    sprite = 525,
    scale = 0.8,
    color = 47,
    shortRange = true,
}

#impound.positionBlip.sprite

The sprite for the impound position blip.

Example:

lua
sprite = 525

#impound.positionBlip.scale

The scale / size of the blip.

Example:

lua
scale = 0.8

#impound.positionBlip.color

The color of the blip.

Example:

lua
color = 47

#impound.positionBlip.shortRange

Enabling shortrange will hide the icon on your minimap unless you are close enough to it where it can be properly shown.

Example:

lua
shortRange = true

#impound.jobs

All jobs able to perform impound actions.

Example:

lua
jobs = {
    {name = "mechanic", society = "mechanic", label = "Mechanic", restricted = 6, maxPrice = 20000, allowLicenseRequirement = true, allowVehicleRemoval = true},
    {name = "police", society = "police", label = "Police", maxPrice = 50000, allowLicenseRequirement = true},
    {name = "security", society = "security", label = "Security", restricted = 3, maxPrice = 5000},
},

#impound.jobs[x].name

The name of the job.

Example:

lua
name = "mechanic"

#impound.jobs[x].label

Neatly typed label for the menu.

Example:

lua
label = "Mechanic"

#impound.jobs[x].restricted

Utilizing the restricted value, you can restrict the max time a job can impound a vehicle for. The number you set is the index inside of lengths found here: impound.length.

Restricting in this way means that the vehicle can not have it's impound fee paid for and can not be driven at all. This is recommended to only be utilized by law enforcement.

Set the value to 1 to completely disable this feature as it will only allow the impounder to set it to instantly available.

Example:

lua
restricted = 6

#impound.jobs[x].maxPrice

Limit the max price this job can set as your impound fee. Recommended to have it divisble by the price stepper to make the UI cleaner.

Example:

lua
maxPrice = 20000

#impound.jobs[x].allowLicenseRequirement

If enabled, your job can require a drivers license for the owner of the vehicle to pay the impound fee. This is mainly meant for police when they remove someone's license, impounds the vehicle and don't want them to access the vehicle before receiving a new license.

Example:

lua
allowLicenseRequirement = true

#impound.jobs[x].allowVehicleRemoval

If enabled, your job can instantly have vehicles removed by ticking the "remove vehicle" box when impounding.

Example:

lua
allowVehicleRemoval = true

#impound.length

Different lengths impounders can lock a vehicle for. Always keep at least one value in here, otherwise it is free to change however you want.

Example:

lua
length = {
    {value = 0, label = "Available Instantly"},
    {value = 3600, label = "1 Hour"},
    {value = 14400, label = "4 Hours"},
    {value = 43200, label = "12 Hours"},
    {value = 86400, label = "1 Day"},
    {value = 172800, label = "2 Days"},
    {value = 345600, label = "4 Days"},
    {value = 604800, label = "7 Days"},
}

#impound.length[x].value

The length of the restriction in seconds.


Example:

lua
value = 3600

#impound.length[x].label

Neatly typed label for the option.


Example:

lua
label = "1 Hour"

#impound.autoImpound

Various settings for automatically impounding vehicles.

Example:

lua
autoImpound = {
    enabled = true,
    price = 2500,
    destroyedPrice = 10000,
    locked = 0,
}

#impound.autoImpound.enabled

Enable or disable the auto impound functionality.

Example:

lua
enabled = true

#impound.autoImpound.jobName

The job that is set as the impounder when a vehicle is automatically impounded.

Example:

lua
jobName = "police"

#impound.autoImpound.price

The price to get a vehicle out of the impound when it was automatically impounded.

Example:

lua
price = 2500

#impound.autoImpound.destroyedPrice

The price to get a destroyed vehicle out of the impound when it was automatically impounded.

Example:

lua
destroyedPrice = 10000

#impound.autoImpound.locked

The index inside of the impound lengths to lock automatically impounded vehicles for.

Example:

lua
locked = 0

#impound.autoImpound.reason

The impound reason given to vehicles that were automatically impounded.

Example:

lua
reason = "Auto impounded"

#impound.autoImpound.destroyedReason

The impound reason given to destroyed vehicles that were automatically impounded.

Example:

lua
destroyedReason = "Auto impounded (destroyed)"

#useLegacyESXJobColumn

When enabled (ESX only, auto-ignored on other frameworks), the job column from owned_vehicles is used to bind vehicles to profession garages. This is additive and does not interfere with the existing profession system. This was created as a compatibility layer for those that relied on this system.

Example:

lua
useLegacyESXJobColumn = true

#professionGaragesRequireProfessionVehicles

When enabled, profession garages only accept vehicles owned by one of the professions allowed in that garage. This blocks personal vehicles from being parked in profession fleet garages.

Example:

lua
professionGaragesRequireProfessionVehicles = true

#professionVehicleGarageRestrictionExemptions

Profession vehicles are restricted to matching profession garages by default. Add a profession here to allow its vehicles to park or transfer to regular garages too. This applies both to the legacy ESX job column (when useLegacyESXJobColumn is enabled) and to the script's own profession vehicle ownership.

Example:

lua
professionVehicleGarageRestrictionExemptions = {
    -- ["mechanic"] = true,
}

#windowControls

Various settings for the window controls. All keys utilize keymapping.

Example:

lua
windowControls = {
    upKey = "UP",
    downKey = "DOWN",
}

#windowControls.upKey

The key used to roll up the windows.

Example:

lua
upKey = "UP"

#windowControls.downKey

The key used to roll down the windows.

Example:

lua
downKey = "DOWN"

#storeVehicle

Various settings for storing vehicles.

Example:

lua
storeVehicle = {
    openKey = "E",
    garageMenuOnly = false,
    garageMenuParkingRange = -1,
    maxParkingSpeedKmh = 20.0,
}

#storeVehicle.garageMenuOnly

Forces parking through the garage menu, optionally showing an E prompt that tells players to use the menu. Can be false, "hide" or "notify".

Example:

lua
garageMenuOnly = false

#storeVehicle.garageMenuParkingRange

Max distance from the player to a spawned vehicle before the garage menu allows parking it from a section. Set to -1 to only require section placement, set to a number like 20.0 to have a max distance.

Example:

lua
garageMenuParkingRange = -1

#storeVehicle.maxParkingSpeedKmh

Max vehicle speed while parking, in km/h. 20 km/h is about 12.4 mph. Set to -1 to disable.

Example:

lua
maxParkingSpeedKmh = 20.0

#storeVehicle.openKey

Default key to press to store your vehicles. Utilizes keymapping.

Example:

lua
openKey = "E"

#blipDetails

Global blip settings for all garages, unless new settings are applied in the garage builder.

Example:

lua
blipDetails = {
    enabled = true,
    icon = 357,
    scale = 0.8,
    color = 3,
    shortRange = true,
    scaleRange = {0.2, 1.0},
}

#blipDetails.enabled

Enable or disable the blip.

Example:

lua
enabled = true

#blipDetails.icon

The icon for the garage blip on the map.

Example:

lua
icon = 357

#blipDetails.scale

The scale / size of the blip. The default is a great middleground, can be smaller if you want to make the map more clean.

Example:

lua
scale = 0.8

#blipDetails.color

Color of the blip, set to -1 to disable.


Example:

lua
color = 3

#blipDetails.shortRange

Enabling shortrange will hide the icon on your minimap unless you are close enough to it where it can be properly shown. Recommended to keep this set as true, otherwise your minimap will get very cluttered.

Example:

lua
shortRange = true

#blipDetails.scaleRange

Minimum and maximum scale allowed for the blip settings in the garage builder. This means that the garage builder can set the blip to any value in here. Recommended to modify to your server's needs, perhaps even setting both the minimum and maximum to the default scale to enforce consitency throughout the map.

Note that anything below 0.2 will be invisible, hence why the minimum is set as that.

Example:

lua
scaleRange = {0.2, 1.0}

#fakePlate

Various settings for the fake plate.

Example:

lua
fakePlate = {
    enabled = false,
    item = "vehicleplate",
    allowNonUniquePlates = false,
    requiredCharacters = 6,
    price = 2500,
    applicationTools = {
        {name = "screwdriverset", amount = 1, remove = false},
    },
    removalTools = {
        {name = "screwdriverset", amount = 1, remove = false},
    },
}

#fakePlate.enabled

Enable or disable the fake plate functionality entirely. Fake plates are disabled by default, this is because they can be heavily abused unless you set your server up correctly.

Example:

lua
enabled = false

#fakePlate.item

The item that is consumed when applying a fake plate.

Example:

lua
item = "vehicleplate"

#fakePlate.allowNonUniquePlates

This allows you to set your plate as whatever, even though it's already claimed, disabled by default.

Example:

lua
allowNonUniquePlates = false

#fakePlate.requiredCharacters

The minimum amount of characters required for a fake plate. Keep at least one character, otherwise you might run into issues.

Example:

lua
requiredCharacters = 6

#fakePlate.price

The price to pay to apply a fake plate.

Example:

lua
price = 2500

#fakePlate.applicationTools

The tools required in your inventory to apply a fake plate. The first item in the list will be registered as usable, to trigger the process.

Example:

lua
applicationTools = {
    {name = "screwdriverset", amount = 1, remove = false},
}

#fakePlate.removalTools

The tools required in your inventory to remove a fake plate. The first item in the list will be registered as usable, to trigger the process.

Example:

lua
removalTools = {
    {name = "screwdriverset", amount = 1, remove = false},
}

#fakePlate.mechanic

Settings for the mechanic that can apply fake plates.

Example:

lua
mechanic = {
    pos = vec4(732.290100, -1065.217529, 22.152344, 138.897629),
    name = "Robert",
    model = "s_m_y_dockwork_01",
    blip = {
        enabled = true,
        sprite = 739,
        color = 46
    }
}

#fakePlate.mechanic.pos

The position of the fake plate mechanic.

Example:

lua
pos = vec4(732.290100, -1065.217529, 22.152344, 138.897629)

#fakePlate.mechanic.name

The name of the fake plate mechanic.

Example:

lua
name = "Robert"

#fakePlate.mechanic.model

The model of the fake plate mechanic.

Example:

lua
model = "s_m_y_dockwork_01"

#fakePlate.mechanic.blip

Blip settings for the fake plate mechanic.

Example:

lua
blip = {
    enabled = true,
    sprite = 739,
    color = 46
}

#wipeVehicle

Various settings for the wipe vehicle functionality.

Note that you have to sit in a vehicle to wipe it.

Example:

lua
wipeVehicle = {
    enabled = true,
    command = "gwipe",
    permission = {"command"},
}

#wipeVehicle.enabled

Enable/disable this functionality enitrely.

Example:

lua
enabled = true

#wipeVehicle.command

The command for wiping a vehicle.

Example:

lua
command = "gwipe"

#wipeVehicle.permission

The required permission to perform this action.

Example:

lua
permission = {"command"}

#setPlate

Various settings for setting a vehicle plate.

Example:

lua
setPlate = {
    enabled = true,
    command = "gsetplate",
    permission = {"command"},
}

#setPlate.enabled

Enable/disable this functionality entirely.

Example:

lua
enabled = true

#setPlate.command

The command for setting a plate.

Example:

lua
command = "gsetplate"

#setPlate.permission

The required permission to perform this action.

Example:

lua
permission = {"command"}

#adminVehicleManagement

Various settings for the admin vehicle management menu.

Example:

lua
adminVehicleManagement = {
    enabled = true,
    command = "gvehicles",
    permission = {"command"},
    itemsPerPage = 20,
}

#adminVehicleManagement.enabled

Enable or disable this functionality entirely.

Example:

lua
enabled = true

#adminVehicleManagement.command

The command to open the admin vehicle management menu.

Example:

lua
command = "gvehicles"

#adminVehicleManagement.permission

The required permission to perform this action.

Example:

lua
permission = {"command"}

#adminVehicleManagement.itemsPerPage

Amount of entries displayed per page. Probably don't touch.

Example:

lua
itemsPerPage = 20

#plateChange

Various settings for the plate change functionality.

Example:

lua
plateChange = {
    enabled = true,
    openKey = "E",
    ui = "paper",
    price = 7500,
    paymentAccount = "bank",
    cooldowns = {
        player = 3600,
        vehicle = 86400,
    },
    format = {
        enabled = true,
        pattern = "********",
        requireFullLength = true,
    },
    ped = {
        model = "a_m_y_business_01",
        blip = {
            enabled = true,
            sprite = 525,
            scale = 0.8,
            color = 3,
            shortRange = true,
        }
    }
}

#plateChange.enabled

Enable or disable the plate change functionality entirely.

Example:

lua
enabled = true

#plateChange.openKey

Default key to press to start a plate change. Utilizes keymapping.

Example:

lua
openKey = "E"

#plateChange.ui

The UI style used for the plate change. "paper" uses the contract-style NUI, "modern" uses a zyke_lib form.

Example:

lua
ui = "paper"

#plateChange.price

The price to pay for a plate change.

Example:

lua
price = 7500

#plateChange.paymentAccount

Which account the price is paid from, such as cash, bank, money or dirty_cash/black_money depending on your framework and inventory.

Example:

lua
paymentAccount = "bank"

#plateChange.cooldowns

Cooldown settings for plate changes.

Example:

lua
cooldowns = {
    player = 3600,
    vehicle = 86400,
}

#plateChange.cooldowns.player

Seconds before the same player can change any plate again.

Example:

lua
player = 3600

#plateChange.cooldowns.vehicle

Seconds before the same vehicle can receive another plate change.

Example:

lua
vehicle = 86400

#plateChange.format

Formatting rules for the plate.

Example:

lua
format = {
    enabled = true,
    pattern = "********",
    requireFullLength = true,
}

#plateChange.format.enabled

Enable or disable the plate format enforcement.

Example:

lua
enabled = true

#plateChange.format.pattern

The pattern the plate has to follow, A = letter, 9 = number, * = letter or number, spaces are saved as plate spaces. Examples are generated automatically from the pattern.

Example:

lua
pattern = "********"

#plateChange.format.requireFullLength

Forces every A, 9 and * slot in the pattern to be filled.

Example:

lua
requireFullLength = true

#plateChange.ped

Settings for the ped that handles plate changes.

Example:

lua
ped = {
    model = "a_m_y_business_01",
    blip = {
        enabled = true,
        sprite = 525,
        scale = 0.8,
        color = 3,
        shortRange = true,
    }
}

#plateChange.ped.model

The model of the plate change ped.

Example:

lua
model = "a_m_y_business_01"

#plateChange.ped.blip

Blip settings for the plate change ped.

Example:

lua
blip = {
    enabled = true,
    sprite = 525,
    scale = 0.8,
    color = 3,
    shortRange = true,
}

#saveVehicle

Various settings for saving the vehicle manually.

This functionality is mainly meant to aid jobs that modify your vehicle. Instead of driving it into the garage to save it, running the command will do it. Utilizing our save system will ensure that you have the correct values in the database.

Can also be used for mechanics or other jobs that can repair vehicles.

Note that we also offer an export to do this (LINK EXPORT).

Example:

lua
saveVehicle = {
    command = "gsavevehicle",
    jobs = {"mechanic", "bennys"}
}

#saveVehicle.command

The command to save the vehicle.

Example:

lua
command = "gsavevehicle"

#saveVehicle.jobs

The jobs allowed to manually save a vehicle. This is recommended to limit to jobs that can modify or repair vehicles.

Example:

lua
jobs = {"mechanic", "bennys"}

#claimVehicle

Various settings for claiming vehicles.

Example:

lua
claimVehicle = {
    command = "gclaim",
    enabledForPersonalVehicles = true,
    enabledForPublicVehicles = true,
    permission = {"command"},
}

#claimVehicle.command

Command to claim a vehicle.

Example:

lua
command = "gclaim"

#claimVehicle.enabledForPersonalVehicles

Enabling this feature allows admins to claim another person's vehicle and transfer the ownership.

Example:

lua
enabledForPersonalVehicles = true

#claimVehicle.enabledForPublicVehicles

Enabling this feature allows admins to claim "NPC" vehicles and transfer the ownership. This means that any vehicle that is not owned in the database can be claimed.

Example:

lua
enabledForPublicVehicles = true

#claimVehicle.permission

The permission required to perform this action.

Example:

lua
permission = {"command"}

#vehicleTypes

All vehicle types that exist. Not recommended to touch, unless you're just changing the label.

Example:

lua
vehicleTypes = {
    {name = "automobile", label = "Car"},
    {name = "bike", label = "Bike"},
    {name = "trailer", label = "Trailer"},
    {name = "boat", label = "Boat"},
    {name = "submarine", label = "Submarine"},
    {name = "heli", label = "Helicopter"},
    {name = "plane", label = "Plane"},
    {name = "train", label = "Train"},
}

#vehicleTypes[x].name

The name for the vehicle type. Do not touch as all types are already added and properly named.

#vehicleTypes[x].label

Neatly typed label for the menu.

Example:

lua
label = "Car"

#garageTransfers

Various settings for garage transfers.

Example:

lua
garageTransfers = {
    enabled = true,
    flatPriceEnabled = false,
    flatPrice = 1250,
    personalBasePrice = 1250,
    professionBasePrice = 1250,
    vehicleTypeMultipliers = {
        ["automobile"] = 1.0,
        ["bike"] = 1.0,
    },
}

#garageTransfers.enabled

Enable or disable transferring vehicles between different garagers.

Example:

lua
enabled = true

#garageTransfers.flatPriceEnabled

If enabled, all transfers cost the same regardless of vehicle type or ownership, using the flatPrice.

Example:

lua
flatPriceEnabled = false

#garageTransfers.flatPrice

The price paid when flatPriceEnabled is enabled.

Example:

lua
flatPrice = 1250

#garageTransfers.personalBasePrice

The base price paid when transferring a personal vehicle, set to 0 to disable.

Example:

lua
personalBasePrice = 1250

#garageTransfers.professionBasePrice

The base price paid when transferring a profession vehicle, set to 0 to disable.

Example:

lua
professionBasePrice = 1250

#garageTransfers.vehicleTypeMultipliers

Multipliers applied to the base price depending on the vehicle type.

Example:

lua
vehicleTypeMultipliers = {
    ["automobile"] = 1.0,
    ["bike"] = 1.0,
}

#initializeVehicles

Various settings for initializing vehicles, this is for migrating vehicles from an old garage system to ours.

Example:

lua
initializeVehicles = {
    default = {
        permission = {"command"},
        command = "ginitdefault",
    },
    custom = {
        permission = {"command"},
        command = "ginitvehicles",
    },
    disabled = {
        permission = {"command"},
        command = "ginitdisabled",
    },
},

#initializeVehicles.default

Initialize a base set of vehicles. This command is instant, and appends the performance modifications to all documented base Gta vehicles in the latest version tested. After this is ran, only your custom vehicles would need to be spawned & seeded via our migration.

Example:

lua
default = {
    permission = {"command"},
    command = "ginitdefault",
},

#initializeVehicles.custom

Initializes all of the vehicles in your owned database that are not part of the default list. This can be custom vehicles, or vehicles in a version newer than the one that was captured.

Example:

lua
custom= {
    permission = {"command"},
    command = "ginitvehicles",
},

#initializeVehicles.disabled

Various settings for initializing disabled vehicles. This is used to initialize vehicles that have been set as disabled for various reasons.

Example:

lua
disabled = {
    permission = {"command"},
    command = "ginitdisabled",
},

#purgeDisabledVehicles.command

Command to purge disabled vehicles from the database. This has to be ran from the server console.

Example:

lua
command = "gpurgedisabled"

#resetOutVehicles

Ensures that every vehicle has a valid garage and is set as parked. Mainly used along migration commands in case you need a full reset of the values.

Example:

lua
resetOutVehicles = {
    command = "gresetoutvehicles",
    permission = {"command"},
}

#resetOutVehicles.command

The command to reset out vehicles.

Example:

lua
command = "gresetoutvehicles"

#resetOutVehicles.permission

The required permission to perform this action.

Example:

lua
permission = {"command"}

#inspectBroken

Various settings for inspecting broken vehicles.

Example:

lua
inspectBroken = {
    permission = {"command"},
}

#inspectBroken.permission

The required permission to inspect broken vehicles.

Example:

lua
permission = {"command"}

#garageBuild

Various settings for the garage builder.

Example:

lua
garageBuild = {
    command = "gbuild",
    jobs = {"realestate"},
    permission = {"command"},
}

#garageBuild.command

The command to open the garage builder.

Example:

lua
command = "gbuild"

#garageBuild.jobs

Jobs allowed to open the garage builder. This is recommended to only allow individuals that create properties to use. With this ability they can create and modify garages.

Note that you can only modify garages made by your current job, unless you are an admin. Admins can change the creator job to lock it or allow a new job to manage it.

Example:

lua
jobs = {"realestate"}

#garageBuild.permission

Permission required to open the menu without having the proper job. Having the correct permission also allows you to manage any garage and change the creator value, meaning you can lock modifications to garages.

Example:

lua
permission = {"command"}

#professionVehicles

Various settings for profession vehicles.

Example:

lua
professionVehicles = {
    permission = {"command"},
    upgradeCommand = "gpimpvehicle",
    upgradeEntry = "position",
    upgradeDistance = 5.0,
    temporaryVehicles = {
        enabled = false,
        maxActivePerPlayer = 1,
    },
    societyAccounts = {
        -- ["police"] = "society_police",
    },
}

#professionVehicles.permission

The required permission to manage profession vehicles.

Example:

lua
permission = {"command"}

#professionVehicles.upgradeCommand

The command to upgrade a profession vehicle.

Example:

lua
upgradeCommand = "gpimpvehicle"

#professionVehicles.upgradeEntry

How the upgrade is triggered, "command" or "position".

Example:

lua
upgradeEntry = "position"

#professionVehicles.upgradeDistance

The distance from the vehicle required to upgrade it when using the position entry.

Example:

lua
upgradeDistance = 5.0

#professionVehicles.temporaryVehicles

Settings for spawning fresh temporary copies while keeping purchased vehicles as management templates.

Example:

lua
temporaryVehicles = {
    enabled = false,
    maxActivePerPlayer = 1,
}

#professionVehicles.temporaryVehicles.enabled

Enable spawning fresh temporary copies while keeping purchased vehicles as management templates.

Example:

lua
enabled = false

#professionVehicles.temporaryVehicles.maxActivePerPlayer

The max amount of active copies per player, set to 0 to disable the active-copy limit.

Example:

lua
maxActivePerPlayer = 1

#professionVehicles.societyAccounts

Optional society account overrides for each profession. ESX also tries society_<job> automatically.

Example:

lua
societyAccounts = {
    -- ["police"] = "society_police",
}

#spawnMenu

Various settings and display functions for the spawn menu.

Example:

lua
spawnMenu = {
    openKey = "E",
    maxSpawnDistance = 100.0,
    displayers = {
        marker = true,
        text3d = true
    }
}

#spawnMenu.openKey

The key to open the garage menu when inside of a spawn menu zone. This is only relevant if you are not using a target system.

Example:

lua
openKey = "E"

#spawnMenu.displayers

Various displayers to show where the spawn menu is at. Set to true to utilize them.

Example:

lua
displayers = {
    marker = true,
    text3d = true
}

#spawnMenu.maxSpawnDistance

Maximum distance from the used entrance to a spawn position, set to -1 to disable.

Example:

lua
maxSpawnDistance = 100.0

#deleteGarage

Various settings for deleting garages

If you want to completely disable deleting garages, set allowedForCreator to false and permission to nil.

You can still delete garages that are still being created, as cancelling the creation completely deletes the progress.

Example:

lua
deleteGarage = {
    allowedForCreator = true,
    permission = {"command"},
}

#deleteGarage.allowedForCreator

Allow the creator of the garage to delete it. Note that it checks for the job, so anyone with the real estate job can delete garages created by another real estate agent.

Example:

lua
allowedForCreator = true

#deleteGarage.permission

If you want your admins to be able to delete garages despite not having the correct job, you can set this to true. Set the permission to nil or remove it completely to remove this feature.

Example:

lua
permission = {"command"}

#garageInterior

Various settings and locations for the garage interiors.

The available interiors are located in the interiors.lua file.

Example:

lua
garageInterior = {
    exitGarage = "E",
    openGarage = "G",
    quickEnterModifier = "LSHIFT",
    exitLoadingscreen = "X",
    publicInteriors = {
        enabled = true,
        defaultInterior = "gigantic_car",
        sessionBucketOffset = 10000,
        inviteTimeout = 60,
        requestTimeout = 60,
        defaultRequestMode = "ask",
        defaultShowSession = true,
    },
}

#garageInterior.exitGarage

Key to exit the garage when you are in the correct location. Utilizes keymapping.

Example:

lua
exitGarage = "E"

#garageInterior.openGarage

Key to open the garage menu while inside of the interior. Utilizes keymapping.

Example:

lua
openGarage = "G"

#garageInterior.quickEnterModifier

The modifier key held while parking to quickly enter the interior together with the vehicle. Utilizes keymapping.

Example:

lua
quickEnterModifier = "LSHIFT"

#garageInterior.exitLoadingscreen

Pressing this key during the loadingscreen will exit the garage and stop you from loading. Utilizes keymapping.

Example:

lua
exitLoadingscreen = "X"

#garageInterior.publicInteriors

Various settings for public garage interiors, which can be shared with other players.

Example:

lua
publicInteriors = {
    enabled = true,
    defaultInterior = "gigantic_car",
    sessionBucketOffset = 10000,
    inviteTimeout = 60,
    requestTimeout = 60,
    defaultRequestMode = "ask",
    defaultShowSession = true,
}

#garageInterior.publicInteriors.enabled

Global quick-disable for all public garage interiors.

Example:

lua
enabled = true

#garageInterior.publicInteriors.defaultInterior

The interior used for public garage sessions by default.

Example:

lua
defaultInterior = "gigantic_car"

#garageInterior.publicInteriors.sessionBucketOffset

The routing bucket offset used for public interior sessions.

Example:

lua
sessionBucketOffset = 10000

#garageInterior.publicInteriors.inviteTimeout

How long an invite stays valid, in seconds.

Example:

lua
inviteTimeout = 60

#garageInterior.publicInteriors.requestTimeout

How long a join request stays valid, in seconds.

Example:

lua
requestTimeout = 60

#garageInterior.publicInteriors.defaultRequestMode

The default request mode for new sessions, "ask", "accessListOnly" or "block".

Example:

lua
defaultRequestMode = "ask"

#garageInterior.publicInteriors.defaultShowSession

Whether new sessions are visible to other players by default.

Example:

lua
defaultShowSession = true

#garageInterior.interiors

A list of available interiors that you can use.

Example:

lua
interiors = {
    {
        label = "Small (2 Slots)",
        name = "small_car",
        allowedTypes = {"automobile", "bike"},
        teleport = vec4(178.96, -1000.28, -98.99, 179.49),
        computer = {
            target = vec3(172.93, -999.41, -98.97),
            position = vec3(172.96463012695, -1000.1442260742, -98.999992370605),
        },
        vehiclePositions = {
            vec4(174.9736328125, -1004.135925293, -99.98, 180.0),
            vec4(171.43930053711, -1004.1841430664, -99.98, 180.0),
        }
    },
    -- 6 vehicles, 10 vehicles and hangar are also mapped in the config
}

#garageInterior.interiors[x].label

Neatly typed label for the menu.

Example:

lua
label = "Small (2 Slots)"

#garageInterior.interiors[x].name

A unique identifier for the garage. Can be anything, as long as it's unique, but recommended to be somewhat descriptive of what interior it is.

Example:

lua
name = "small_car"

#garageInterior.interiors[x].allowedTypes

The allowed vehicle types for the garage. This will mostly be limited to automobile and bike as they are the only ones to fit.

Example:

lua
allowedTypes = {"automobile", "bike"}

#garageInterior.interiors[x].teleport

This is the location you will be teleported to when entering the interior, or teleport from to the outside. Make sure to provide x, y, z and the heading.

Example:

lua
teleport = vec4(178.96, -1000.28, -98.99, 179.49)

#garageInterior.interiors[x].computer

The location for the computer, so that you can transfer vehicles, inside of the garage. Make sure to configure based on your settings, if you are using a target system or not.

Example:

lua
computer = {
    target = vec3(235.8563, -975.5742, -98.9819),
    position = vec3(235.1254, -976.1618, -98.9999)
}

#garageInterior.interiors[x].vehiclePositions

The locations for the vehicles inside of the interior. This can be modified to fit more or less vehicles, or just rearrange them if wanted. Make sure to provide x, y, z and the heading.

Example:

lua
vehiclePositions = {
    vec4(174.9736328125, -1004.135925293, -99.98, 180.0),
    vec4(171.43930053711, -1004.1841430664, -99.98, 180.0),
}

#personalSettings

Various settings for the personal garage settings menu.

Example:

lua
personalSettings = {
    command = "gsettings",
    kvp = "garage_personal_settings",
    settings = {
        {
            name = "displayLockedGarages",
            values = {false, true},
            default = false,
            force = false,
        },
    }
}

#personalSettings.command

The command to open the menu.

Example:

lua
command = "gsettings"

#personalSettings.kvp

This identifier decides where the information is stored. We utilize the client's kvp storage to store the settings. This means that the settings are completely client-sided.

Should not need to change this key, but you can if you wish. Just remember to keep it as a unique key.

Example:

lua
kvp = "garage_personal_settings"

#personalSettings.settings

A list of settings that each player can configure for themselves. The available settings are displayLockedGarages, displayIndividualSpawners, autoPurchaseKeys, cleanOwnedKeys, quickSpawn, closeMenuOnSpawn, quickEnterInterior, showQuickEnterInteriorPrompt, automaticTransfer, publicInteriorRequestMode, publicInteriorShowSession, publicInteriorBatchKeyboardHint, and nearbyGaragesLimit.

Example:

lua
settings = {
    {
        name = "displayLockedGarages",
        values = {false, true},
        default = false,
        force = false,
    },
}

#personalSettings.settings[x].name

A unique name for the setting. Can be changed, but not recommended to touch.

Example:

lua
name = "displayLockedGarages"

#personalSettings.settings[x].values

The values the player can pick between.

Example:

lua
values = {false, true}

#personalSettings.settings[x].default

The default value for this setting, set the absolute first time a user loads the script on the server, and can later be changed in the menu.

Example:

lua
default = false

#personalSettings.settings[x].force

If enabled, the configured default value is forced, the user can't change it in the menu, and it will override previous configuration.

Example:

lua
force = false

#persistentVehicles

Various settings for persistent vehicles.

Note that all of the cleanup settings for these vehicles can be found in the garage builder menu.

Example:

lua
persistentVehicles = {
    kvpString = "persistent_vehicles",
    distances = {
        registerInteraction = 50,
        registerInProximity = 200,
    },
    cleanup = {
        permission = {"command"},
    },
    getInfo = {
        permission = {"command"},
        command = "pvehicleinfo",
    }
}

#persistentVehicles.kvpString

Don't touch this unless you know what you are doing. Should not need to be changed.

#persistentVehicles.distances

Various settings for registering distances. Should not change these values, hence why they're not part of the cleanup settings ui.

Example:

lua
distances = {
    registerInteraction = 50,
    registerInProximity = 200,
},

#persistentVehicles.distances.registerInteraction

The units between you and the vehicle to register that you are within the interaction range.

Example:

lua
registerInteraction = 50

#persistentVehicles.distances.registerInProximity

The units between you and the vehicle to register that you are in the proximity of it.

Example:

lua
registerInProximity = 200

#persistentVehicles.cleanup

Various settings for cleanup.

Example:

lua
cleanup = {
    permission = {"command"},
}

#persistentVehicles.cleanup.permission

The permission required to change the cleanup settings.

Example:

lua
permission = {"command"}

#persistentVehicles.getInfo

General info about a persistent vehicle via their vin, mainly for debug purposes.

Example:

lua
getInfo = {
    permission = {"command"},
    command = "pvehicleinfo",
}

#persistentVehicles.getInfo.permission

The required permission to perform this action.

Example:

lua
permission = {"command"}

#persistentVehicles.getInfo.command

The command to get the persistent vehicle info.

Example:

lua
command = "pvehicleinfo"

#vinScratch

Various settings for vin scratching.

Example:

lua
vinScratch = {
    deletionPermission = {"police", "mechanic"},
}

#vinScratch.deletionPermission

List of jobs that can delete vehicles with their vins scratched.

Example:

lua
deletionPermission = {"police", "mechanic"}

#commandsOverriding

Overriding default commands, to prevent snipping pasting.

Example:

lua
commandsOverriding = {
    deleteVehicle = {"dv", "cardel", "dvall"},
    deleteVehiclePermission = {"command"},
    createVehicle = {"car", "c", "v"},
    createVehiclePermission = {"command"},
}

#commandsOverriding.deleteVehicle

The commands that delete the vehicle you are sitting in.

Example:

lua
deleteVehicle = {"dv", "cardel", "dvall"}

#commandsOverriding.deleteVehiclePermission

The required permission to use the delete vehicle commands.

Example:

lua
deleteVehiclePermission = {"command"}

#commandsOverriding.createVehicle

The commands that spawn a vehicle.

Example:

lua
createVehicle = {"car", "c", "v"}

#commandsOverriding.createVehiclePermission

The required permission to use the create vehicle commands.

Example:

lua
createVehiclePermission = {"command"}

#defaultPlatePattern

Various settings for the default plate pattern.

Example:

lua
defaultPlatePattern = {
    pattern = "........",
    setInterval = 0,
}

#defaultPlatePattern.pattern

The pattern used to generate default plates, mainly to overwrite horrible framework defaults. Can be changed as you please, as long as it has some form of random combinations.

Example:

lua
pattern = "........"

#defaultPlatePattern.setInterval

Interval in ms to keep setting the default plate if needed, recommended to strip other resources of this. Set to 0 to disable. Even at 0, we set it once during script start, but don't keep spamming it.

Example:

lua
setInterval = 0

#favorite

Various settings for the favorite vehicles functionality.

Example:

lua
favorite = {
    kvp = "zyke_garages:FavoritedVehicles",
}

#favorite.kvp

The kvp key used to store the favorited vehicles. Should not need to change this key.

Example:

lua
kvp = "zyke_garages:FavoritedVehicles"

#policeLock

Apply "police lock" for impounded vehicles to block them from being bailed out.

Example:

lua
policeLock = {
    jobs = {
        ["police"] = {"boss", "secretary", "officer"},
        ["police2"] = {}
    }
}

#policeLock.jobs

Select jobs and ranks that are allowed to remove the police locks. Restrict if you believe only superiors should be able to remove police locks, or allow all ranks to remove them. Leave the table empty to allow all ranks for that job.

Example:

lua
jobs = {
    ["police"] = {"boss", "secretary", "officer"},
    ["police2"] = {}
}

#locksmith

Various settings for the locksmith.

Example:

lua
locksmith = {
    allowKeySales = true,
    ped = {
        blip = {
            enabled = true,
            sprite = 187,
            color = 39,
            size = 1.0,
        },
        anim = {dict = "mini@strip_club@idles@bouncer@idle_a", clip = "idle_a"},
        model = "mp_m_waremech_01",
    }
}

#locksmith.allowKeySales

If disabled, interacting with the locksmith opens only the key label editor when the selected provider supports custom labels; players cannot buy keys through the locksmith.

Example:

lua
allowKeySales = true

#locksmith.ped

Settings for the locksmith peds.

Example:

lua
ped = {
    blip = {
        enabled = true,
        sprite = 187,
        color = 39,
        size = 1.0,
    },
    anim = {dict = "mini@strip_club@idles@bouncer@idle_a", clip = "idle_a"},
    model = "mp_m_waremech_01",
}

#locksmith.ped.blip

Blip settings for the locksmith peds.

Example:

lua
blip = {
    enabled = true,
    sprite = 187,
    color = 39,
    size = 1.0,
}

#locksmith.ped.positions

The positions of the locksmith peds.

Example:

lua
positions = {
    vec4(170.09126281738, -1799.4538574219, 29.315879821777, 320.791015625),
}

#locksmith.ped.anim

The animation played by the locksmith peds.

Example:

lua
anim = {dict = "mini@strip_club@idles@bouncer@idle_a", clip = "idle_a"}

#locksmith.ped.model

The model of the locksmith peds.

Example:

lua
model = "mp_m_waremech_01"

#summon

Various settings for the summon functionality.

Example:

lua
summon = {
    maxDistance = 100,
    allowedVehicles = {},
}

#summon.maxDistance

The max distance the vehicle can be summoned from. This has to be lower than 400, otherwise you can not render and give instructions to the vehicle.

Example:

lua
maxDistance = 100

#summon.allowedVehicles

Add individual model names in here, leave empty to allow all.

Example:

lua
allowedVehicles = {}

#Config.Database

This is where we have translated previous database values into our own. This is to make the script framework-independent and allow you to migrate from other garages to ours by changing values.

With this approach you can easily switch over to our script without any database hassle.

Qbox is automatically set as an alias of QB.

Example:

lua
Config.Database = {
    ["QB"] = {
        ["player_vehicles"] = "player_vehicles",

        -- Previously existing
        ["id"] = "id",
        ["license"] = "license",
        ["owner"] = "citizenid",
        ["vehicle"] = "vehicle",
        ["hash"] = "hash", -- QB specific
        ["mods"] = "mods",
        ["plate"] = "plate",
        ["fakePlate"] = "fakeplate",
        ["garage"] = "garage",
        ["parked"] = "state",
        ["fuel"] = "fuel",
        ["engine"] = "engine",
        ["body"] = "body",
        ["distancedriven"] = "drivingdistance",
        ["balance"] = "balance",
        ["paymentamount"] = "paymentamount",
        ["paymentsleft"] = "paymentsleft",
        ["financetime"] = "financetime",

        -- Additions
        ["vin"] = "vin",
        ["type"] = "type",
        ["impound"] = "impound",
        ["deformation"] = "deformation",
        ["temp"] = "temp",
        ["nickname"] = "nickname",
        ["keyFreq"] = "keyFreq",
        ["vinScratched"] = "vinScratched",
        ["class"] = "class",
        ["modelLabel"] = "modelLabel",
        ["vehicleImage"] = "vehicleImage",
        ["access"] = "access",
        ["key_counter"] = "key_counter",
        ["disabled"] = "disabled",
    },
    ["ESX"] = {
        ["player_vehicles"] = "owned_vehicles",

        -- Previously existing
        ["owner"] = "owner",
        ["mods"] = "vehicle",
        ["plate"] = "plate",
        ["garage"] = "parking",
        ["impound"] = "pound",
        ["parked"] = "stored",
        ["type"] = "type",
        ["vehicle"] = "model",

        -- Additions
        ["id"] = "id",
        ["license"] = "license",
        ["vin"] = "vin",
        ["fakePlate"] = "fakeplate",
        ["fuel"] = "fuel",
        ["engine"] = "engine",
        ["body"] = "body",
        ["distancedriven"] = "distancedriven",
        ["balance"] = "balance",
        ["paymentamount"] = "paymentamount",
        ["paymentsleft"] = "paymentsleft",
        ["financetime"] = "financetime",
        ["deformation"] = "deformation",
        ["temp"] = "temp",
        ["nickname"] = "nickname",
        ["keyFreq"] = "keyFreq",
        ["vinScratched"] = "vinScratched",
        ["class"] = "class",
        ["modelLabel"] = "modelLabel",
        ["vehicleImage"] = "vehicleImage",
        ["access"] = "access",
        ["key_counter"] = "key_counter",
        ["disabled"] = "disabled",
        ["job"] = "job",
    },
}