175 lines
		
	
	
	
		
			5.5 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			175 lines
		
	
	
	
		
			5.5 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| ---Loads a resource file provided the file path
 | |
| ---@param filePath string
 | |
| ---@param resourceName string|nil The resource to load the file from, uses CURRENT_RESOURCE if not spesified
 | |
| ---@return table
 | |
| local function loadFile(filePath, resourceName)
 | |
|     local file = LoadResourceFile(resourceName or CURRENT_RESOURCE, filePath)
 | |
|     local path = string.format('%s/%s', resourceName or CURRENT_RESOURCE, filePath)
 | |
| 
 | |
|     if not file then
 | |
|         warn(string.format('No file was found with path %s', path))
 | |
|         return {}
 | |
|     end
 | |
| 
 | |
|     local func, err = load(file, path)
 | |
|     if not func or err then
 | |
|         error(err, 0)
 | |
|     end
 | |
| 
 | |
|     return func()
 | |
| end
 | |
| 
 | |
| ---Checks if a export exist in the spesified resouce
 | |
| ---@param resource string
 | |
| ---@param export string
 | |
| ---@return boolean
 | |
| local function doesExportExist(resource, export)
 | |
|     return pcall(function()
 | |
|         return exports[resource][export]
 | |
|     end)
 | |
| end
 | |
| 
 | |
| ---Force loads init.lua from ox_lib
 | |
| local function forceIncludeOxLib()
 | |
|     loadFile('init.lua', 'ox_lib')
 | |
|     warn("ox_lib was force included by the script, please add it to the fxmanifest if you intend to use ox_lib with this script, otherwise configure the config file differently.")
 | |
| end
 | |
| 
 | |
| local environment = IsDuplicityVersion() and 'server' or 'client'
 | |
| local EXPORTS <const> = {
 | |
|     QB = doesExportExist('qb-core', 'GetCoreObject'),
 | |
|     ESX = doesExportExist('es_extended', 'getSharedObject')
 | |
| }
 | |
| 
 | |
| local framework = Config.Framework
 | |
| if framework == 'auto' then
 | |
|     if GetResourceState('ox_core') == 'started' then
 | |
|         framework = 'ox'
 | |
|     elseif EXPORTS.QB then
 | |
|         framework = 'qb'
 | |
|     elseif EXPORTS.ESX then
 | |
|         framework = 'esx'
 | |
|     elseif doesExportExist('ND_Core', 'GetCoreObject') then
 | |
|         framework = 'nd'
 | |
|     else
 | |
|         framework = 'standalone'
 | |
|     end
 | |
| end
 | |
| 
 | |
| -- People are stupid and don't read instructions, so let's force include ox_lib if needed.
 | |
| if (framework == 'ox' or framework == 'nd') and not lib then
 | |
|     forceIncludeOxLib()
 | |
| end
 | |
| 
 | |
| loadFile(string.format('bridge/framework/%s/%s.lua', framework, environment))
 | |
| 
 | |
| ---@type string|boolean
 | |
| local dispatch = Config.Dispatch
 | |
| if dispatch then
 | |
|     if dispatch == 'auto' or dispatch == true then
 | |
|         if GetResourceState('ps-dispatch') == 'started' then
 | |
|             dispatch = 'ps'
 | |
|         elseif GetResourceState('ND_MDT') == 'started' then
 | |
|             dispatch = 'nd'
 | |
|         elseif GetResourceState('ox_mdt') == 'started' then
 | |
|             dispatch = 'ox'
 | |
|         elseif doesExportExist('core_dispatch', 'addCall') then
 | |
|             dispatch = 'core'
 | |
|         elseif GetResourceState('rcore_dispatch') == 'started' then
 | |
|             dispatch = 'rcore'
 | |
|         elseif doesExportExist('qs-dispatch', 'GetPlayerInfo') then
 | |
|             dispatch = 'quasar'
 | |
|         else
 | |
|             dispatch = false
 | |
| 
 | |
|             -- Force disable to prevent server attempting to call on function
 | |
|             Config.Dispatch = false
 | |
|         end
 | |
|     end
 | |
| 
 | |
|     if dispatch then
 | |
|         loadFile(string.format('bridge/dispatch/%s/%s.lua', dispatch, environment))
 | |
|     end
 | |
| end
 | |
| 
 | |
| local inventory = Config.Inventory
 | |
| if inventory == 'auto' then
 | |
|     if doesExportExist('ox_inventory', 'Items') then
 | |
|         inventory = 'ox'
 | |
|     elseif EXPORTS.QB then
 | |
|         inventory = 'qb'
 | |
|     elseif EXPORTS.ESX then
 | |
|         inventory = 'esx'
 | |
|     else
 | |
|         inventory = 'standalone'
 | |
|     end
 | |
| end
 | |
| 
 | |
| loadFile(string.format('bridge/inventory/%s/%s.lua', inventory, environment))
 | |
| 
 | |
| if environment == 'client' then
 | |
|     local notification = Config.Notification
 | |
| 
 | |
|     ---@type string|boolean
 | |
|     local helptext = Config.HelpText
 | |
| 
 | |
|     ---@type string|boolean
 | |
|     local target = Config.Target
 | |
| 
 | |
|     if notification then
 | |
|         if notification == 'auto' then
 | |
|             if doesExportExist('ox_lib', 'notify') then
 | |
|                 notification = 'ox'
 | |
|             elseif EXPORTS.QB then
 | |
|                 notification = 'qb'
 | |
|             elseif EXPORTS.ESX then
 | |
|                 notification = 'esx'
 | |
|             else
 | |
|                 notification = 'standalone'
 | |
|             end
 | |
|         end
 | |
| 
 | |
|         loadFile(string.format('bridge/notification/%s.lua', notification))
 | |
|     end
 | |
| 
 | |
|     if helptext then
 | |
|         if helptext == 'auto' then
 | |
|             if doesExportExist('ox_lib', 'showTextUI') then
 | |
|                 helptext = 'ox'
 | |
|             elseif doesExportExist('qb-core', 'DrawText') then
 | |
|                 helptext = 'qb'
 | |
|             elseif EXPORTS.ESX then
 | |
|                 helptext = 'esx'
 | |
|             else
 | |
|                 helptext = 'standalone'
 | |
|             end
 | |
|         end
 | |
| 
 | |
|         -- People are stupid and don't read instructions, so let's force include ox_lib if needed.
 | |
|         if helptext == 'ox' and not lib then
 | |
|             forceIncludeOxLib()
 | |
|         end
 | |
| 
 | |
|         loadFile(string.format('bridge/helptext/%s.lua', helptext))
 | |
|     end
 | |
| 
 | |
|     if target then
 | |
|         if target == 'auto' or target == true then
 | |
|             if doesExportExist('ox_target', 'addGlobalVehicle') then
 | |
|                 target = 'ox_target'
 | |
|             elseif doesExportExist('qb-target', 'AddTargetBone') then
 | |
|                 target = 'qb-target'
 | |
|             elseif doesExportExist('qtarget', 'AddTargetBone') then
 | |
|                 target = 'qtarget'
 | |
|             elseif doesExportExist('bt-target', 'AddTargetModel') then
 | |
|                 target = 'bt-target'
 | |
|             else
 | |
|                 target = false
 | |
|             end
 | |
|         end
 | |
| 
 | |
|         if target then
 | |
|             loadFile(string.format('bridge/target/%s.lua', target))
 | |
|         end
 | |
|     end
 | |
| end
 | 
