mirror of
https://github.com/jimathy/jim_bridge.git
synced 2026-08-17 14:06:02 +01:00
People were reporting issues with scripts claiming items didn't exist, I believe this was due to their servers having slot starts (eg. alot of clothes or vehicles being loaded) I've rewritten it to fully delay loading until everything is correctly cached and let the scripts continue. Also hopefully reducing memory footprint for it too. --- Also slipped in an `experimental` function that grabs inventory config files to check their set InventoryWeight and InventorySlots to automatically apply it for other functions ---
113 lines
3.8 KiB
Lua
113 lines
3.8 KiB
Lua
Items, Vehicles, Jobs, Gangs = 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, JPRInv =
|
|
Exports.OXInv or "",
|
|
Exports.QBInv or "",
|
|
Exports.PSInv or "",
|
|
Exports.QSInv or "",
|
|
Exports.CoreInv or "",
|
|
Exports.CodeMInv or "",
|
|
Exports.OrigenInv or "",
|
|
Exports.TgiannInv or "",
|
|
Exports.JPRInv 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
|
|
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
|
|
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
|
|
InventoryWeight = cache.InventoryWeight or InventoryWeight
|
|
InventorySlots = cache.InventorySlots or 40
|
|
|
|
debugPrint("^6Bridge^7: ^2Shared cache successfully loaded from export^7.")
|
|
--print(countTable(Items), countTable(Vehicles), countTable(Jobs))
|
|
else
|
|
local hasCache = false
|
|
-- 🔹 Client Side: Request from server
|
|
cache = {}
|
|
|
|
RegisterNetEvent("jim_bridge:receiveCache", function(data)
|
|
if not hasCache then
|
|
cache = data
|
|
hasCache = true
|
|
else
|
|
return
|
|
end
|
|
end)
|
|
|
|
TriggerServerEvent("jim_bridge:requestCache")
|
|
|
|
while not cache or not next(cache) do Wait(50) end
|
|
Items = cache.Items or {}
|
|
Vehicles = cache.Vehicles or {}
|
|
Jobs = cache.Jobs or {}
|
|
Gangs = cache.Gangs or {}
|
|
InventoryWeight = cache.InventoryWeight or InventoryWeight
|
|
InventorySlots = cache.InventorySlots or 50
|
|
|
|
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
|
|
if isStarted(OXInv) then
|
|
for k, v in pairsByKeys(Items) do
|
|
local tempInfo = exports[OXInv]:Items(k)
|
|
if tempInfo and tempInfo.client then
|
|
Items[k].image = (tempInfo.client and tempInfo.client.image) and tempInfo.client.image:gsub("nui://"..OXInv.."/web/images/", "") or k..".png"
|
|
Items[k].hunger = tempInfo.client and tempInfo.client.hunger
|
|
Items[k].thirst = tempInfo.client and tempInfo.client.thirst
|
|
end
|
|
end
|
|
end
|
|
debugPrint("^6Bridge^7: ^2Shared cache successfully loaded from export^7.")
|
|
end
|