Every option lives in config.lua. It stays readable and editable in the escrowed release, like the files in
locales/. Restart the resource after a change.
General
Option
Default
What it does
Config.Framework
'auto'
'auto', 'qbox', 'qbcore', 'esx' or 'standalone'
Config.Locale
'en'
'en' or 'tr'; add locales/<code>.lua for more
Config.Debug
false
debug logs; also enables /carthieftest for admins
Config.UseOxLib
true
ox_lib notifications when ox_lib is started
Config.Inventory
'auto'
'auto', 'ox', 'framework' or 'none'
Features
Config.Features = {
Lockpick = true, -- open locked vehicles with the lockpick minigame
Hotwire = true, -- start vehicles without keys with the hotwire minigame
Progression = true, -- thief XP / level
OwnerAlert = true, -- the online owner of a player vehicle is told when its alarm goes off
}
Who may steal
Option
Default
What it does
Config.Job.required
false
true = only players with Config.Job.name (at least minGrade) may steal
Config.Job.requireOnDuty
false
the job must also be on duty
Config.Police.jobs
{ 'police' }
police jobs: they get the alerts and are counted for minOnDuty
Config.Police.minOnDuty
0
police on duty needed before anyone may steal (0 = no requirement)
Items
Option
Default
What it does
Config.Items.lockpick
'lockpick'
normal lockpick
Config.Items.advancedLockpick
'advancedlockpick'
used first when the player has both
Config.Items.hotwireTool
'screwdriverset'
needed for the hotwire; false = no item
Config.Items.takeOverUse
true
using a lockpick item opens our minigame (see INSTALLATION for the ensure order)
Config.Items.forwardEvent
'lockpicks:UseLockpick'
server event fired when a lockpick is used away from a vehicle
Tiers
Each vehicle gets a tier: Config.Vehicles.tierByModel[model] → tierByClass[class] → defaultTier.
police, sheriff, FBI, ambulance, fire truck, tanks …
models that can never be stolen
Config.Vehicles.tierByModel = {
adder = 'expert', -- example
}
blacklistModels is checked with the model the server reads and cannot be faked. The class has no server
native: it is reported by the client and only chooses the tier and the class blacklist. Put every vehicle that must
never be stolen in blacklistModels.
Lockpick
Option
Default
What it does
maxDistance
3.0
metres between the player and the vehicle, checked on the server
minTurnMs
180
quicker turns are refused
stressDamage
14
pick health lost by a fully wrong turn (less when it was nearly right)
advanced
{ toleranceMul = 1.35, healthMul = 1.6 }
advanced lockpick bonus
breakRemovesItem
true
a snapped pick is removed from the inventory
retryCooldown
4
seconds before the next attempt after a failed or cancelled one
anim
break-in animation
{ dict, clip, flag }
Hotwire
Option
Default
What it does
key
'G'
default key; players can rebind it in GTA settings → FiveM
maxMistakes
4
mistakes (wrong cut, missed strip, burnt starter) before the wires are ruined
shockChance
0.5
chance that a mistake gives an electric shock
shockDamage
5
health lost by a shock
toolBreakChance
0.1
chance the tool breaks on a failed hotwire (0 = never)
crankAttempts
3
starter attempts in the last step
timeMs
90000
time for the whole hotwire
retryCooldown
6
seconds before the next attempt after a failed or cancelled one
startEngine
true
start the engine right after a successful hotwire
anim
hotwire animation
{ dict, clip, flag }
Alarm
Option
Default
What it does
chance
1.0
chance a lockpick attempt sets the alarm off, used when the tier has no entry below
chanceByTier
easy 0.7, normal 0.9, hard 1.0, expert 1.0
chance per tier
durationMs
30000
how long the horn and lights run
cooldown
60
seconds before the same vehicle alarms and alerts again
Dispatch
Option
Default
What it does
enabled
true
police alerts on / off
provider
'auto'
'ps-dispatch', 'cd_dispatch', 'rcore_dispatch', 'core_dispatch', 'builtin', 'custom' or 'none'
alarmChance
0.75
chance an alarm reaches the police
hotwireChance
0.25
chance a successful hotwire is reported (a witness)
dispatchJobs
nil
job list for the dispatch resource (default Config.Police.jobs)
alertOffset
{ min = 20, max = 70 }
the police get the area, not the spot (metres)
alertBlipSeconds
90
lifetime of the built-in alert blip
The built-in alert (used when no dispatch resource is started) sends a notification and a timed area blip to
police on duty. A custom hook:
Config.Dispatch.provider = 'custom'
Config.Dispatch.custom = function(src, coords, kind, message) -- server; kind = 'alarm' | 'hotwire'
exports.my_dispatch:Send(coords, message)
return true -- anything else (or an error) falls back to the built-in alert
end
Custom keys
Config.VehicleKeys.provider: 'auto', 'qbx_vehiclekeys', 'qb-vehiclekeys', 'none' or 'custom'.
With 'none' the script remembers hotwired vehicles itself.
Progression
Option
Default
What it does
xpPerLevel
100
level = floor(xp / xpPerLevel) + 1
maxLevel
30
toleranceDegPerLevel
0.08
the lockpick sweet spot grows a little per level
windowPerLevel
0.004
the hotwire strip zone grows a little per level
maxBonusLevels
20
levels above this give no further bonus
Interface
Option
Default
What it does
Config.Ui.volume
0.7
minigame sounds (0–1)
Config.Ui.showLevel
true
thief level in the minigame header
Config.Target.provider
'auto'
'ox_target', 'qb-target' or 'none' (built-in [E] prompt)
Config.Target.distance
2.0
target distance
Config.Notifications.provider
'auto'
'ox_lib', 'qbox', 'qbcore', 'esx', 'native' or 'custom'
Admin and security
Option
Default
What it does
Config.Admin.ace
'ns-carthief.admin'
ACE for the admin commands
Config.Admin.useFrameworkAdmin
true
framework admins count as admins too
Config.Security.dropAfterFlags
0
suspicious requests before a kick; 0 = log only
Config.Database.autoMigrate
true
create / update tables on start
Admin commands:
/carthiefreset <id>: reset a player's progression and cancel their attempt.
/carthieftest <pick|wire> [tier]: open a minigame without a vehicle. Needs Config.Debug = true. A test never
unlocks, gives keys, removes items, sets an alarm or gives XP.