150 lines
		
	
	
		
			No EOL
		
	
	
		
			5.5 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			150 lines
		
	
	
		
			No EOL
		
	
	
		
			5.5 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| Utils.Target = {}
 | |
| 
 | |
| function Utils.Target.createTargetInCoords(location_id,x,y,z,onSelectTargetOptionCallback,labelText,icon,iconColor,zone_id,callbackData)
 | |
| 	if Config.custom_scripts_compatibility.target == 'ox_target' then
 | |
| 		exports['ox_target']:addSphereZone({
 | |
| 			coords = vector3(x,y,z),
 | |
| 			radius = 2.0,
 | |
| 			debug = false,
 | |
| 			options = {
 | |
| 				{
 | |
| 					icon = icon,
 | |
| 					iconColor = iconColor,
 | |
| 					label = labelText,
 | |
| 					distance = 2.5,
 | |
| 					onSelect = function()
 | |
| 						onSelectTargetOptionCallback(location_id,callbackData)
 | |
| 					end,
 | |
| 				}
 | |
| 			}
 | |
| 		})
 | |
| 	elseif Config.custom_scripts_compatibility.target == 'qb-target' then
 | |
| 		assert(Config.framework ~= "ESX", "qb-target not available for ESX")
 | |
| 		local caller_resource = getResourceName()
 | |
| 		zone_id = caller_resource .. ":" .. (zone_id or location_id)
 | |
| 		exports['qb-target']:AddBoxZone(zone_id, vector3(x,y,z), 2.5, 2.5, {
 | |
| 			name = zone_id,
 | |
| 			debugPoly = false,
 | |
| 			heading = 0.0,
 | |
| 			minZ = z - 2,
 | |
| 			maxZ = z + 2,
 | |
| 		}, {
 | |
| 			options = {
 | |
| 				{
 | |
| 					action = function()
 | |
| 						onSelectTargetOptionCallback(location_id,callbackData)
 | |
| 					end,
 | |
| 					icon = icon,
 | |
| 					label = labelText
 | |
| 				}
 | |
| 			},
 | |
| 			distance = 2.5
 | |
| 		})
 | |
| 	else
 | |
| 		Utils.CustomScripts.createTargetInCoords(location_id,x,y,z,onSelectTargetOptionCallback,labelText,icon,iconColor,zone_id,callbackData)
 | |
| 	end
 | |
| end
 | |
| 
 | |
| function Utils.Target.createTargetForModel(models,onSelectTargetOptionCallback,labelText,icon,iconColor,zone_id,callbackData,canInteractTargetCallback)
 | |
|     canInteractTargetCallback = canInteractTargetCallback or function()
 | |
|         return true
 | |
|     end
 | |
| 
 | |
| 	if Config.custom_scripts_compatibility.target == 'ox_target' then
 | |
| 		exports['ox_target']:addModel(models, {
 | |
| 			{
 | |
| 				icon = icon,
 | |
| 				iconColor = iconColor,
 | |
| 				label = labelText,
 | |
| 				distance = 2.5,
 | |
| 				onSelect = function()
 | |
| 					onSelectTargetOptionCallback(zone_id,callbackData)
 | |
| 				end,
 | |
|                 canInteract = function(entity, interact_distance, coords, name, bone)
 | |
|                     return canInteractTargetCallback(entity, interact_distance)
 | |
|                 end,
 | |
| 			},
 | |
| 		})
 | |
| 	elseif Config.custom_scripts_compatibility.target == 'qb-target' then
 | |
| 		assert(Config.framework ~= "ESX", "qb-target not available for ESX")
 | |
| 		local caller_resource = getResourceName()
 | |
| 		zone_id = caller_resource .. ":" .. (zone_id or "")
 | |
| 		exports['qb-target']:AddTargetModel(models, {
 | |
| 			options = {
 | |
| 				{
 | |
| 					icon = icon,
 | |
| 					label = labelText,
 | |
| 					action = function()
 | |
| 						onSelectTargetOptionCallback(zone_id,callbackData)
 | |
| 					end,
 | |
|                     canInteract = function(entity, interact_distance, data)
 | |
|                         return canInteractTargetCallback(entity, interact_distance)
 | |
|                     end,
 | |
| 				}
 | |
| 			},
 | |
| 			distance = 2.5,
 | |
| 		})
 | |
| 	else
 | |
| 		Utils.CustomScripts.createTargetForModel(models,onSelectTargetOptionCallback,labelText,icon,iconColor,zone_id,callbackData)
 | |
| 	end
 | |
| end
 | |
| 
 | |
| function Utils.Target.createTargetForVehicleBone(boneList,params,onSelectTargetOptionCallback,callbackData,canInteractTargetCallback)
 | |
|     -- Ensure required parameters exist:
 | |
|     local labelText = assert(params.labelText, "Missing labelText in Utils.Target.createTargetForVehicleBone")
 | |
|     local icon      = assert(params.icon,      "Missing icon in Utils.Target.createTargetForVehicleBone")
 | |
|     local iconColor = assert(params.iconColor, "Missing iconColor in Utils.Target.createTargetForVehicleBone")
 | |
| 
 | |
|     -- Provide sensible defaults for optional parameters:
 | |
|     local zone_id   = params.zone_id  or ""
 | |
|     local distance  = params.distance or 2.5
 | |
|     canInteractTargetCallback = canInteractTargetCallback or function()
 | |
|         return true
 | |
|     end
 | |
| 
 | |
|     -- Retrieve the current resource name for the zone ID:
 | |
|     local callerResource = getResourceName()
 | |
|     zone_id = callerResource .. ":" .. zone_id
 | |
| 
 | |
|     if Config.custom_scripts_compatibility.target == 'ox_target' then
 | |
|         exports['ox_target']:addGlobalVehicle({
 | |
|             {
 | |
|                 name = zone_id,
 | |
|                 bones = boneList,
 | |
|                 icon = icon,
 | |
|                 iconColor = iconColor,
 | |
|                 label = labelText,
 | |
|                 distance = distance,
 | |
|                 debug = false,
 | |
|                 onSelect = function(data)
 | |
|                     onSelectTargetOptionCallback(zone_id,callbackData)
 | |
|                 end,
 | |
|                 canInteract = function(entity, interact_distance, coords, name, bone)
 | |
|                     return canInteractTargetCallback(entity, interact_distance)
 | |
|                 end,
 | |
|             },
 | |
|         })
 | |
|     elseif Config.custom_scripts_compatibility.target == 'qb-target' then
 | |
|         assert(Config.framework ~= "ESX", "qb-target not available for ESX")
 | |
|         exports['qb-target']:AddTargetBone(boneList, {
 | |
|             options = {
 | |
|                 {
 | |
|                     icon = icon,
 | |
|                     label = labelText,
 | |
|                     action = function(entity)
 | |
|                         onSelectTargetOptionCallback(zone_id,callbackData)
 | |
|                     end,
 | |
|                     canInteract = function(entity, interact_distance, data)
 | |
|                         return canInteractTargetCallback(entity, interact_distance)
 | |
|                     end,
 | |
|                 }
 | |
|             },
 | |
|             distance = distance,
 | |
|         })
 | |
|     else
 | |
|         Utils.CustomScripts.createTargetForVehicleBone(boneList,params,onSelectTargetOptionCallback,callbackData,canInteractTargetCallback)
 | |
|     end
 | |
| end
 | |
| 
 | |
| -- Retro-compatibility, should remove.
 | |
| Utils.Target.createTargetForBone = Utils.Target.createTargetForVehicleBone | 
