131 lines
3.6 KiB
Lua
131 lines
3.6 KiB
Lua
local loadedObject = false
|
|
OnObjectLoadedVariable = {}
|
|
|
|
function OnObjectLoaded(cb)
|
|
if loadedObject then
|
|
cb()
|
|
end
|
|
table.insert(OnObjectLoadedVariable, cb)
|
|
end
|
|
|
|
function GetFrameworkName()
|
|
local type = Config.Framework.Active
|
|
if type == Framework.ESX then
|
|
return Config.Framework.ES_EXTENDED_NAME
|
|
end
|
|
if type == Framework.QBCORE then
|
|
return Config.Framework.QB_CORE_NAME
|
|
end
|
|
end
|
|
|
|
local function IsResourceOnServer(resourceName)
|
|
if GetResourceState(resourceName) == "started" or GetResourceState(resourceName) == "starting" then
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
|
|
function GetSharedObject()
|
|
local promise_ = promise:new()
|
|
local object = nil
|
|
|
|
framework = Config.Framework.Active
|
|
|
|
if Config.Framework.AutoCheck then
|
|
if IsResourceOnServer(Config.Framework.ES_EXTENDED_NAME) then
|
|
framework = Framework.ESX
|
|
Config.Framework.Active = Framework.ESX
|
|
end
|
|
|
|
if IsResourceOnServer(Config.Framework.QB_CORE_NAME) then
|
|
framework = Framework.QBCORE
|
|
Config.Framework.Active = Framework.QBCORE
|
|
end
|
|
end
|
|
|
|
if Config.Framework.Active == Framework.STANDALONE then
|
|
return nil
|
|
end
|
|
|
|
resourceName = GetFrameworkName()
|
|
|
|
-- Your custom
|
|
if framework == Framework.CUSTOM then
|
|
loadedObject = true
|
|
for _, fun in pairs(OnObjectLoadedVariable) do
|
|
fun()
|
|
end
|
|
end
|
|
|
|
-- ES_EXTENDED
|
|
if framework == Framework.ESX then
|
|
xpcall(function()
|
|
object = exports[resourceName or 'es_extended']['getSharedObject']()
|
|
promise_:resolve(object)
|
|
end, function(error)
|
|
local ESX = nil
|
|
local tries = 10
|
|
LoadEsx = function()
|
|
if tries == 0 then
|
|
print("You forgot to change ESX shared object in config, please do it now or the script wont work properly.")
|
|
return
|
|
end
|
|
if ESX == nil then
|
|
SetTimeout(100, LoadEsx)
|
|
end
|
|
|
|
TriggerEvent(Config.Framework.ESX_SHARED_OBJECT, function(obj)
|
|
ESX = obj
|
|
end)
|
|
end
|
|
|
|
LoadEsx()
|
|
|
|
object = ESX
|
|
promise_:resolve(object)
|
|
end)
|
|
end
|
|
|
|
-- QBCORE
|
|
if framework == Framework.QBCORE then
|
|
xpcall(function()
|
|
object = exports[resourceName or 'qb-core']['GetCoreObject']()
|
|
promise_:resolve(object)
|
|
end, function(error)
|
|
xpcall(function()
|
|
object = exports[resourceName or 'qb-core']['GetSharedObject']()
|
|
promise_:resolve(object)
|
|
end, function(error)
|
|
|
|
local QBCore = nil
|
|
local tries = 10
|
|
LoadQBCore = function()
|
|
if tries == 0 then
|
|
print("You forgot to change QBC shared object in config, please do it now or the script wont work properly.")
|
|
return
|
|
end
|
|
if QBCore == nil then
|
|
SetTimeout(100, LoadQBCore)
|
|
end
|
|
|
|
TriggerEvent(Config.Framework.QBCORE_SHARED_OBJECT, function(obj)
|
|
QBCore = obj
|
|
end)
|
|
end
|
|
|
|
LoadQBCore()
|
|
|
|
object = QBCore
|
|
promise_:resolve(object)
|
|
end)
|
|
end)
|
|
end
|
|
|
|
Citizen.Await(object)
|
|
|
|
loadedObject = true
|
|
for _, fun in pairs(OnObjectLoadedVariable) do
|
|
fun()
|
|
end
|
|
return object
|
|
end |