141 lines
		
	
	
		
			No EOL
		
	
	
		
			4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			141 lines
		
	
	
		
			No EOL
		
	
	
		
			4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| ---@diagnostic disable: duplicate-set-field
 | |
| Target = Target or {}
 | |
| 
 | |
| local function warnUser()
 | |
|     print("Currently Only Targeting Is Supported By Community Bridge, You Are Using A Resource That Requires The Target Module To Be Used.")
 | |
| end
 | |
| 
 | |
| Target.FixOptions = function(options)
 | |
|     for k, v in pairs(options) do
 | |
|         local action = v.onSelect or v.action
 | |
|         local select = function(entityOrData)
 | |
|             if type(entityOrData) == 'table' then
 | |
|                 return action(entityOrData.entity)
 | |
|             end
 | |
|             return action(entityOrData)
 | |
|         end
 | |
|         options[k].onSelect = select
 | |
|     end
 | |
|     return options
 | |
| end
 | |
| 
 | |
| Target.AddGlobalPlayer = function(options)
 | |
|     warnUser()
 | |
| end
 | |
| 
 | |
| Target.AddGlobalVehicle = function(options)
 | |
|     warnUser()
 | |
| end
 | |
| 
 | |
| Target.RemoveGlobalVehicle = function(options)
 | |
|     warnUser()
 | |
| end
 | |
| 
 | |
| Target.AddLocalEntity = function(entities, _options)
 | |
|     local fixedOptions = Target.FixOptions(_options)
 | |
|     if type(entities) == "string" or type(entities) == "number" then
 | |
|         entities = { entities }
 | |
|     end
 | |
|     for _, entity in pairs(entities) do
 | |
|         local id = Ids.RandomString()
 | |
|         local menuData = { id = id, title = "Options", options = {} }
 | |
|         for k, v in pairs(fixedOptions) do
 | |
|             table.insert(menuData.options, {
 | |
|                 title = ("Option " .. k),
 | |
|                 description = "No Description",
 | |
|                 icon = v.icon or "fas fa-code-pull-request",
 | |
|                 args = {},
 | |
|                 onSelect = function(selected, secondary, args)
 | |
|                     if v.onSelect then
 | |
|                         v.onSelect(selected, secondary, args)
 | |
|                     end
 | |
|                 end
 | |
|             })
 | |
|         end
 | |
|         Point.Register(id, entity, 5, args,
 | |
|         function()
 | |
|             local coords = GetEntityCoords(entity)
 | |
|             local sleep = 3000
 | |
|             while DoesEntityExist(entity) do
 | |
|                 Wait(sleep)
 | |
|                 local distance = #(coords - GetEntityCoords(PlayerPedId()))
 | |
|                 if distance < 10 then
 | |
|                     sleep = 0
 | |
|                     Utility.Draw3DHelpText(coords, "Press [E] To Interact", 0.35)
 | |
|                     if IsControlJustPressed(0, 38) then
 | |
|                         Menu.Open(menuData, false)
 | |
|                     end
 | |
|                 else
 | |
|                     sleep = 3000
 | |
|                 end
 | |
|             end
 | |
|         end,
 | |
|         function()
 | |
|             Point.Remove(id)
 | |
|         end, function()
 | |
|             --No need for this in this one
 | |
|         end)
 | |
|     end
 | |
| end
 | |
| 
 | |
| 
 | |
| Target.AddModel = function(models, options)
 | |
|     warnUser()
 | |
| end
 | |
| 
 | |
| Target.AddBoxZone = function(name, coords, size, heading, options)
 | |
|     local fixedOptions = Target.FixOptions(_options)
 | |
|     local id = Ids.RandomString()
 | |
|     local menuData = { id = id, title = "Options", options = {} }
 | |
|     for k, v in pairs(fixedOptions) do
 | |
|         table.insert(menuData.options, {
 | |
|             title = ("Option " .. k),
 | |
|             description = "No Description",
 | |
|             onSelect = function(selected, secondary, args)
 | |
|                 if v.onSelect then
 | |
|                     v.onSelect(selected, secondary, args)
 | |
|                 end
 | |
|             end
 | |
|         })
 | |
|     end
 | |
|     Point.Register(id, coords, 5, args,
 | |
|     function()
 | |
|         local sleep = 3000
 | |
|         while true do
 | |
|             Wait(sleep)
 | |
|             local distance = #(coords - GetEntityCoords(PlayerPedId()))
 | |
|             if distance < 10 then
 | |
|                 sleep = 0
 | |
|                 Utility.Draw3DHelpText(coords, "Press [E] To Interact", 0.35)
 | |
|                 if IsControlJustPressed(0, 38) then
 | |
|                     Menu.Open(menuData, false)
 | |
|                 end
 | |
|             else
 | |
|                 sleep = 3000
 | |
|             end
 | |
|         end
 | |
|     end,
 | |
|     function()
 | |
|         Point.Remove(id)
 | |
|     end, function()
 | |
|         --No need for this in this one
 | |
|     end)
 | |
| end
 | |
| 
 | |
| Target.RemoveGlobalPlayer = function()
 | |
|     warnUser()
 | |
| end
 | |
| 
 | |
| Target.RemoveLocalEntity = function(entity)
 | |
|     warnUser()
 | |
| end
 | |
| 
 | |
| Target.RemoveModel = function(model)
 | |
|     warnUser()
 | |
| end
 | |
| 
 | |
| Target.RemoveZone = function(name)
 | |
|     warnUser()
 | |
| end
 | |
| 
 | |
| return Target | 
