r_atmrobbery Configuration
r_atmrobbery config: framework and integrations, money and police, the ATMs, alarms, the crowbar, the hack, thermite, the rope and car, logs and security.
All settings live in shared/config.lua. Restart the resource after changing it.
General
R.Framework = 'auto' -- 'auto' | 'esx' | 'qb' | 'qbox'
R.Inventory = 'auto' -- 'auto' | 'ox_inventory' | 'qb-inventory' | 'quasar' | 'framework'
R.Target = 'none' -- 'auto' | 'ox_target' | 'qb-target' | 'none' (key prompt) | 'custom' (edit BridgeCustomTarget in bridge/cl_target.lua)
R.Notify = 'auto' -- 'auto' | 'ox_lib' | 'esx' | 'qb' | 'okok' | 'quasar' | 'codesign'
R.TextUI = 'gta' -- 'gta' | 'ox_lib' | 'okok' | 'qb' | 'jg' | 'cd' | 'esx' | 'custom' (edit BridgeTextUI in bridge/cl_textui.lua)
R.Progress = 'rscripts' -- 'rscripts' | 'gta' | 'ox_lib_bar' | 'ox_lib_circle' | 'qb' | 'esx' | 'progressbars' | 'mythic' | 'custom' (edit BridgeProgress in bridge/cl_progress.lua)
R.Meters = 'rscripts' -- 'rscripts' | 'gta' | 'custom' (edit BridgeMeters in bridge/cl_meters.lua), the hack clock / cash / thermite / yank bars
R.Dispatch = 'auto' -- 'auto' | 'cd_dispatch' | 'ps-dispatch' | 'qs-dispatch' | 'rcore_dispatch' | 'core_dispatch' | 'tk_dispatch' | 'lb-tablet' | 'linden' | 'op' | 'custom' | 'none'
R.Locale = '' -- '' = ox:locale convar, or 'en' / 'fi'
R.Debug = false
R.UI = {
Accent = '#9a27ea',
}Prompt, bars and custom target
R.Target = 'none' shows a key prompt at the ATM. R.TextUI picks how that prompt looks. For
custom, edit BridgeTextUI in bridge/cl_textui.lua.
R.Progress is the bar while you tie the rope. R.Meters is the hack clock, the cash, the thermite
burn and the yank bars. 'rscripts' shows pills at the bottom of the screen in your Accent
colour, 'gta' shows GTA's timer bars. For 'custom', fill in BridgeMeters.Show(bars) and
BridgeMeters.Hide() in bridge/cl_meters.lua. Each bar has label, value (0-1), warn and
icon.
R.Target = 'custom' is for any other target script: fill in BridgeCustomTarget in
bridge/cl_target.lua. The bridge/ folder is open, so you can edit it freely.
Money and police
R.Money = {
dirty = false, -- true = pay every cash reward as dirty money
dirtyItem = 'auto', -- 'auto' = ESX black_money, qb-inventory markedbills, ox/qs black_money item, or an item name
}
R.Police = {
jobs = { 'police', 'sheriff' },
onDutyOnly = true,
canRob = false, -- false = police (the jobs above) can't rob ATMs
}jobs and onDutyOnly decide who counts as police, both for the police count each method needs
and for canRob. With onDutyOnly = true, an off-duty officer counts as a civilian and can rob.
The ATMs
R.Robbery = {
models = { 'prop_atm_01', 'prop_atm_02', 'prop_atm_03', 'prop_fleeca_atm' },
cooldown = 30, -- minutes before the same ATM can be robbed again
failCooldown = 5, -- minutes an ATM locks up after a failed hack
playerCooldown = 5, -- minutes a player waits between ATM robberies, 0 = off
cashTime = 120, -- seconds dropped cash stays on the ground
pickup = 'walk', -- 'walk' = walk over the cash, 'key' = press E next to each bundle, 'target' = target each bundle
}Every ATM of these models on the map can be robbed, wherever it stands. Remove a model to leave those ATMs alone.
Alarms
R.Alarm = {
delay = { 5, 20 }, -- seconds before the police get the call
blip = { sprite = 108, colour = 1, scale = 1.2, time = 90 },
}Each method has its own alarmChance (the robbery starts or succeeds) and failAlarm (it fails).
The call goes to R.Dispatch after delay seconds.
Crowbar
R.Crowbar = {
enabled = true,
police = 0, -- police needed to start
weapon = 'WEAPON_CROWBAR',
skillCheck = { 'easy', 'medium' }, -- one skill check before you start, fail and you can try again
alarmChance = 60, -- % the alarm goes off when you start breaking in
failAlarm = 100, -- % a failed skill check calls the police
piles = { 3, 5 }, -- the hit knocks the cash out as this many bundles
reward = {
money = { 500, 2500 },
items = {}, -- { name = 'item', amount = { 1, 2 }, chance = 50 }
},
}The skill check is lib.skillCheck. Swap it for your own in SkillCheck in client/cl_custom.lua.
Hack
R.Hack = {
enabled = true,
police = 0,
item = 'hacking_device',
game = 'dui', -- 'dui' = firewall hack on the ATM's own screen, 'pin' = R*'s pin minigame
firewall = { hits = 3, lives = 3 }, -- 'dui': codes to breach, misses allowed
breakChance = 30, -- % a failed hack burns out the device
time = 60, -- seconds on the clock
alarmChance = 15, -- % the bank notices a successful hack
failAlarm = 100, -- % a failed hack calls the police
bursts = 3, -- the ATM pays out in this many bursts
burstTime = 4, -- seconds between bursts, walk away and the rest lands on the ground
reward = {
money = { 1500, 4000 },
items = {}, -- { name = 'item', amount = { 1, 2 }, chance = 50 }
},
}With game = 'dui', the hack plays on the ATM's own screen: press Enter when the code shown
below the reel is between the lines. Players standing nearby see the screen too. To use your own
minigame, edit HackMinigame in client/cl_custom.lua.
Thermite
R.Thermite = {
enabled = true,
police = 0,
item = 'thermal_charge',
burnTime = 12, -- seconds the charge burns before the ATM opens
piles = { 6, 9 }, -- the cash blows out as this many bundles, anyone can pick them up
spread = 1.6, -- metres the bundles scatter in front of the ATM
alarmChance = 100, -- % the charge trips the alarm
cinematic = true, -- close camera while planting the charge
burnDistance = 1.2, -- metres, standing closer than this while it burns hurts
burnDamage = 8, -- health lost per second that close, 0 = off
reward = {
money = { 4000, 8000 },
items = {}, -- { name = 'item', amount = { 1, 2 }, chance = 50 }
},
}Rope and car
R.Rope = {
enabled = true,
police = 0,
item = 'tow_rope',
length = 6.0, -- metres of rope between the ATM and the vehicle
tieTime = 4, -- seconds to tie the rope around the ATM
hookTime = 180, -- seconds to hook a vehicle and rip the ATM out before the rope comes loose
tugs = 3, -- yanks it takes to rip the ATM off the wall
tugSpeed = 15, -- km/h the vehicle needs when the rope goes tight to count as a yank
alarmChance = 100, -- % the first yank trips the alarm
piles = { 6, 9 },
spread = 2.0,
reward = {
money = { 4000, 8000 },
items = {}, -- { name = 'item', amount = { 1, 2 }, chance = 50 }
},
}Tie the rope at the ATM, then walk to a car and hook the rope to its back. Drive away and floor it every time the rope goes tight. Back up between the yanks to give the rope some slack. Motorcycles, bicycles, boats, helicopters, planes and trains can't be used.
Admin, logs and security
R.Admin = {
command = 'atmrobbery',
group = { 'group.admin', 'group.god' },
}
R.Logs = {
enabled = true,
type = 'webhook', -- 'webhook' (set it in server/sv_custom.lua) | 'ox_lib'
showIp = false,
}
R.Security = {
interactDistance = 2.5, -- metres of slack on server distance checks for lag
requestCooldown = 500, -- ms
}The admin command is on the Exports page.