Jewellery Robbery for QBCore with 1 or 3 stores, Thermite, VarHack and auto-lock/unlock doors!
- Holiday95 For their fork of qb-jewellery which this is based on, and giving me the idea.
- QBCore Framework For the orginal qb-jewellery and for inspiring me to code.
- MrNewb For showing me how to get the cases to break, absolute legend!
- (Not really a "new" feature but) Optimised script, running at 0~0.1ms, only hitting 0.1ms when it locks or unlocks a door after a hack.
- 2 New stores to rob // Grapeseed & Paleto
- Config option for just the base GTA Vangelico's Jewellers or all 3.
- Config option for base qb police alerts or ps-dispatch.
- Doors now lock depending of the time of day, and store is "unthievable" during opening hours.
- Police alerts for thermite have a higher chance when closer to business close or open.
- Police alerts for smashing the cases can be disabled by hacking the main Vangelico's PC.
- Cases will actually smash after you hit them, and reset after cooldown.
- Thermite the stores fusebox to open the front door at night.
- Hack into Vinewood Vangelico's PC to unlock all Vangelico's for 5 minutes (or whatever you set the cooldown to).
- Please open an issue for translations, I'll add them in a following update.
All store locations are for GigZ Jewelers' except for the base GTA one. It's a free map, link below:
- GigZ Jewel Store
- MAKE SURE TO INSTALL THE HEIST VERSION
- If you're using these MLO's, place interiorproxies.meta in the gigz_jewel_free_heist folder and edit it's fxmanifest to the following:
files {"interiorproxies.meta"}
data_file 'INTERIOR_PROXY_ORDER_FILE' 'interiorproxies.meta'
- You'll also need to add the following code to qb-policejob/config.lua in Config.SecurityCameras after line 100 or after index 34 (Vangelico's Jewelers CAM#4);
[35] = {label = "Vangelico's Grapeseed CAM#1", coords = vector3(1645.27, 4886.01, 44.7), r = {x = -35.0, y = 0.0, z = -141.82}, canRotate = true, isOnline = true},
[36] = {label = "Vangelico's Paleto CAM#1", coords = vector3(-374.46, 6045.52, 34.05), r = {x = -35.0, y = 0.0, z = -105.09}, canRotate = true, isOnline = true},
- It's important these cameras keep the same index as above and if you alter it, you should know what your doing.
- Don't install the store MLO's or the gigz-jewel-fix to your server.
- Don't add the door locks for Grapeseed or Paleto to the qb-doorlocks configs file.
- Don't add the new Cam ID's to qb-policejob.
- Set Config.OneStore = true.
Head over to qb-smallresources/server/logs.lua and add this underneath your last log
['donjewellery'] = '',
Once you've added that go over to your logs server and create a channel, create a webhook and then place it inbetween the ''. If you do not know how to create a webhook follow this guide Creating Webhooks.
Config.VangelicoHours = { -- Store Hours
range = {
open = 6, -- When the doors unlock
close = 18 -- When they lock for the night
},
alertnight = {
start = 18, -- The start of higher chance alerts in the evening
fin = 20 -- The end of higher chance alerts in the evening
},
alertmorn = {
start = 4, -- The start of higher chance alerts in the morning
fin = 6 -- The end of higher chance alerts in the morning
}
}
- The range is the time the store is open, and the alert times are the times the police will have a higher chance of getting an alert.
- By setting open and close to 0, the store will always be locked and robbable.
Config.OneStore = false -- Set to true if using just the main Vangelico's Jewellers
Config.Cooldown = 5 * (60 * 2000) -- where x is minutes ie. x * (60 * 2000) \\ For door auto lock function
Config.Timeout = 5 * (60 * 2000) -- where x is minutes ie. x * (60 * 2000) \\ For case smashing cooldown
Config.AutoLock = true -- Set to false if you don't want the doors to auto lock/lock at all
Config.RequiredCops = 3
Config.Dispatch = 'ps' --[[ 'ps' for ps-dispatch, 'qb' for base qb-policejob alerts, 'cd' for cd_dispatch ]]--
- The cooldown is the time (in minutes) the doors will auto lock after a hack.
- The timeout is the time (in minutes) the cases will reset after smashing.
- If
Config.AutoLock
is set to false, the doors will always be unlocked. - The required cops is the amount of cops online required for the store to be "thievable".
- Set
Config.Dispatch
to; 'ps' for ps-dispatch, 'qb' for base qb-policejob alerts, 'cd' for cd_dispatch.
Config.DoorLock = 'qb' --[[ Doorlock System ]]--
Config.Stores = {
[1] = { -- City Vangelico's
label = 'Vangelico\'s Jewellers',
coords = vector3(-630.5, -237.13, 38.08),
['Doors'] = {
main = 'jewellery-citymain',
sec = 'jewellery-citysec'
},
...
},
[2] = { -- Grapeseed Vangelico's
label = 'Vangelico\'s Jewellers',
coords = vector3(1649.78, 4882.32, 42.16),
['Doors'] = {
main = 'jewellery-grapemain',
sec = 'jewellery-grapesec'
},
...
},
[3] = { -- Paleto Vangelico's
label = 'Vangelico\'s Jewellers',
coords = vector3(-378.45, 6047.68, 32.69),
['Doors'] = {
main = 'jewellery-palmain',
sec = 'jewellery-palsec'
},
...
}
}
-
Set to
qb
for qb-doorlock -
// Create a file named
jewellery_stores
in qb-doorlock/config/ and copy the Door Config from the README into it. -
Set to
ox
for ox_doorlock -
// Uncomment '@ox_lib/init.lua' from the fxmanifest.lua, create a file named
jewellery_stores
in ox_doorlock/convert/ and copy the Door Config from the README into it. -
Set to
cd
for cd_doorlock -
// Create a Group named
Jewellery Stores
through the in-game menu and add the copy the Door Config from the README into it. -
Ensure the names of the doors correspond to the names of the doors below.
Config.DoorItem = 'thermite' -- Item to remove\check for when placing a charge
Config.ThermiteSettings = {
time = 60, -- time the hack displays for
gridsize = 5, -- (5, 6, 7, 8, 9, 10) size of grid by square units, ie. gridsize = 5 is a 5 * 5 (25) square grid
incorrectBlocks = 10 -- incorrectBlocks = number of incorrect blocks after which the game will fail
}
Config.HackItem = 'phone' -- Item to remove\check for when hacking
Config.VarHackSettings = {
blocks = 2, -- time the hack displays for
time = 20 -- time the hack displays for
}
- The door item is the item you want to remove from the player when placing a charge.
- The thermite settings are the settings for the thermite hack.
- The hack item is the item you want to check for when hacking.
- The var hack settings are the settings for the variable hack.
Config.Skills = {
enabled = false, -- Enable Skills
system = 'mz-skills',
['Thermite'] = {
skill = 'Heist Reputation', -- Skill to Use
['Limits'] = {
xp = 800 -- XP Required to do the Task
},
['Rewards'] = {
xp = 10, -- XP to give on success
multi = 1.5 -- Multiplier Based on Players Level
}
},
...
}
- Set
Config.Skills.enabled
to true to enable skills. - Set
Config.Skills.system
to the name of the skills system you are using. - Set
Config.Skills.[Task].skill
to the name of the skill you want to use. - Set
Config.Skills.[Task].Limits.xp
to the amount of xp required to do the task. - Set
Config.Skills.[Task].Rewards.xp
to the amount of xp you want to give on success. - Set
Config.Skills.[Task].Rewards.multi
to the multiplier based on the players level/ current xp.
-
Make a copy of the door config below and place it inside
qb-doorlocks/configs/
in it's own .lua file. -
If using ox_doorlock, the file must be named
jewellery_stores
and can be placed in the convert folder.
Config.DoorList['jewellery-citymain'] = {
doorType = 'double',
locked = true,
cantUnlock = true,
doorLabel = 'main',
distance = 2,
doors = {
{objName = 9467943, objYaw = 306.00003051758, objCoords = vec3(-630.426514, -238.437546, 38.206532)},
{objName = 1425919976, objYaw = 306.00003051758, objCoords = vec3(-631.955383, -236.333267, 38.206532)}
},
doorRate = 1.0,
}
Config.DoorList['jewellery-citysec'] = {
objYaw = 36.000022888184,
doorRate = 1.0,
locked = true,
fixText = false,
pickable = true,
authorizedJobs = { ['police'] = 0 },
needsAllItems = false,
objCoords = vec3(-629.133850, -230.151703, 38.206585),
distance = 1.5,
doorType = 'door',
objName = 1335309163,
}
Config.DoorList['jewellery-grapemain'] = {
doorType = 'double',
locked = true,
cantUnlock = true,
doorLabel = 'main',
distance = 2,
doors = {
{objName = 9467943, objYaw = 98.17839050293, objCoords = vec3(1653.285522, 4884.148438, 42.309845)},
{objName = 1425919976, objYaw = 98.17839050293, objCoords = vec3(1653.655518, 4881.573730, 42.309845)}
},
doorRate = 1.0,
}
Config.DoorList['jewellery-grapesec'] = {
pickable = true,
objCoords = vec3(1648.274902, 4877.423340, 42.309898),
objName = 1335309163,
doorRate = 1.0,
distance = 1,
authorizedJobs = { ['police'] = 0 },
doorType = 'door',
objYaw = 188.17839050293,
fixText = false,
doorLabel = 'sec',
locked = true,
}
Config.DoorList['jewellery-palmain'] = {
doorType = 'double',
locked = true,
cantUnlock = true,
doorLabel = 'main',
distance = 2,
doors = {
{objName = 1425919976, objYaw = 314.90930175781, objCoords = vec3(-383.837921, 6044.059082, 31.658920)},
{objName = 9467943, objYaw = 314.90930175781, objCoords = vec3(-382.001617, 6042.216797, 31.658920)}
},
doorRate = 1.0,
}
Config.DoorList['jewellery-palsec'] = {
doorType = 'door',
locked = true,
doorRate = 1.0,
pickable = true,
distance = 1.5,
objYaw = 44.909275054932,
fixText = false,
authorizedJobs = { ['police'] = 0 },
objCoords = vec3(-382.007721, 6050.603027, 31.658974),
objName = 1335309163,
}
-
If using ox_doorlock, and the door configs above cause errors in this heist, set
Config.DoorLock.Extraname
to the main name of the door in your database. -
Highlighted below is an example of what name in the database you should set
Config.DoorLock.Extraname
to.
How your doorlocks should look on cd_doorlock after implementing them!
This is not a QBCore script nor is it maintained by them, please refer to my discord for any issues!