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 alarm sounds.
- The dispatch.
- The rewards and their chances.
++ 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 = "ox" -- ox
Config.FrameworkPseudo = 'qb-core'
Config.UseInteract = false -- better to use target
Config.Doorlock = 'qb'
Config.phone = 'qb-phone'
Config.Debug = true -- use /placebox and /placeshoe and /placepc command to place the prop using gizmo and get coords
Config.UseBuckets = false -- recommended
--::::::::::::::::::::::::: NPC DIALOG ::::::::::::::::::::::::::::::
Config.UseNPCDialog = true
-- Only if NPCDialog is set to false
Config.NPC = {
model = "a_m_m_socenlat_01",
anim = "CODE_HUMAN_MEDIC_TIME_OF_DEATH",
coords = vector4(1213.85, -1238.6, 35.33, 92.7)
}
--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Config.Alarm = {
started = false,
dispatch = 'qb-core',
url = 'https://www.youtube.com/watch?v=EnRK43JkxJk', -- alarm URL
time = 3, -- 3 minutes and the alarm sound will stop
}
Config.MiniumCops = 0
Config.GenerateTime = 0
Config.Timeout = 45
Config.VaultDelay = 3
Config.MainDoorDelay = 1
Config.Locations = {
main = vector3(135.73, -1337.25, 29.71),
}
Config.Item = {
name = 'rfid_cloner',
uses = 5, -- max usage of 1 item
}
Config.Items = {
printer = 'moneyprinter',
ink = 'ink',
paper = 'paper',
}
Config.Printer = {
working = 'prop_cash_printer',
close = 'prop_cash_printer_c',
time = 1, --1 minute to print a paper (it could take more but will not be more than 2 x time)
reward = 'rollcash',
max = 100, -- max 100 paper per ink (ink item is useable only once !)
}
Config.Doors = {
{ -- 1
coords = vector3(137.47, -1334.30, 29.22),
label = 'Disable Smart Lock',
id = 'cashexchange-1', -- door id
item = 'rfid_cloner',
ped = vector4(137.46, -1334.52, 29.60, 126.87)
},
{ -- 2
coords = vector3(140.08, -1340.04, 29.64),
label = 'Disable Electricity',
id = 'cashexchange-2', -- door id
item = 'rfid_cloner',
ped = vector4(140.11, -1340.07, 29.64, 228.91)
},
{ -- 3
coords = vector3(125.72, -1342.32, 29.95),
label = 'Hack Door',
id = 'cashexchange-3', -- door id
item = 'rfid_cloner',
ped = vector4(125.60, -1342.34, 30.1, 137.59)
},
{ -- 4
coords = vector3(133.89, -1344.99, 29.94),
label = 'Hack Door',
id = 'cashexchange-4', -- door id
item = 'rfid_cloner',
ped = vector4(134.05, -1344.95, 30.1, 316.02)
}
}
Config.Trollys = {
{
coords = vector4(132.61, -1337.97, 28.71, 164.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(134.19, -1339.73, 28.71, 139.72),
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(135.62, -1344.88, 28.71, 48.47),
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(131.04, -1339.74, 28.71, 295.91),
available = true,
prop = 'hei_prop_hei_cash_trolly_01',
reward = { name = 'rollcash', info = { worth = 2650 }, amount = 25}, -- only 1 type of reward per trolly
},
}
-- IMPORTANT :
-- random one of these (keep it from lower chance to higher) (10% 40% 50%)
-- you must have one with 100% chance at least (check target.lua for more details)
Config.Rewards = {
{
name = 'moneyprinter',
min = 1,
max = 1,
chance = 10, --10%
coords = vector3(130.755, -1340.60, 29.71),
available = true,
},
{
name = 'ink',
min = 1,
max = 3,
chance = 50, --40%
coords = vector3(130.755, -1340.60, 29.71),
available = true,
},
{
name = 'paper',
min = 50,
max = 120,
chance = 100, --100%
coords = vector3(130.755, -1340.60, 29.71),
available = true,
},
}
----------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------OPTIMISATION PART --------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------
-- Description : this part is responsable on deleting the not needed props when no players are nearby
-- refreshprops : is the time to check if there is someone near the props or not
-- radius : is to check how far is the player from the prop if it is < then the prop will be deleted until someone is nearby...
Config.RefreshProps = 10 -- 15 seconds
Config.Radius = 100.0 -- if the distance between the player and the prop is < 50 then the prop will be deleted.
----------------------------------------------------------------------------------------------------------------------------------------
-
Showcase : https://youtu.be/pMMzJSwKMlo
-
QBCore :
-
Documentation : Cash Exchange Heist | ZaT Scripts
-
ESX :
-
Documentation : Cash Exchange Heist | ZaT Scripts