Config
Config = {}
Config.debug = false
-------------------------------------------------
--- FRAMEWORK SETTINGS
-------------------------------------------------
Config.esxSettings = {
enabled = true,
-- Whether or not to use the new ESX export method
useNewESXExport = true,
-- Money account used when picking up cash or selling off items
moneyAccount = 'black_money',
-- Enable when using a very old version of esx or ox_inventory
oldEsx = false,
}
Config.qbSettings = {
enabled = false,
-- Whether or not to use the new QBCore export method
useNewQBExport = true, -- Make sure to uncomment the old export inside fxmanifest.lua if you're still using it
-- Money account used when picking up cash or selling off items
moneyAccount = 'cash',
}
-------------------------------------------------
--- BASE SETTINGS
-------------------------------------------------
Config.target = {
enabled = false,
system = 'qb-target' -- 'qtarget' or 'qb-target' or 'ox_target' (Other systems might work as well)
}
-- List of police jobs
Config.policeJobs = {
'police',
'lspd',
'bcso',
}
-- The minimum amount of officers online needed to trigger the heist. If the amount is not met
-- the ATC screen will say that no unmarked planes have been detected
Config.minimumPoliceOnline = 0
Config.items = {
radioEncoder = 'kq_radio_encoder',
hint = 'kq_plane_hint',
}
-- Font scale of the ATC monitor. Do not touch unless the text is overflowing on the atc monitor. Unsure why this happens on some servers.
Config.atcFontScale = 1.0
-- Font scale of 3d text
Config.fontScale = 1.0
-- Time in minutes
Config.minimumTimeBetweenHeists = 30
-- Time in minutes, time for which the crashed plane and the loot area will be available for (after this time the plane will be deleted
Config.planeTimeout = 25
-- Duration before the plane actually gets spawned (aka enters the airspace) (in seconds)
Config.flightDuration = 220
-------------------------------------------------
--- KEYBINDS
-------------------------------------------------
-- https://docs.fivem.net/docs/game-references/controls/
-- Use the input index for the "input" value
Config.keybinds = {
interact = {
label = 'E',
input = 38,
},
exit = {
label = 'G',
input = 58,
},
}
-------------------------------------------------
--- HINT
-------------------------------------------------
Config.hint = {
enabled = true, -- Setting to enable the hint feature
location = {x = 1962.79, y = 3751.1, z = 32.25, h = 304.6}, -- Coordinates for the hint location
model = 'u_m_o_taphillbilly', -- NPC model for the hint
npcScenario = 'WORLD_HUMAN_TOURIST_MAP', -- NPC scenario for the hint
-- price of the hint
price = 2000, -- Price for the hint
npcShouting = true, -- Setting for whether the NPC should shout random stuff when the player is nearby
blip = {
alwaysShowBlip = false, -- Setting to always show the hint blip on the map
showWhenNearby = true, -- Setting to show the hint blip on the map when the player is nearby
nearbyDistance = 50.0, -- Distance at which the hint blip should appear when the player is nearby
-- https://docs.fivem.net/docs/game-references/blips/
sprite = 66, -- Sprite for the hint blip
color = 6, -- Color for the hint blip
scale = 0.7 -- Scale for the hint blip
},
playerScenario = {
enabled = true, -- Setting to enable the player scenario for the hint
scenario = 'WORLD_HUMAN_CLIPBOARD' -- Player scenario for the hint
},
}
-------------------------------------------------
--- ATC
-------------------------------------------------
-- Rerolls odds of the plane being available every 5 minutes (When planes are unavailable heist will not be possible to be started)
-- Value between 0 and 100 (0 heist will never be available, 100 heist will always be available)
Config.planeFoundOdds = 100
-- Time for which the ATC scanner data will be valid for. This is the time players will have to scan, drive to the radio tower and enter the IP address to hack the plane.
-- After this time, the IP will no longer be valid. Set this to a lower value to require players to have a friend waiting at the radio tower ready to hack the IP. Higher values mean
-- that players can drive from the ATC tower to a radio tower and hack it themselves if they're quick enough (default = 90, allows for solo hack if they're decently quick).
-- Time in seconds.
Config.atcScanLifetime = 90
Config.atc = {
location = {
x = 1701.6, y = 3289.7, z = 48.9 -- Coordinates for the ATC location
},
blips = {
alwaysShowBlips = false, -- Setting to always show the ATC blips on the map
showBlipsAfterHintUse = true, -- Setting to show the ATC blips on the map after hint use
-- https://docs.fivem.net/docs/game-references/blips/
sprite = 767, -- Sprite for the ATC blips
color = 67, -- Color for the ATC blips
scale = 0.9 -- Scale for the ATC blips
},
-- <!> BEWARE <!> Changing the password will not change it on the hint, you may want to communicate the new
-- password to your players somehow or update the hint file in html/img/hint.png
password = 'plane', -- Password for the ATC
}
-------------------------------------------------
--- RADIO TOWERS
-------------------------------------------------
Config.radio = {
model = 'xm_prop_x17_powerbox_01', -- Model for the radio
encoderModel = 'v_res_fa_radioalrm', -- Model for the encoder
locations = {
{x = 747.79, y = 2576.5, z = 75.0, h = 153.07},
{x = 1000.274, y = 3582.9, z = 33.3, h = 179.0},
{x = 1868.84, y = 3714.43, z = 32.7, h = 210.0},
{x = 2327.0, y = 2948.927, z = 46.8, h = 1.0},
{x = 751.89, y = 1275.605, z = 359.9, h = 180.0},
},
blips = {
alwaysShowBlips = true, -- Setting to always show the radio blips on the map
showBlipsAfterATCUse = false, -- Setting to show the radio blips on the map after ATC use
-- https://docs.fivem.net/docs/game-references/blips/
sprite = 767, -- Sprite for the radio blips
color = 6, -- Color for the radio blips
scale = 0.7 -- Scale for the radio blips
},
hacking = {
lockCount = 8, -- Number of locks to complete during the hacking process
time = 30, -- Time limit for the hacking process, in seconds
}
}
-------------------------------------------------
--- RADIO ENCODERS
-------------------------------------------------
Config.radioEncoder = {
location = {x = 2381.0, y = 3060.0, z = 55.0}, -- Coordinates for the radio encoder
radius = 34.0, -- Radius around the radio encoder within which encoders can be spawned
respawnTime = 1200, -- Time in seconds for the radio encoder to respawn after being picked up
spawnCount = 3, -- Number of radio encoders that can be spawned within the specified radius
blip = {
blipVisible = false, -- Setting to make the radio encoder blip visible on the map
areaVisible = false, -- Setting to make the area around the radio encoder visible on the map
-- https://docs.fivem.net/docs/game-references/blips/
icon = 459, -- Icon for the radio encoder blip
color = 39, -- Color for the radio encoder blip
scale = 0.9, -- Scale for the radio encoder blip
},
-- Whether to remove the encoder from players inventory after use
removeEncoderFromInventory = false,
}
-------------------------------------------------
--- DISPATCH
-------------------------------------------------
Config.dispatch = {
system = 'default', -- Setting for the dispatch system to use ('default' for the built-in system or 'cd-dispatch', 'core-dispatch-old', 'core-dispatch-new' or 'ps-dispatch' for external systems)
policeCode = '10-8', -- Police code for the plane crash event
eventName = 'Smuggling aircraft crash', -- Name of the plane crash event
description = 'A plane smuggling drugs has just crashed. Please go investigate it and secure the area', -- Description of the plane crash event
earlyNotification = false, -- Whether to send an early police dispatch. This is when the plane enters the airspace
earlyDescription = 'A plane smuggling drugs has entered the airspace and is about to crash. Please go investigate it and secure the area', -- Description of the plane crash event
blip = {
sprite = 582, -- Sprite for the plane crash blip
color = 59, -- Color for the plane crash blip
scale = 1.2, -- Scale for the plane crash blip
timeout = 300, -- Time in seconds for the blip to disappear after the plane crash event is over
showRadar = true, -- Setting to show the plane crash blip on the radar
},
}
-------------------------------------------------
--- POLICE CRASH SECURING
-------------------------------------------------
Config.securing = {
duration = 15, -- Time in seconds it will take to secure the crash site
spawnBarriers = true, -- Setting to spawn barriers at the crash site after securing it
reward = {
enabled = true, -- Setting to enable rewards for securing the crash site
radius = 200.0, -- Radius around the crash site within which officers will receive the reward
amount = 4000.0, -- Amount of money that will be given out and shared across all officers in the radius
unlootedMultiplier = 2, -- Multiplier of the money amount that the officers will receive after securing an unlooted plane
account = 'bank', -- Account in which the reward money will be deposited
}
}
-------------------------------------------------
--- PLANE LOOTING
-------------------------------------------------
Config.looting = {
enabled = true, -- Setting to enable looting of the plane crash site
duration = 15, -- Time in seconds it will take to loot the crash site
money = {
min = 15000, -- Minimum amount of money that can be found at the plane crash site
max = 25000, -- Maximum amount of money that can be found at the plane crash site
}
}
-------------------------------------------------
--- SELLING OF LOOTED ITEMS
-------------------------------------------------
Config.selling = {
{
name = 'High grade cocaine buyer',
location = {
x = 2123.3, y = 4769.47, z = 41.16, h = 105.0,
},
pedModel = 'g_m_m_mexboss_01', -- NPC model of the buyer
duration = 2000, -- selling duration in ms
item = 'kq_cocaine_brick',
itemLabel = 'high grade cocaine bricks',
-- By not putting the math.random into a function the price will be set randomly on each server start/script start
-- this will result in better or worse days for selling the item
price = math.random(500, 700),
blip = {
showBlip = true,
-- https://docs.fivem.net/docs/game-references/blips/
sprite = 440,
color = 55,
scale = 0.7
},
},
{
name = 'Ecstasy buyer',
location = {
x = -1415.0, y = -603.59, z = 30.55, h = 358.3,
},
pedModel = 'g_f_y_vagos_01', -- NPC model of the buyer
duration = 2000, -- Selling duration in ms
item = 'kq_ecstasy', -- Item that will be sold
itemLabel = 'bags of ecstasy',
-- By not putting the math.random into a function the price will be set randomly on each server start/script start
-- this will result in better or worse days for selling the item
price = math.random(200, 400),
blip = {
showBlip = true,
-- https://docs.fivem.net/docs/game-references/blips/
sprite = 440,
color = 55,
scale = 0.7
},
},
{
name = 'Tobacco buyer',
location = {
x = 1501.37, y = 3695.2, z = 35.21, h = 104.7,
},
pedModel = 'a_m_o_salton_01',
duration = 2000, -- selling duration in ms
item = 'kq_tobacco',
itemLabel = 'smuggled tobacco',
-- By not putting the math.random into a function the price will be set randomly on each server start/script start
-- this will result in better or worse days for selling the item
price = math.random(100, 200),
blip = {
showBlip = true,
-- https://docs.fivem.net/docs/game-references/blips/
sprite = 440,
color = 55,
scale = 0.7
},
},
{
name = 'Smuggled fur buyer',
location = {
x = 687.36, y = -961.93, z = 23.34, h = 227.8,
},
pedModel = 'cs_drfriedlander',
duration = 2000, -- selling duration in ms
item = 'kq_fur',
itemLabel = 'smuggled fur',
-- By not putting the math.random into a function the price will be set randomly on each server start/script start
-- this will result in better or worse days for selling the item
price = math.random(200, 400),
blip = {
showBlip = true,
-- https://docs.fivem.net/docs/game-references/blips/
sprite = 440,
color = 55,
scale = 0.7
},
},
{
name = 'Smuggled ivory buyer',
location = {
x = 1606.19, y = 6619.54, z = 15.96, h = 87.9,
},
pedModel = 'csb_avery',
duration = 2000, -- selling duration in ms
item = 'kq_ivory',
itemLabel = 'smuggled ivory',
-- By not putting the math.random into a function the price will be set randomly on each server start/script start
-- this will result in better or worse days for selling the item
price = math.random(400, 600),
blip = {
showBlip = true,
-- https://docs.fivem.net/docs/game-references/blips/
sprite = 440,
color = 55,
scale = 0.7
},
},
}
-------------------------------------------------
--- CRASH LOCATIONS
-------------------------------------------------
Config.locations = {
{
start = {x = -4200.0, y = 2583.49, z = 700.0, h = 326.0},
landing = {x = -1975.2, y = 2575.39, z = 2.24, h = 326.0}
},
{
start = {x = 3902.0, y = 6000.0, z = 600.0, h = 120.0},
landing = {x = 2839.0, y = 4773.0, z = 45.0, h = 170.0}
},
{
start = {x = 3260.0, y = -1400.0, z = 900.0, h = 30.0},
landing = {x = 1896.0, y = 295.0, z = 155.0, h = 25.0}
},
{
start = {x = 273.0, y = 8600.0, z = 600.0, h = 188.0},
landing = {x = 94.0, y = 7064.0, z = 7.0, h = 166.0}
},
{
start = {x = 4300.0, y = 860.0, z = 600.0, h = 80.0},
landing = {x = 2362.0, y = 1626.0, z = 40.0, h = 60.0}
},
}
-------------------------------------------------
--- LOOT PICKUP ANIMATION
-------------------------------------------------
Config.pickupAnimation = {
duration = 2, -- in seconds
dict = 'mp_take_money_mg',
anim = 'put_cash_into_bag_loop',
flag = 1,
}
-------------------------------------------------
--- CRASH EVENTS
-------------------------------------------------
Config.crash = {
blip = {
label = 'Estimated plane crash site',
sprite = 582,
color = 59,
scale = 1.3,
timeout = 60, -- in seconds
showRadar = true,
},
events = {
{
name = 'Coke, ecstasy and cash',
-- Radius around which items will spawn from the crashed plane
lootRadius = 37.0,
-- Amount of loot items that will be spawned
lootCount = 40,
loot = {
{
hash = 'hei_prop_hei_drug_pack_01a',
items = {
{
item = 'kq_cocaine_brick',
chance = 100,
amount = {
min = 1,
max = 1,
},
}
},
chance = 30,
textureVariation = 0,
minimumDistanceBetween = 1.5,
offset = {
x = 0.0, y = 0.0, z = 0.0,
},
animation = Config.pickupAnimation,
labelSingular = 'Cocaine brick',
labelPlurar = 'Cocaine brick',
collectMessage = 'Pickup the cocaine brick',
icon = 'fas fa-box',
},
{
hash = 'ex_office_swag_drugbags',
items = {
{
item = 'kq_cocaine_brick',
chance = 100,
amount = {
min = 2,
max = 3,
},
}
},
chance = 15,
textureVariation = 0,
minimumDistanceBetween = 1.5,
offset = {
x = 0.0, y = 0.0, z = 0.0,
},
animation = Config.pickupAnimation,
labelSingular = 'Cocaine brick',
labelPlurar = 'Cocaine brick',
collectMessage = 'Pickup the cocaine bricks',
icon = 'fas fa-box',
},
{
hash = 'ex_office_swag_drugbag2',
items = {
{
item = 'kq_cocaine_brick',
chance = 100,
amount = {
min = 4,
max = 7,
},
}
},
chance = 5,
textureVariation = 0,
minimumDistanceBetween = 1.5,
offset = {
x = 0.0, y = 0.0, z = 0.0,
},
animation = Config.pickupAnimation,
labelSingular = 'Cocaine brick',
labelPlurar = 'Cocaine brick',
collectMessage = 'Pickup the pile of cocaine bricks',
icon = 'fas fa-box',
},
{
hash = 'hei_prop_pill_bag_01',
items = {
{
item = 'kq_ecstasy',
chance = 100,
amount = {
min = 1,
max = 1,
},
}
},
chance = 25,
textureVariation = 0,
minimumDistanceBetween = 1.5,
offset = {
x = 0.0, y = 0.0, z = -0.1,
},
rotation = {
x = 90.0, y = 0.0, z = 0.0,
},
animation = Config.pickupAnimation,
labelSingular = 'Bag of ecstasy pills',
labelPlurar = 'Bags of ecstasy pills',
collectMessage = 'Pickup the bag of ecstasy pills',
icon = 'fas fa-box',
},
{
hash = 'prop_poly_bag_money',
chance = 5,
isCash = true,
moneyAmount = {
min = 3000,
max = 5000,
},
textureVariation = 0,
minimumDistanceBetween = 1.5,
offset = {
x = 0.0, y = 0.0, z = 0.0,
},
animation = Config.pickupAnimation,
labelSingular = 'Cash',
labelPlurar = 'Cash',
collectMessage = 'Pickup cash',
icon = 'fas fa-box',
},
{
hash = 'bkr_prop_duffel_bag_01a',
chance = 10,
isCash = true,
moneyAmount = {
min = 600,
max = 2000,
},
textureVariation = 0,
minimumDistanceBetween = 1.5,
offset = {
x = 0.0, y = 0.0, z = 0.0,
},
animation = Config.pickupAnimation,
labelSingular = 'Cash',
labelPlurar = 'Cash',
collectMessage = 'Pickup cash',
icon = 'fas fa-box',
},
{
hash = 'bkr_prop_money_wrapped_01',
chance = 10,
isCash = true,
moneyAmount = {
min = 200,
max = 500,
},
textureVariation = 0,
minimumDistanceBetween = 1.5,
offset = {
x = 0.0, y = 0.0, z = 0.0,
},
animation = Config.pickupAnimation,
labelSingular = 'Cash',
labelPlurar = 'Cash',
collectMessage = 'Pickup cash',
icon = 'fas fa-box',
},
},
},
{
name = 'Tobacco, alcohol and some cash',
-- Radius around which items will spawn from the crashed plane
lootRadius = 45.0,
-- Amount of loot items that will be spawned
lootCount = 20,
loot = {
{
hash = 'sm_prop_smug_crate_s_tobacco',
chance = 15,
items = {
{
item = 'kq_tobacco',
chance = 100,
amount = {
min = 3,
max = 4,
},
}
},
textureVariation = 0,
minimumDistanceBetween = 1.5,
offset = {
x = 0.0, y = 0.0, z = -0.05,
},
animation = Config.pickupAnimation,
labelSingular = 'Tobacco product',
labelPlurar = 'Tobacco products',
collectMessage = 'Pickup crate of tobacco products',
icon = 'fas fa-box',
},
{
hash = 'ex_office_swag_booze_cigs',
chance = 15,
items = {
{
item = 'kq_tobacco',
chance = 20,
amount = {
min = 1,
max = 2,
},
}
},
textureVariation = 0,
minimumDistanceBetween = 1.5,
offset = {
x = 0.0, y = 0.0, z = -0.05,
},
animation = Config.pickupAnimation,
labelSingular = 'Tobacco product',
labelPlurar = 'Tobacco products',
collectMessage = 'Pickup tobacco products',
icon = 'fas fa-box',
},
{
hash = 'gr_prop_gr_rsply_crate03a',
chance = 45,
items = {
{
item = 'kq_tobacco',
chance = 100,
amount = {
min = 2,
max = 3,
},
}
},
textureVariation = 0,
minimumDistanceBetween = 1.5,
offset = {
x = 0.0, y = 0.0, z = -0.05,
},
animation = Config.pickupAnimation,
labelSingular = 'Tobacco product',
labelPlurar = 'Tobacco products',
collectMessage = 'Pickup crate of tobacco products',
icon = 'fas fa-box',
},
{
hash = 'prop_cs_heist_bag_02',
chance = 15,
isCash = true,
moneyAmount = {
min = 500,
max = 3000,
},
textureVariation = 0,
minimumDistanceBetween = 1.5,
offset = {
x = 0.0, y = 0.0, z = 0.0,
},
animation = Config.pickupAnimation,
labelSingular = 'Cash',
labelPlurar = 'Cash',
collectMessage = 'Pickup the bag',
icon = 'fas fa-box',
},
}
},
{
name = 'Fur, ivory and some cash',
-- Radius around which items will spawn from the crashed plane
lootRadius = 40.0,
-- Amount of loot items that will be spawned
lootCount = 30,
loot = {
{
hash = 'ex_office_swag_ivory',
chance = 30,
items = {
{
item = 'kq_ivory',
chance = 100,
amount = {
min = 1,
max = 1,
},
}
},
textureVariation = 0,
minimumDistanceBetween = 1.5,
offset = {
x = 0.0, y = 0.0, z = -0.02,
},
animation = Config.pickupAnimation,
labelSingular = 'Ivory',
labelPlurar = 'Ivories',
collectMessage = 'Pickup ivory',
icon = 'fas fa-box',
},
{
hash = 'ex_office_swag_ivory2',
chance = 15,
items = {
{
item = 'kq_ivory',
chance = 100,
amount = {
min = 3,
max = 4,
},
}
},
textureVariation = 0,
minimumDistanceBetween = 1.5,
offset = {
x = 0.0, y = 0.0, z = -0.05,
},
animation = Config.pickupAnimation,
labelSingular = 'Ivory',
labelPlurar = 'Ivories',
collectMessage = 'Pickup the stack of ivories',
icon = 'fas fa-box',
},
{
hash = 'ex_office_swag_furcoats2',
chance = 30,
items = {
{
item = 'kq_fur',
chance = 100,
amount = {
min = 1,
max = 1,
},
}
},
textureVariation = 0,
minimumDistanceBetween = 1.5,
offset = {
x = 0.0, y = 0.0, z = 0.0,
},
animation = Config.pickupAnimation,
labelSingular = 'Expensive fur',
labelPlurar = 'Expensive furs',
collectMessage = 'Pickup the expensive fur',
icon = 'fas fa-box',
},
{
hash = 'ex_office_swag_furcoats3',
chance = 15,
items = {
{
item = 'kq_fur',
chance = 100,
amount = {
min = 2,
max = 3,
},
}
},
textureVariation = 0,
minimumDistanceBetween = 1.5,
offset = {
x = 0.0, y = 0.0, z = -0.05,
},
animation = Config.pickupAnimation,
labelSingular = 'Expensive fur',
labelPlurar = 'Expensive furs',
collectMessage = 'Pickup the expensive furs',
icon = 'fas fa-box',
},
{
hash = 'prop_money_bag_01',
chance = 10,
isCash = true,
moneyAmount = {
min = 1000,
max = 2000,
},
textureVariation = 0,
minimumDistanceBetween = 1.5,
offset = {
x = 0.0, y = 0.0, z = -0.05,
},
animation = Config.pickupAnimation,
labelSingular = 'Cash',
labelPlurar = 'Cash',
collectMessage = 'Pickup the bag of money',
icon = 'fas fa-box',
},
}
},
},
}
Last updated