mirror of
https://github.com/CommunityOx/ox_lib.git
synced 2026-08-18 23:46:03 +01:00
refactor(getCore): rename loadFramework, tweaks
ESX imports are limited to an event and getSharedObject export. In the future I want to introduce some generic functions to simplify cross-framework compatibility when working with player, accounts, inventories, and groups (jobs/gangs).
This commit is contained in:
65
imports/getCore/shared.lua
Normal file
65
imports/getCore/shared.lua
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
return function()
|
||||||
|
local result
|
||||||
|
|
||||||
|
Citizen.CreateThreadNow(function()
|
||||||
|
local framework = GetConvar('framework', '')
|
||||||
|
|
||||||
|
if framework == '' then
|
||||||
|
framework = GetResourceState('ox_core'):find('start') and 'ox_core'
|
||||||
|
or GetResourceState('qb-core'):find('start') and 'qb-core'
|
||||||
|
or GetResourceState('es_extended'):find('start') and 'es_extended'
|
||||||
|
|
||||||
|
if not framework then
|
||||||
|
error('Unable to determine framework (convar is not set, or resource was renamed)')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local success, import
|
||||||
|
|
||||||
|
if framework == 'qb-core' then
|
||||||
|
import = exports[framework]:GetCoreObject()
|
||||||
|
elseif framework == 'es_extended' then
|
||||||
|
import = exports[framework]:getSharedObject()
|
||||||
|
end
|
||||||
|
|
||||||
|
if import then
|
||||||
|
import.resource = framework
|
||||||
|
else
|
||||||
|
if framework == 'ox_core' then
|
||||||
|
import = ('%s/import.lua'):format(lib.service)
|
||||||
|
else
|
||||||
|
error('no loader exists for %s'):format(framework)
|
||||||
|
end
|
||||||
|
|
||||||
|
success, result = pcall(LoadResourceFile, framework, import)
|
||||||
|
|
||||||
|
if not result then
|
||||||
|
error(("Unable to load '@%s/%s'"):format(framework, import))
|
||||||
|
end
|
||||||
|
|
||||||
|
if not success then
|
||||||
|
error(result and result or ("Unable to load '@%s/%s'"):format(framework, import), 0)
|
||||||
|
end
|
||||||
|
|
||||||
|
success, result = load(result, ('@@%s/%s'):format(framework, import))
|
||||||
|
|
||||||
|
if not success then
|
||||||
|
error(result, 0)
|
||||||
|
end
|
||||||
|
|
||||||
|
success, result = pcall(success)
|
||||||
|
|
||||||
|
if not success then error(result) end
|
||||||
|
|
||||||
|
if framework == 'ox_core' then
|
||||||
|
import = Ox
|
||||||
|
end
|
||||||
|
|
||||||
|
import.resource = framework
|
||||||
|
end
|
||||||
|
|
||||||
|
result = import
|
||||||
|
end)
|
||||||
|
|
||||||
|
return result
|
||||||
|
end
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
local function ref(framework)
|
|
||||||
if framework == 'ox_core' or framework == 'es_extended'then
|
|
||||||
return 'imports.lua'
|
|
||||||
elseif framework == 'qb-core' then
|
|
||||||
return exports['qb-core'].GetCoreObject
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local function err(e, n)
|
|
||||||
error(('^1%s^0'):format(e), n)
|
|
||||||
end
|
|
||||||
|
|
||||||
return function()
|
|
||||||
local framework = GetResourceState('ox_core'):find('start') and 'ox_core'
|
|
||||||
|
|
||||||
if not framework then
|
|
||||||
framework = GetResourceState('es_extended'):find('start') and 'es_extended'
|
|
||||||
end
|
|
||||||
|
|
||||||
if not framework then
|
|
||||||
framework = GetResourceState('qb-core'):find('start') and 'qb-core'
|
|
||||||
end
|
|
||||||
|
|
||||||
local result
|
|
||||||
local success, import = pcall(ref, framework)
|
|
||||||
|
|
||||||
if not success or not import then
|
|
||||||
err(import and import or ('no loader exists for %s'):format(framework), 1)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Return early since framework does not use an imports file
|
|
||||||
if type(import) == 'table' then
|
|
||||||
import.resource = framework
|
|
||||||
return import
|
|
||||||
end
|
|
||||||
|
|
||||||
success, result = pcall(LoadResourceFile, framework, import)
|
|
||||||
|
|
||||||
if not result then
|
|
||||||
err(("unable to load '@%s/%s'"):format(framework, import))
|
|
||||||
end
|
|
||||||
|
|
||||||
if not success then
|
|
||||||
err(result and result or ("unable to load '@%s/%s'"):format(framework, import), 0)
|
|
||||||
end
|
|
||||||
|
|
||||||
success, result = load(result, ('@@%s/%s'):format(framework, import))
|
|
||||||
|
|
||||||
if not success then
|
|
||||||
err(result, 0)
|
|
||||||
end
|
|
||||||
|
|
||||||
success, result = pcall(success)
|
|
||||||
|
|
||||||
if not success then err(result) end
|
|
||||||
|
|
||||||
if framework == 'ox_core' then
|
|
||||||
import = Ox
|
|
||||||
elseif framework == 'es_extended' then
|
|
||||||
import = ESX
|
|
||||||
end
|
|
||||||
|
|
||||||
import.resource = framework
|
|
||||||
|
|
||||||
return import
|
|
||||||
end
|
|
||||||
Reference in New Issue
Block a user