mirror of
https://github.com/qbcore-fivem/qb-core.git
synced 2026-08-28 17:01:16 +00:00
feat (Shared): Added the ability to dynamically update the shared jobs, items and gangs.
This commit is contained in:
@@ -140,3 +140,16 @@ RegisterNetEvent('QBCore:Command:ShowMe3D', function(senderId, msg)
|
||||
end
|
||||
end)
|
||||
end)
|
||||
|
||||
-- Listen to Shared being updated
|
||||
RegisterNetEvent('QBCore:Client:OnSharedUpdate', function(tableName, key, value)
|
||||
QBCore.Shared[tableName][key] = value
|
||||
TriggerEvent('QBCore:Client:UpdateObject')
|
||||
end)
|
||||
|
||||
RegisterNetEvent('QBCore:Client:OnSharedUpdateMultiple', function(tableName, values)
|
||||
for key, value in ipairs(values) do
|
||||
QBCore.Shared[tableName][key] = value
|
||||
end
|
||||
TriggerEvent('QBCore:Client:UpdateObject')
|
||||
end)
|
||||
@@ -30,6 +30,7 @@ server_scripts {
|
||||
'server/player.lua',
|
||||
'server/events.lua',
|
||||
'server/commands.lua',
|
||||
'server/exports.lua',
|
||||
'server/debug.lua'
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
-- Single add job function which should only be used if you planning on adding a single job
|
||||
local function AddJob(jobName, job)
|
||||
QBCore.Shared.Jobs[jobName] = job
|
||||
TriggerClientEvent('QBCore:Client:OnSharedUpdate', -1,'Jobs', jobName, job)
|
||||
TriggerEvent('QBCore:Server:UpdateObject')
|
||||
end
|
||||
QBCore.Functions.AddJob = AddJob
|
||||
exports('AddJob', AddJob)
|
||||
|
||||
-- Multiple Add Jobs
|
||||
local function AddJobs(jobs)
|
||||
for key, value in pairs(jobs) do
|
||||
QBCore.Shared.Jobs[key] = value
|
||||
end
|
||||
|
||||
TriggerClientEvent('QBCore:Client:OnSharedUpdateMultiple', -1, 'Jobs', jobs)
|
||||
TriggerEvent('QBCore:Server:UpdateObject')
|
||||
end
|
||||
QBCore.Functions.AddJobs = AddJobs
|
||||
exports('AddJobs', AddJobs)
|
||||
|
||||
-- Single add item
|
||||
local function AddItem(itemName, item)
|
||||
QBCore.Shared.Items[itemName] = item
|
||||
TriggerClientEvent('QBCore:Client:OnSharedUpdate', -1, 'Items', itemName, item)
|
||||
TriggerEvent('QBCore:Server:UpdateObject')
|
||||
end
|
||||
QBCore.Functions.AddItem = AddItem
|
||||
exports('AddItem', AddItem)
|
||||
|
||||
-- Multiple Add Items
|
||||
local function AddItems(items)
|
||||
for key, value in pairs(items) do
|
||||
QBCore.Shared.Items[key] = value
|
||||
end
|
||||
|
||||
TriggerClientEvent('QBCore:Client:OnSharedUpdateMultiple', -1, 'Items', items)
|
||||
TriggerEvent('QBCore:Server:UpdateObject')
|
||||
end
|
||||
QBCore.Functions.AddItems = AddItems
|
||||
exports('AddItems', AddItems)
|
||||
|
||||
-- Single Add Gang
|
||||
local function AddGang(gangName, gang)
|
||||
QBCore.Shared.Gangs[gangName] = gang
|
||||
TriggerClientEvent('QBCore:Client:OnSharedUpdate', -1,'Gangs', gangName, gang)
|
||||
TriggerEvent('QBCore:Server:UpdateObject')
|
||||
end
|
||||
QBCore.Functions.AddGang = AddGang
|
||||
exports('AddGang', AddGang)
|
||||
|
||||
-- Multiple Add Gangs
|
||||
local function AddGangs(gangs)
|
||||
for key, value in pairs(gangs) do
|
||||
QBCore.Shared.Gangs[key] = value
|
||||
end
|
||||
|
||||
TriggerClientEvent('QBCore:Client:OnSharedUpdateMultiple', -1, 'Gangs', gangs)
|
||||
TriggerEvent('QBCore:Server:UpdateObject')
|
||||
end
|
||||
QBCore.Functions.AddGangs = AddGangs
|
||||
exports('AddGangs', AddGangs)
|
||||
@@ -549,6 +549,8 @@ end
|
||||
QBCore.Player.LoadInventory = function(PlayerData)
|
||||
PlayerData.items = {}
|
||||
local inventory = MySQL.Sync.prepare('SELECT inventory FROM players WHERE citizenid = ?', { PlayerData.citizenid })
|
||||
local missingItems = {}
|
||||
|
||||
if inventory then
|
||||
inventory = json.decode(inventory)
|
||||
if next(inventory) then
|
||||
@@ -571,11 +573,18 @@ QBCore.Player.LoadInventory = function(PlayerData)
|
||||
slot = item.slot,
|
||||
combinable = itemInfo['combinable']
|
||||
}
|
||||
else
|
||||
missingItems[#missingItems+1] = item.name:lower()
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if #missingItems > 0 then
|
||||
print(("%s the following items removed as they no longer exist: %s"):format(GetPlayerName(PlayerData.source), json.encode(missingItems)))
|
||||
end
|
||||
return PlayerData
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user