146 lines
		
	
	
	
		
			4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			146 lines
		
	
	
	
		
			4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| local SYSTEM = Link.input.target.system
 | |
| 
 | |
| function InputUtils.AddEntityToTargeting(entity, message, event, canInteract, meta, maxDist, icon)
 | |
|     if not Link.input.target.enabled or not SYSTEM then
 | |
|         return
 | |
|     end
 | |
|     
 | |
|     if SYSTEM == 'interact' then
 | |
|         return exports[SYSTEM]:AddLocalEntityInteraction({
 | |
|             entity = entity,
 | |
|             id = entity,
 | |
|             distance = maxDist * 3,
 | |
|             interactDst = maxDist,
 | |
|             ignoreLos = false,
 | |
|             interactDst = maxDist,
 | |
|             id = entity,
 | |
|             options = {
 | |
|                 {
 | |
|                     label = message,
 | |
|                     canInteract = canInteract,
 | |
|                     event = event,
 | |
|                 }
 | |
|             }
 | |
|         })
 | |
|     end
 | |
|     
 | |
|     local options = {
 | |
|         {
 | |
|             type = 'client',
 | |
|             event = event,
 | |
|             icon = icon or 'fas fa-hand',
 | |
|             label = message,
 | |
|             targetEntity = entity,
 | |
|             meta = meta,
 | |
|             distance = maxDist,
 | |
|             canInteract = canInteract or function()
 | |
|                 return true
 | |
|             end,
 | |
|         }
 | |
|     }
 | |
|     
 | |
|     if SYSTEM == 'ox-target' or SYSTEM == 'ox_target' then
 | |
|         return exports[SYSTEM]:addLocalEntity(entity, options)
 | |
|     else
 | |
|         exports[SYSTEM]:AddTargetEntity(entity, {
 | |
|             options = options,
 | |
|             distance = maxDist
 | |
|         })
 | |
|         return entity
 | |
|     end
 | |
| end
 | |
| 
 | |
| function InputUtils.AddZoneToTargeting(coords, rotation, scale, message, event, canInteract, meta, maxDist, icon)
 | |
|     if not Link.input.target.enabled or not SYSTEM then
 | |
|         return
 | |
|     end
 | |
|     
 | |
|     local identifier = math.random(0, 999999) .. '-' .. GetGameTimer()
 | |
|     
 | |
|     if SYSTEM == 'interact' then
 | |
|         return exports[SYSTEM]:AddInteraction({
 | |
|             coords = coords,
 | |
|             distance = maxDist * 3,
 | |
|             interactDst = maxDist,
 | |
|             id = identifier,
 | |
|             options = {
 | |
|                 {
 | |
|                     label = message,
 | |
|                     canInteract = canInteract,
 | |
|                     event = event,
 | |
|                 }
 | |
|             }
 | |
|         })
 | |
|     end
 | |
|     
 | |
|     -- NON interact system
 | |
|     
 | |
|     local options = {
 | |
|         {
 | |
|             type = 'client',
 | |
|             event = event,
 | |
|             icon = icon or 'fas fa-hand',
 | |
|             label = message,
 | |
|             meta = meta,
 | |
|             distance = maxDist,
 | |
|             canInteract = canInteract or function()
 | |
|                 return true
 | |
|             end
 | |
|         }
 | |
|     }
 | |
|     
 | |
|     if SYSTEM == 'ox-target' or SYSTEM == 'ox_target' then
 | |
|         return exports[SYSTEM]:addBoxZone({
 | |
|             coords = coords,
 | |
|             size = scale.yxz,
 | |
|             rotation = rotation or vector3(0, 0, 0),
 | |
|             debug = Link.debugMode or false,
 | |
|             drawSprite = true,
 | |
|             options = options,
 | |
|         })
 | |
|     else
 | |
|         exports[SYSTEM]:AddBoxZone(identifier, coords, scale.x, scale.y, {
 | |
|             name = identifier,
 | |
|             debugPoly = Link.debugMode or false,
 | |
|             useZ = true,
 | |
|             minZ = coords - (scale.z / 2),
 | |
|             maxZ = coords + (scale.z / 2),
 | |
|         }, {
 | |
|             options = options,
 | |
|             distance = maxDist
 | |
|         })
 | |
|         
 | |
|         return identifier
 | |
|     end
 | |
| end
 | |
| 
 | |
| function InputUtils.RemoveTargetZone(identifier)
 | |
|     if not Link.input.target.enabled or not SYSTEM then
 | |
|         return
 | |
|     end
 | |
|     
 | |
|     if SYSTEM == 'ox-target' or SYSTEM == 'ox_target' then
 | |
|         exports[SYSTEM]:removeZone(identifier)
 | |
|     elseif SYSTEM == 'interact' then
 | |
|         exports[SYSTEM]:RemoveInteraction(identifier)
 | |
|     else
 | |
|         -- Solution for qb-target and qtarget
 | |
|         exports[SYSTEM]:RemoveZone(identifier)
 | |
|     end
 | |
| end
 | |
| 
 | |
| function InputUtils.RemoveTargetEntity(identifier)
 | |
|     if not Link.input.target.enabled or not SYSTEM then
 | |
|         return
 | |
|     end
 | |
|     
 | |
|     if SYSTEM == 'ox-target' or SYSTEM == 'ox_target' then
 | |
|         exports[SYSTEM]:removeLocalEntity(identifier)
 | |
|     elseif SYSTEM == 'interact' then
 | |
|         exports[SYSTEM]:RemoveLocalEntityInteraction(identifier, identifier)
 | |
|     else
 | |
|         -- Solution for qb-target and qtarget
 | |
|         exports[SYSTEM]:RemoveTargetEntity(identifier)
 | |
|     end
 | |
| end
 | |
| 
 | 
