As a player, you will enjoy a seamless and user-friendly UI.
- You can start the mission with your group.
- You can make it work with any other MLOs, all the data and coords are in the config.lua
- As a dev you can configure the following settings :
- The Framework.
- The Target/Dialog useage.
- The Target/Interact useage.
- The minimum cops required.
- The minigame settings.
- The Camera locations.
- The Noise sensors and sensitivity.
- The alarm sounds.
- The dispatch.
- The rewards and their chances.
- The Rare rewards.
- ++ More.
Code is accessible | 80% |
Subscription-based | No |
Lines (approximately) | 5k+ |
Requirements | qb-core/es_extended |
Support | Yes |
- Config.lua :
Config = {}
Config.Framework = "qb" -- "esx"
Config.Inventory = "qb" -- "qb", "ox", "qs"
Config.QBInventory = "old" -- new
Config.Target = "qb" -- ox !!!!!!!!! IMPORTANT
Config.FrameworkPseudo = 'qb-core'
Config.UseInteract = true
Config.Doorlock = 'qb'
--::::::::::::::::::::::::: NPC DIALOG ::::::::::::::::::::::::::::::
Config.UseNPCDialog = true
-- Only if NPCDialog is set to false
Config.NPC = {
model = "u_m_m_jesus_01",
anim = "CODE_HUMAN_MEDIC_TIME_OF_DEATH",
coords = vector4(996.66, -1486.69, 30.43, 265.94)
}
--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Config.MiniumCops = 0
Config.SensorTime = 30 -- sensor get auto reactivated after '30' seconds
Config.Timeout = 180 -- 3 hours timeout between each robbery
Config.Alarm = {
started = false,
dispatch = 'qb-core',
closeAllDoors = true, -- On fail all the doors will close automatically
url = 'https://www.youtube.com/watch?v=EnRK43JkxJk', -- alarm URL
time = 3, -- 3 minutes and the alarm sound will stop
}
Config.Item = {
name = 'rfid_cloner',
uses = 5, -- max usage of 1 item
}
Config.Talk = {
coords = vector3(133.13, -149.2, 66.25), -- coords center where the player talking will be detected as noise (when robberry started)
radius = 30.0 -- radius to detect player talking or not
}
Config.Doors = {
{ -- Main Door Entrance --1
coords = vector3(111.06, -139.24, 55.04),
ped = vector4(111.15, -139.37, 55.17, 254.75),
item = 'rfid_cloner',
id = 'gallery-1', -- door name from doorlock.
},
{ -- Left Door After Entrance --2
coords = vector3(116.41, -142.25, 55.24),
ped = vector4(116.42, -142.30, 55.26, 247.94),
item = 'rfid_cloner',
id = 'gallery-2', -- door name from doorlock.
},
{ -- right Door After Entrance --3
coords = vector3(115.94, -143.52, 55.23),
ped = vector4(115.95, -143.57, 55.26, 247.94),
item = 'rfid_cloner',
id = 'gallery-3', -- door name from doorlock.
},
{ -- cameras door --4
coords = vector3(120.18, -140.98, 55.07),
ped = vector4(120.30, -140.90, 55.19, 348.16),
item = 'rfid_cloner',
id = 'gallery-4', -- door name from doorlock.
},
{ -- Underground First door --5
coords = vector3(733.96, 144.45, 80.91),
ped = vector4(734.10, 144.45, 81.10, 335.5),
item = nil,
id = 'gallery-7', -- door name from doorlock.
},
{ -- Underground tunnel First door --6
coords = vector3(166.64, -140.65, 44.87),
ped = vector4(166.6, -140.32, 42.72, 168.64),
item = nil,
id = 'gallery-8', -- door name from doorlock.
},
{ -- Underground tunnel second door --7
coords = vector3(131.93, -142.45, 44.66),
ped = vector4(132.88, -142.36, 43.39, 103.1),
item = nil,
id = 'gallery-9', -- door name from doorlock.
},
{ -- Underground Second door --8
coords = vector3(128.30, -145.67, 45.51),
ped = vector4(128.20, -145.80, 46.3, 160.68),
item = nil,
id = 'gallery-10', -- door name from doorlock.
},
{ -- Underground Third door --9
coords = vector3(116.16, -146.35, 49.62),
ped = vector4(116.16, -146.35, 49.62, 164.76),
item = nil,
id = 'gallery-11', -- door name from doorlock.
},
{ -- Office First door --10
coords = vector3(126.08, -132.57, 60.86),
ped = vector4(126.08, -132.50, 60.86, 74.76),
item = nil,
id = 'gallery-15', -- door name from doorlock.
},
{ -- Elevator First door --11
coords = vector3(148.37, -143.46, 50.68),
ped = vector4(148.39, -143.49, 50.68, 250.14),
item = 'rfid_cloner',
id = 'gallery-17', -- door name from doorlock.
},
{ -- upper exit door --12
coords = vector3(131.17, -124.39, 60.63),
ped = vector4(131.27, -124.30, 60.78, 347.84),
item = 'rfid_cloner',
id = 'gallery-19', -- door name from doorlock.
},
}
Config.Camera = {
coords = vector3(119.98, -137.58, 54.73),
cams = {
{
name = 'Gallery 2F 1',
coords = vector3(141.51, -161.28, 63.75),
rot = vector3(-20.0, 0.0, 25.0),
},
{
name = 'Alleyways',
coords = vector3(142.81, -166.99, 63.60),
rot = vector3(-30.0, 0.0, 50.0),
},
{
name = 'Lobby',
coords = vector3(115.38, -146.36, 57.60),
rot = vector3(-30.0, 0.0, 180.0),
},
{
name = 'Garage',
coords = vector3(135.02, -138.82, 58.33),
rot = vector3(0.0, 0.0, -70.0),
},
{
name = '2F Stairs',
coords = vector3(127.71, -129.59, 63.85),
rot = vector3(-30.0, 0.0, -50.0),
},
{
name = 'Main Stairs',
coords = vector3(127.72, -129.60, 58.45),
rot = vector3(-30.0, 0.0, -50.0),
},
{
name = 'Lower Stairs',
coords = vector3(127.66, -129.61, 52.85),
rot = vector3(-30.0, 0.0, -50.0),
},
{
name = 'Auction',
coords = vector3(139.53, -126.37, 52.69),
rot = vector3(-30.0, 0.0, -150.0),
},
{
name = 'Vault',
coords = vector3(148.60, -143.87, 52.06),
rot = vector3(-30.0, 0.0, -90.0),
},
{
name = 'Gallery 0F 1',
coords = vector3(127.67, -130.10, 52.74),
rot = vector3(-20.0, 0.0, 200.0),
},
{
name = 'Gallery 0F 2',
coords = vector3(142.55, -158.18, 52.77),
rot = vector3(-30.0, 0.0, 10.0),
},
{
name = '2F Elevator',
coords = vector3(148.57, -143.86, 62.28),
rot = vector3(-30.0, 0.0, -90.0),
},
{
name = 'Offices',
coords = vector3(124.09, -137.10, 62.24),
rot = vector3(-30.0, 0.0, 20.0),
},
}
}
Config.Sensors = {
{
index = 1,
rot = vector3(-6.0, 0.0, 23.59),
type = 'noise',
enabled = true,
coords = vector3(130.43, -135.86, 61.27),
},
{
index = 10,
rot = vector3(-6.69, 0.0, 173.40),
type = 'noise',
enabled = true,
coords = vector3(124.70, -152.35, 49.59),
},
{
index = 11,
rot = vector3(-22.99, 0.0, 3.0),
type = 'noise',
enabled = true,
coords = vector3(141.87, -149.93, 49.26),
},
{
index = 13,
rot = vector3(-13.2, 0.0, 12.29),
type = 'noise',
enabled = true,
coords = vector3(122.64, -129.05, 61.17),
},
}
Config.SensorsAlert = {
5, -- noise level >= 15 , the alert will increase by 5% evey second
7, -- noise level >= 25 , the alert will increase by 7% evey second
9, -- noise level >= 50 , the alert will increase by 9% evey second
11, -- noise level >= 75 , the alert will increase by 11% evey second
14, -- noise level >= 90 , the alert will increase by 14% evey second
17, -- noise level >= 100 , the alert will increase by 17% evey second
}
Config.Safe = {
coords = vector3(118.00, -125.36, 60.70),
open_h = 180.0, -- open heading.
close_h = 70.0, -- closed heading.
model = -1992154984,
open = false,
slots = 10, -- you can incerease it
rewards = { -- all of them will be there -- you can change it under server/inventories.lua
[1] = { name = 'rollcash', info = { worth = 2650 }, amount = 5},
[2] = { name = 'markedbills', info = { worth = 5620 }, amount = 2},
[3] = { name = 'goldbar', info = { }, amount = 3},
},
rare = {
chance = 3,
rewards = { -- one of them will be there -- you can change it under server/inventories.lua
[1] = { name = 'blueprint', info = { type = "thermite" }, amount = 1},
}
}
}
Config.Vault = { -- 4 hacks shall be done at the same time to success the sequence
id = 'gallery-16',
time = 60, -- 60 s for the sequence to be done
sequence = {
{ -- First One that will launch the sequence, if this one is not done, the sequence will not even start.
coords = vector3(120.62, -124.47, 60.40),
hacked = false,
label = 'Activate Decryption', -- target label
},
{
coords = vector3(124.60, -134.63, 60.29),
hacked = false,
label = 'Decrypt Data', -- target label
},
{
coords = vector3(119.38, -132.44, 60.38),
hacked = false,
label = 'Decrypt Data', -- target label
},
{
coords = vector3(154.67, -142.63, 50.67),
hacked = false,
label = 'Hack', -- target label
},
},
}
Config.Arts = {
{
coords = vector4(158.64, -140.90, 50.4, 340.0),
ped = vector4(158.56, -141.39, 49.2, 345.07),
prop = 'ch_prop_vault_painting_01e',
available = true,
reward = { name = 'painting1', info = { worth = 12520 }, amount = 1}, -- only 1 type of reward per painting
},
{
coords = vector4(155.20, -142.49, 50.4, 73.92),
ped = vector4(155.67, -142.51, 49.2, 73.88),
prop = 'ch_prop_vault_painting_01i',
available = true,
reward = { name = 'painting2', info = { worth = 12350 }, amount = 1}, -- only 1 type of reward per painting
},
}
Config.Trollys = {
{
coords = vector4(157.89, -144.62, 49.2, 70.0),
available = true,
prop = 'hei_prop_hei_cash_trolly_01',
reward = { name = 'rollcash', info = { worth = 2650 }, amount = 25}, -- only 1 type of reward per trolly
},
{
coords = vector4(156.46, -146.06, 49.2, 341.0),
available = true,
prop = 'hei_prop_hei_cash_trolly_01',
reward = { name = 'rollcash', info = { worth = 2650 }, amount = 25}, -- only 1 type of reward per trolly
},
{
coords = vector4(155.40, -145.73, 49.2, 341.0),
available = true,
prop = 'hei_prop_hei_cash_trolly_01',
reward = { name = 'rollcash', info = { worth = 2650 }, amount = 25}, -- only 1 type of reward per trolly
},
{
coords = vector4(158.50, -145.8, 49.2, 70.0),
available = true,
prop = 'hei_prop_hei_cash_trolly_01',
reward = { name = 'rollcash', info = { worth = 2650 }, amount = 25}, -- only 1 type of reward per trolly
},
{
coords = vector4(158.30, -143.23, 49.2, 70.0),
available = true,
prop = 'hei_prop_hei_cash_trolly_01',
reward = { name = 'rollcash', info = { worth = 2650 }, amount = 25}, -- only 1 type of reward per trolly
},
}
--rogara : vector3(183.71, -158.27, 56.32)
-
QBCore :
Tebex : https://zatv.tebex.io/category/qbcore
Documentation : Art Heist | ZaT Scripts -
ESX :
Tebex : https://zatv.tebex.io/category/esx
Documentation : Art Heist | ZaT Scripts -
Showcase : https://youtu.be/c29hb6BfKic