
π»Installation
Dependencies :
QBCORE
You will need the latest version of qb-core
Extract the contents of the archive to your resources folder.
Start the resource near the top of your resources in your server.cfg.
XSOUND
You will need the latest version of xsound.
Extract the contents of the archive to your resources folder.
Start the resource near the top of your resources in your server.cfg.
Inventories :
QB-INVENTORY
Add the items below to the qb-core/shared/items.lua:
c4_low_saspa = { name = 'c4_low_saspa', label = 'Special M112 Demolition Charge', weight = 100, type = 'item', image = 'c4_low_saspa.png', unique = false, useable = true, shouldClose = true, combinable = nil, description = 'Special M112 Demolition Charge Tier 1.' },
c4_mid_saspa = { name = 'c4_mid_saspa', label = 'Special X6 Breaching Charge', weight = 100, type = 'item', image = 'c4_mid_saspa.png', unique = false, useable = true, shouldClose = true, combinable = nil, description = 'Special X6 Breaching Charge Tier 2.' },
c4_high_saspa = { name = 'c4_high_saspa', label = 'Special T-14 Thermobaric Charge', weight = 100, type = 'item', image = 'c4_high_saspa.png', unique = false, useable = true, shouldClose = true, combinable = nil, description = 'Special T-14 Thermobaric Charge Tier 3.' },
bagsaspa = { name = 'bagsaspa', label = 'SASPA bag', weight = 100, type = 'item', image = 'bagsaspa.png', unique = false, useable = true, shouldClose = true, combinable = nil, description = 'A bag filled with the prisoners belongings' },
saspatablet = { name = 'saspatablet', label = 'SASPA Tablet', weight = 100, type = 'item', image = 'saspatablet.png', unique = false, useable = true, shouldClose = true, combinable = nil, description = 'SASPA tablet.'},
OX_INVENTORY
Add the items below into your ox-inventory/data/items.lua
["c4_mid_saspa"] = {
label = "Special X6 Breaching Charge",
weight = 100,
stack = true,
close = true,
description = "Special X6 Breaching Charge",
client = {
image = "c4_mid_saspa.png",
}
},
["c4_high_saspa"] = {
label = "Special T-14 Thermobaric Charge",
weight = 100,
stack = true,
close = true,
description = "Special T-14 Thermobaric Charge",
client = {
image = "c4_high_saspa.png",
}
},
["c4_low_saspa"] = {
label = "Special M112 Demolition Charge",
weight = 100,
stack = true,
close = true,
description = "Special M112 Demolition Charge",
client = {
image = "c4_low_saspa.png",
}
},
["bagsaspa"] = {
label = "SASPA bag",
weight = 100,
stack = true,
close = true,
description = "A bag filled with the prisoners belongings",
client = {
image = "bagsaspa.png",
}
},
["saspatablet"] = {
label = "SASPA Tablet",
weight = 100,
stack = true,
close = true,
description = "SASPA tablet.",
client = {
image = "saspatablet.png",
}
},
Add this into ox_inventory/modules/items/client.lua
Item('c4_low_saspa', function(data, slot)
ox_inventory:useItem(data, function(data)
if data then
TriggerEvent("zat-saspa:client:PlantBomb", 1, slot.name)
end
end)
end)
Item('c4_mid_saspa', function(data, slot)
ox_inventory:useItem(data, function(data)
if data then
TriggerEvent("zat-saspa:client:PlantBomb", 2, slot.name)
end
end)
end)
Item('c4_high_saspa', function(data, slot)
ox_inventory:useItem(data, function(data)
if data then
TriggerEvent("zat-saspa:client:PlantBomb", 3, slot.name)
end
end)
end)
Item('saspatablet', function(data, slot)
ox_inventory:useItem(data, function(data)
if data then
TriggerEvent("zat-saspa:client:OpenTablet")
end
end)
end)
QS-INVENTORY
Add the items below into your qs-inventory/shared/items.lua
['c4_low_saspa'] = {
['name'] = 'c4_low_saspa',
['label'] = 'Special M112 Demolition Charge',
['weight'] = 100,
['type'] = 'item',
['image'] = 'c4_low_saspa.png',
['unique'] = false,
['useable'] = true,
['shouldClose'] = true,
['combinable'] = nil,
['description'] = 'Special M112 Demolition Charge'
},
['c4_mid_saspa'] = {
['name'] = 'c4_mid_saspa',
['label'] = 'Special X6 Breaching Charge',
['weight'] = 100,
['type'] = 'item',
['image'] = 'c4_mid_saspa.png',
['unique'] = false,
['useable'] = true,
['shouldClose'] = true,
['combinable'] = nil,
['description'] = 'Special X6 Breaching Charge'
},
['c4_high_saspa'] = {
['name'] = 'c4_high_saspa',
['label'] = 'Special T-14 Thermobaric Charge',
['weight'] = 100,
['type'] = 'item',
['image'] = 'c4_high_saspa.png',
['unique'] = false,
['useable'] = true,
['shouldClose'] = true,
['combinable'] = nil,
['description'] = 'Special T-14 Thermobaric Charge'
},
['bagsaspa'] = {
['name'] = 'bagsaspa',
['label'] = 'SASPA bag',
['weight'] = 100,
['type'] = 'item',
['image'] = 'bagsaspa.png',
['unique'] = false,
['useable'] = true,
['shouldClose'] = true,
['combinable'] = nil,
['description'] = 'A bag filled with the prisoners belongings'
},
['saspatablet'] = {
['name'] = 'saspatablet',
['label'] = 'SASPA Tablet',
['weight'] = 100,
['type'] = 'item',
['image'] = 'saspatablet.png',
['unique'] = false,
['useable'] = true,
['shouldClose'] = true,
['combinable'] = nil,
['description'] = 'SASPA tablet.'
},
Add this into qs-inventory/server/custom/misc/CreateUseableItem.lua
CreateUsableItem('c4_low_saspa', function(source, item)
local src = source
TriggerClientEvent('zat-saspa:client:PlantBomb', src, 1, 'c4_low_saspa')
end)
CreateUsableItem('c4_mid_saspa', function(source, item)
local src = source
TriggerClientEvent('zat-saspa:client:PlantBomb', src, 2, 'c4_mid_saspa')
end)
CreateUsableItem('c4_high_saspa', function(source, item)
local src = source
TriggerClientEvent('zat-saspa:client:PlantBomb', src, 3, 'c4_high_saspa')
end)
CreateUsableItem('saspatablet', function(source, item)
local src = source
TriggerClientEvent('zat-saspa:client:OpenTablet', src)
end)
ZAT - DIALOG (in case you use it) :
Add this to shared/config.lua :
-- SASPA
{
img = 'https://i.ibb.co/VpDp7Tk7/Capture-d-cran-2025-08-27-144714.png',
ped = 's_m_m_prisguard_01',
anim = 'CODE_HUMAN_MEDIC_TIME_OF_DEATH',
coords = vector4(1839.64, 2549.6, 44.92, 261.75),
job = "all", -- { ["police"] = 0, ["ambulance"] = 0} if you are using target
gang = "all", -- { ["ballas"] = 2, ["thelostmc"] = 0} if you are using target
groups = "all", -- { ["police"] = 2, ["ambulance"] = 0} if you are using intearaction
firstname = 'ASTA',
lastname = 'CLEAN',
rep = 0,
mission = 'lsfd',
text = 'Hi there, how can I help you ?',
buttons = {
{
text= 'I want to work',
rep = 0,
answer ='Prisoner uniforms need to be securely transported from the LSPD offices to the prison. Are you ready to handle this transfer?',
buttons={{
text = 'Sign In',
shop =false,
rep = 0,
action= {
isServer= false,
event= 'zat-saspa:client:Signin',
data= {}
},
canInteract = CanToggleSignIn(),
},
{
text = 'Leave Conversation',
shop =false,
rep = 0,
action= {
isServer= false,
event= 'zat-dialog:client:HideUi',
data= {}
},
canInteract = true
}
},
canInteract = true
},
{
text = 'Cancel Mission',
rep = 0,
shop =false,
action= {
isServer= false,
event= 'zat-saspa:client:StopWorking',
data= {}
},
canInteract = true
},
},
items={
}
},
ADDITIONAL SETUP
ENSURE RESOURCES
Last updated