Main/resources/[carscripts]/lc_utils/functions/client/target.lua
2025-06-07 08:51:21 +02:00

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