mirror of
https://github.com/jimathy/jim_bridge.git
synced 2026-08-17 22:16:03 +01:00
I've moved the framework caching to a new file `frameworkCache.lua` This now caches the framework data once when `jim_bridge` starts Then in `coreloader.lua` now, the information that is cached is now called from that script This also includes better handling of ESX cached data and should stop errors This greatly optimizes the loading of all my scripts and lowers server load to speed up server start times I have been testing this for just under a week and 6 different test servers and it appears to work fine
103 lines
3.3 KiB
Lua
103 lines
3.3 KiB
Lua
Items, Vehicles, Jobs, Gangs, Core = {}, nil, nil, nil, nil
|
|
|
|
-- Shared Exports Initialization
|
|
Exports.PSInv = isStarted("lj-inventory") and "lj-inventory" or Exports.PSInv
|
|
|
|
OXLibExport, QBXExport, QBExport, ESXExport, OXCoreExport =
|
|
Exports.OXLibExport or "",
|
|
Exports.QBXExport or "",
|
|
Exports.QBExport or "",
|
|
Exports.ESXExport or "",
|
|
Exports.OXCoreExport or ""
|
|
|
|
OXInv, QBInv, PSInv, QSInv, CoreInv, CodeMInv, OrigenInv, TgiannInv =
|
|
Exports.OXInv or "",
|
|
Exports.QBInv or "",
|
|
Exports.PSInv or "",
|
|
Exports.QSInv or "",
|
|
Exports.CoreInv or "",
|
|
Exports.CodeMInv or "",
|
|
Exports.OrigenInv or "",
|
|
Exports.TgiannInv or ""
|
|
|
|
RSGExport, RSGInv = Exports.RSGExport or "", Exports.RSGInv or ""
|
|
QBMenuExport = Exports.QBMenuExport or ""
|
|
QBTargetExport, OXTargetExport = Exports.QBTargetExport or "", Exports.OXTargetExport or ""
|
|
|
|
if isStarted(QBXExport) or isStarted(QBExport) then
|
|
Core = Core or exports[QBExport]:GetCoreObject()
|
|
elseif isStarted(RSGExport) then
|
|
Core = Core or exports[RSGExport]:GetCoreObject()
|
|
end
|
|
|
|
|
|
if IsDuplicityVersion() then
|
|
CreateThread(function()
|
|
local cache = nil
|
|
local timeout = GetGameTimer() + 5000 -- 5 seconds max wait
|
|
|
|
-- Wait until jim_bridge is started and export is available
|
|
while not cache and GetGameTimer() < timeout do
|
|
if GetResourceState("jim_bridge"):find("start") then
|
|
local success, result = pcall(function()
|
|
return exports["jim_bridge"]:GetSharedData()
|
|
end)
|
|
if success and result then
|
|
cache = result
|
|
--print(json.encode(cache, {indent = true}))
|
|
end
|
|
end
|
|
Wait(100)
|
|
end
|
|
|
|
if not cache then
|
|
print("^1ERROR^7: ^2jim_bridge export not available after timeout^7.")
|
|
return
|
|
end
|
|
|
|
Items = cache.Items
|
|
Vehicles = cache.Vehicles
|
|
Jobs = cache.Jobs
|
|
Gangs = cache.Gangs
|
|
|
|
debugPrint("^6Bridge^7: ^2Shared cache successfully loaded from export^7.")
|
|
end)
|
|
else
|
|
local hasCache = false
|
|
-- 🔹 Client Side: Request from server
|
|
_G.__jimBridgeDataCache = {}
|
|
|
|
RegisterNetEvent("jim_bridge:receiveCache", function(data)
|
|
if not hasCache then
|
|
_G.__jimBridgeDataCache = data
|
|
hasCache = true
|
|
else
|
|
return
|
|
end
|
|
end)
|
|
|
|
TriggerServerEvent("jim_bridge:requestCache")
|
|
|
|
CreateThread(function()
|
|
while not _G.__jimBridgeDataCache or not next(_G.__jimBridgeDataCache) do Wait(50) end
|
|
local cache = _G.__jimBridgeDataCache
|
|
Items = cache.Items or {}
|
|
Vehicles = cache.Vehicles or {}
|
|
Jobs = cache.Jobs or {}
|
|
Gangs = cache.Gangs or {}
|
|
|
|
if isStarted(ESXExport) then
|
|
for _, v in pairs(Vehicles) do
|
|
Vehicles[v.model] = {
|
|
model = v.model,
|
|
hash = v.hash,
|
|
price = v.price,
|
|
name = v.name,
|
|
brand = GetMakeNameFromVehicleModel(v.model):lower():gsub("^%l", string.upper)
|
|
}
|
|
end
|
|
end
|
|
|
|
end)
|
|
end
|