Config
Config = {} -- You can place webhook link for logs in server/main_editable.lua
Config.Framework = 'esx' -- 'esx' | 'qb'
Config.NotificationType = 'esx' -- 'esx' | 'qb' | 'ox' | 'mythic'
Config.Locale = 'en' -- 'en' | 'fi'
Config.ImagePath = 'nui://ox_inventory/web/images' -- path for images used in UI (for QB: nui://qb-inventory/html/images) (for ox_inventory: nui://ox_inventory/web/images)
Config.DebugMode = false -- false | true
Config.Inventory = 'default' -- 'default' | 'ox' | 'qs'
Config.Target = 'none' -- 'none' | 'ox' | 'qb'
Config.Dispatch = 'default' -- 'default' | 'tk' | 'cd' | 'qs' | 'ps' | 'rcore' | 'lb'
Config.UseOxLib = false -- false | true, remember to add " shared_script '@ox_lib/init.lua' " to fxmanifest.lua if set to true
Config.Controls = {
interact = 38, -- E
secondaryInteract = 47, -- G
toggleLock = 246, -- Y
}
Config.PoliceJobs = {
police = 0, -- job name, minimum grade required
sheriff = 0,
leo = 0,
}
Config.Blip = { -- blip settings for police alerts (default dispatch only)
union = {
color = 1,
scale = 1.0,
sprite = 60,
time = 60, -- seconds until blip fades
playSound = true,
},
bankTruck = {
color = 1,
scale = 1.0,
sprite = 67,
time = 60,
playSound = true,
},
}
Config.BankTruck = {
minCops = 3, -- minimum number of cops required to start the bank truck heist
cooldown = 60 * 60, -- seconds between bank truck starts (1 hour)
computerCoords = vec3(-631.02, -230.64, 37.99),
startLocations = { -- coordinates where the bank truck can spawn
vec4(-19.76, -672.63, 32.34, 190.58)
},
endLocations = { -- coordinates where the bank truck can end its route
vec4(-1191.47, -338.35, 37.41, 26.33)
},
vehicles = {
`stockade`,
},
guard = {
models = {
`s_m_m_security_01`,
},
amount = {
min = 3,
max = 4,
},
weapons = {
`weapon_combatpistol`,
`weapon_bullpuprifle`,
`weapon_bullpupassault`,
},
armor = {
min = 50,
max = 100,
},
accuracy = {
min = 50,
max = 70,
},
},
loot = { -- script will go over each item and roll chance for each item individually and give the item if the chance is met
{item = 'money', min = 20000, max = 50000, chance = 50},
{item = 'security_paper', min = 20, max = 50, chance = 55},
{item = 'printer_ink', min = 10, max = 30, chance = 65},
{item = 'counterfeit_chemical', min = 10, max = 20, chance = 70},
},
lootAnimDuration = 5000,
blip = {
sprite = 161,
scale = 0.8,
color = 1,
shortRange = true,
playSound = true,
},
removeAfterDetonationSeconds = 60 * 10, -- seconds before deleting the bank truck and guards after detonation (10 minutes)
explosive = {
item = 'c4',
placeAnim = {
dict = 'anim@heists@ornate_bank@thermal_charge_heels',
name = 'thermal_charge',
prop = {
model = `ch_prop_ch_explosive_01a`,
},
},
model = `ch_prop_ch_explosive_01a`,
offset = {
pos = vec3(-0.5, 0.0, 0.0),
rot = vec3(90.0, 0.0, 0.0),
},
detonationDelay = 1000 * 10, -- how long to wait before the c4 detonates (10 seconds)
},
}
Config.UnionDepository = {
vaultDoor = {
coords = vec3(-1.73, -686.54, 16.69),
model = `v_ilev_fin_vaultdoor`,
openDuration = 800,
hack = {
coords = vec3(-4.22, -686.30, 16.13),
distance = 2.0,
keycardItem = 'union_depository_keycard',
anim = {
dict = 'anim@heists@humane_labs@finale@keycards',
introAnim = 'ped_b_intro_b',
passAnim = 'ped_b_pass',
keycardProp = `tr_prop_tr_acc_pass_01a`,
},
},
c4 = {
coords = { -- front and back
vec3(-3.86, -686.57, 16.13),
vec3(-2.65, -684.60, 16.13),
},
item = 'c4',
model = `ch_prop_ch_explosive_01a`,
smokeCoords = vec3(-4.42, -689.87, 16.13),
placeAnim = {
dict = 'anim@heists@ornate_bank@thermal_charge',
name = 'thermal_charge',
prop = {
model = `hei_p_m_bag_var22_arm_s`,
},
},
},
},
wall = {
coords = vec3(7.45, -657.36, 16.13),
rayfireObjects = {
{coords = vec3(7.25, -656.98, 17.14), name = 'des_finale_tunnel'},
{coords = vec3(7.25, -656.98, 17.14), name = 'des_finale_vault'},
},
vehicleTargetCoords = vec4(8.65, -650.81, 15.64, 164.40),
explosion = {
coords = vec3(6.60, -658.55, 15.38),
ptfx = 'scr_josh3',
effect = 'scr_josh3_explosion',
},
c4 = {
coords = vec3(6.50, -659.12, 16.13),
item = 'c4',
model = `ch_prop_ch_explosive_01a`,
placeAnim = {
dict = 'anim@heists@ornate_bank@thermal_charge',
name = 'thermal_charge',
prop = {
model = `hei_p_m_bag_var22_arm_s`,
},
},
},
},
trolleys = {
{
coords = vec4(5.06, -680.50, 15.13, 80.0),
type = 'money', -- 'money' | 'gold_bar'
requiredAnyDoorIds = {'union_door_right_front', 'union_door_right_1'}, -- at least one of the doors in the list must be unlocked to be able to loot the trolley (to prevent cheating)
},
{
coords = vec4(6.32, -674.99, 15.13, 120.0),
type = 'money',
requiredAnyDoorIds = {'union_door_right_2', 'union_door_right_back'},
},
{
coords = vec4(-6.13, -676.20, 16.0, 100.0),
type = 'gold_bar',
requiredAnyDoorIds = {'union_door_left_1', 'union_door_left_front'},
},
{
coords = vec4(-3.97, -671.06, 16.0, 60.0),
type = 'gold_bar',
requiredAnyDoorIds = {'union_door_left_2', 'union_door_left_back'},
},
{
coords = vec4(-0.65, -660.61, 16.0, 50.0),
type = 'gold_bar',
requiredAnyDoorIds = {'union_door_back_left_1', 'union_door_back_left_2'},
},
{
coords = vec4(2.10, -658.43, 15.13, 250.0),
type = 'money',
requiredAnyDoorIds = {'union_door_back_left_1', 'union_door_back_left_2'},
}
},
valuables = {
{
coords = vec4(11.64, -662.30, 16.1, 340.0),
type = 'diamond',
item = 'cutter',
requiredAnyDoorIds = {'union_door_back_right_1', 'union_door_back_right_2'},
},
},
loot = {
money = {
{item = 'money', min = 15000, max = 30000, chance = 100},
},
gold_bar = {
{item = 'gold_bar', min = 10, max = 10, chance = 100},
},
diamond = {
{item = 'diamond', min = 1, max = 1, chance = 100},
},
},
moneyPrinter = {
coords = vec4(-8.19, -680.49, 15.13, 340.92),
model = `bkr_prop_printmachine_4rollerp_st`,
modelWithMoney = `bkr_prop_printmachine_4rollerpress`,
printingAnimProps = {
{model = `bkr_prop_printmachine_4puller`, anim = 'bkr_prop_printmachine_4puller'},
{model = `bkr_prop_prtmachine_moneypage_anim`, anim = 'bkr_prop_prtmachine_moneypage_anim'},
},
recipe = { -- items needed for one batch
{item = 'security_paper', amount = 2},
{item = 'printer_ink', amount = 1},
{item = 'counterfeit_chemical', amount = 1},
},
moneyPerBatch = 5000, -- how much money is generated per batch
generationInterval = 10000, -- how long to wait before generating the next batch
overheatBatchLoseChance = 100, -- chance 0-100 that the batch will be lost if the minigame is failed
minigame = {
heatRate = 8.0, -- how fast the heat increases
coolDownRate = 0.8, -- how fast the heat decreases
driftSpeed = 2, -- how fast the parameters drift randomly
greenZoneMin = 45, -- minimum value of the green zone
greenZoneMax = 55, -- maximum value of the green zone
maxHeat = 100, -- maximum value of the heat
},
},
elevator = {
up = {
coords = vec4(10.43, -672.78, 33.45, 0.0),
targetCoords = vec4(-0.10, -705.90, 16.13, 339.58), -- coordinates where the elevator will teleport the player to
},
down = {
coords = vec4(-0.10, -705.89, 16.12, 0.0),
targetCoords = vec4(10.52, -670.85, 33.45, 3.62),
},
hackTextCoords = vec3(10.21, -668.58, 33.45),
doorGroups = {
{
id = 'upper_elevator_doors',
doors = {
{
id = 'union_elevator_door_1',
model = `v_ilev_finelevdoor01`,
coords = vec3(8.76, -668.70, 32.45),
heading = 4.44,
locked = true,
},
{
id = 'union_elevator_door_2',
model = `v_ilev_finelevdoor01`,
coords = vec3(11.66, -668.47, 32.45),
heading = 175.45,
locked = true,
},
},
},
},
hack = {
item = 'encrypted_laptop',
anim = {
dict = 'anim@heists@ornate_bank@hack',
name = 'hack_loop',
flag = 1,
prop = {
model = `hei_prop_hst_laptop`,
bone = 60309,
pos = vec3(0.18, 0.03, 0.03),
rot = vec3(-180.0, 0.0, -270.0),
},
},
},
},
guards = { -- guards will spawn once you hack elevator or when you break the back wall
models = {
`s_m_m_security_01`,
},
weapons = {
`weapon_combatpistol`,
`weapon_bullpuprifle`,
},
armor = {
min = 50,
max = 100,
},
accuracy = {
min = 50,
max = 70,
},
spawnCoords = {
vec4(-8.75, -693.31, 16.13, 239.14),
vec4(-0.69, -690.06, 16.13, 181.30),
vec4(-4.20, -689.24, 16.13, 190.31),
vec4(-3.06, -693.00, 16.13, 197.36),
},
loot = { -- items that can be found in guard pockets when looted
{item = 'money', min = 500, max = 2000, chance = 80},
{item = 'union_depository_keycard', min = 1, max = 1, chance = 25},
},
},
doors = {
{
id = 'union_door_right_1',
model = `v_ilev_fingate`,
coords = vec3(2.27, -678.55, 16.36),
anim = vec3(1.07, -679.34, 16.13),
heading = 250.0,
locked = true,
},
{
id = 'union_door_right_2',
model = `v_ilev_fingate`,
coords = vec3(4.28, -673.02, 16.36),
anim = vec3(3.12, -673.76, 16.13),
heading = 250.0,
locked = true,
},
{
id = 'union_door_right_front',
model = `v_ilev_fingate`,
coords = vec3(4.35, -682.93, 16.36),
anim = vec3(2.63, -682.97, 16.13),
heading = 340.0,
locked = true,
},
{
id = 'union_door_right_back',
model = `v_ilev_fingate`,
coords = vec3(8.17, -672.44, 16.36),
anim = vec3(7.30, -671.73, 16.13),
heading = 160.0,
locked = true,
},
{
id = 'union_door_left_1',
model = `v_ilev_fingate`,
coords = vec3(-2.99, -676.64, 16.36),
anim = vec3(-2.78, -678.51, 16.13),
heading = 70.0,
locked = true,
},
{
id = 'union_door_left_2',
model = `v_ilev_fingate`,
coords = vec3(-0.98, -671.11, 16.36),
anim = vec3(-0.79, -672.92, 16.13),
heading = 70.0,
locked = true,
},
{
id = 'union_door_left_front',
model = `v_ilev_fingate`,
coords = vec3(-7.40, -678.66, 16.36),
anim = vec3(-6.60, -679.61, 16.13),
heading = 340.0,
locked = true,
},
{
id = 'union_door_left_back',
model = `v_ilev_fingate`,
coords = vec3(-3.58, -668.16, 16.36),
anim = vec3(-1.82, -668.24, 16.13),
heading = 160.0,
locked = true,
},
{
id = 'union_door_back_left_1',
model = `prop_gold_vault_gate_01`,
coords = vec3(3.02, -660.13, 16.3),
anim = vec3(3.02, -662.00, 16.13),
heading = 70.0,
locked = true,
requireC4 = true,
},
{
id = 'union_door_back_left_2',
model = `v_ilev_fingate`,
coords = vec3(-1.66, -662.13, 16.36),
anim = vec3(-0.91, -663.23, 16.13),
heading = 340.0,
locked = true,
},
{
id = 'union_door_back_right_1',
model = `prop_gold_vault_gate_01`,
coords = vec3(7.75, -663.47, 16.36),
anim = vec3(7.72, -661.72, 16.13),
heading = 250.0,
locked = true,
requireC4 = true,
},
{
id = 'union_door_back_right_2',
model = `v_ilev_fingate`,
coords = vec3(10.57, -666.58, 16.36),
anim = vec3(8.77, -666.77, 16.13),
heading = 340.0,
locked = true,
},
},
doorBreaking = {
welding = {
item = 'welding_torch',
prop = `prop_weld_torch`,
anim = {
dict = 'amb@world_human_welding@male@base',
name = 'base',
flag = 49,
duration = 15000,
},
},
thermite = {
item = 'thermite',
model = `hei_prop_heist_thermite`,
placeAnim = {
dict = 'anim@heists@ornate_bank@thermal_charge',
name = 'thermal_charge',
prop = {
model = `hei_p_m_bag_var22_arm_s`,
},
},
burnDuration = 8000,
ptfx = {
asset = 'scr_ornate_heist',
name = 'scr_heist_ornate_thermal_burn',
},
},
c4 = {
item = 'c4',
model = `ch_prop_ch_explosive_01a`,
placeAnim = {
dict = 'anim@heists@ornate_bank@thermal_charge',
name = 'thermal_charge',
prop = {
model = `hei_p_m_bag_var22_arm_s`,
},
},
},
},
cooldown = 60 * 60 * 12, -- 12 hours
resetGrace = 1000 * 60 * 5, -- 5 minutes, how long to wait before resetting the heist if no players are near
resetRadius = 50.0, -- radius in meters from the vault where the heist will reset if no players are near
resetPollInterval = 1000 * 60 * 1, -- how often to check if the heist should reset (1 minute)
minCops = 3, -- minimum number of cops required to start the union depository heist
alertChance = {
vaultOpen = 100, -- chance 0-100 when vault is opened
wallBreach = 100, -- chance 0-100 when back wall is breached
},
}
Config.Buyers = {
{
name = 'Buyer',
coords = vec4(1103.49, -782.73, 58.26, 173.65),
ped = 's_m_y_dealer_01',
moneyType = 'money',
items = {
{name = 'gold_bar', price = 1000},
{name = 'diamond', price = 30000},
},
},
}
Config.Shops = {
{
name = 'Dealer',
coords = vec4(1110.82, -785.95, 58.26, 87.75),
ped = 'ig_g',
moneyType = 'money',
items = {
{name = 'c4', price = 15000, amount = 1},
{name = 'welding_torch', price = 3500, amount = 1},
{name = 'thermite', price = 4000, amount = 1},
{name = 'cutter', price = 2000, amount = 1},
{name = 'encrypted_laptop', price = 12000, amount = 1},
},
},
}Last updated