Scripts/resources/[custom_script]/rcore_arcade/object.lua

131 lines
3.6 KiB
Lua
Raw Normal View History

2024-12-29 19:48:41 +00:00
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