forked from Simnation/Main
163 lines
No EOL
4.7 KiB
Lua
163 lines
No EOL
4.7 KiB
Lua
module 'shared/debug'
|
|
module 'shared/resource'
|
|
|
|
Version = resource.version(Bridge.TargetName)
|
|
Bridge.Debug('Target', Bridge.TargetName, Version)
|
|
|
|
local function convert(options)
|
|
for id, v in pairs(options) do
|
|
v.name = v.label
|
|
|
|
if v.job then v.groups = v.job end
|
|
|
|
if v.canInteract or v.gang then
|
|
local canInteract = v.canInteract
|
|
v.canInteract = function(entity, distance, coords)
|
|
if v.gang and not Framework.HasGang(v.gang, Framework.Player) then return false end
|
|
if type(canInteract) == "function" then return canInteract(entity, coords, distance, v) end
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
return options
|
|
end
|
|
|
|
Target.DisableTarget = function(state)
|
|
exports[Bridge.TargetName]:disableTargeting(state)
|
|
end
|
|
|
|
Target.AddGlobalObject = function(options)
|
|
exports[Bridge.TargetName]:addGlobalObject(convert(options))
|
|
end
|
|
|
|
Target.RemoveGlobalObject = function(labels)
|
|
exports[Bridge.TargetName]:removeGlobalObject(labels)
|
|
end
|
|
|
|
Target.AddGlobalPed = function(options)
|
|
exports[Bridge.TargetName]:addGlobalPed(convert(options))
|
|
end
|
|
|
|
Target.RemoveGlobalPed = function(labels)
|
|
exports[Bridge.TargetName]:removeGlobalPed(labels)
|
|
end
|
|
|
|
Target.AddGlobalPlayer = function(options)
|
|
exports[Bridge.TargetName]:addGlobalPlayer(convert(options))
|
|
end
|
|
|
|
Target.RemoveGlobalPlayer = function(labels)
|
|
exports[Bridge.TargetName]:removeGlobalPlayer(labels)
|
|
end
|
|
|
|
Target.AddGlobalVehicle = function(options)
|
|
exports[Bridge.TargetName]:addGlobalVehicle(convert(options))
|
|
end
|
|
|
|
Target.RemoveGlobalVehicle = function(labels)
|
|
exports[Bridge.TargetName]:removeGlobalVehicle(labels)
|
|
end
|
|
|
|
Target.AddModel = function(models, options)
|
|
exports[Bridge.TargetName]:addModel(models, convert(options))
|
|
end
|
|
|
|
Target.RemoveModel = function(models, labels)
|
|
exports[Bridge.TargetName]:removeModel(models, labels)
|
|
end
|
|
|
|
Target.AddEntity = function(entities, options)
|
|
if type(entities) ~= "table" then entities = { entities } end
|
|
for i = 1, #entities do
|
|
local entity = entities[i]
|
|
if NetworkGetEntityIsNetworked(entity) then
|
|
exports[Bridge.TargetName]:addEntity(NetworkGetNetworkIdFromEntity(entity), convert(options))
|
|
else
|
|
exports[Bridge.TargetName]:addLocalEntity(entity, convert(options))
|
|
end
|
|
end
|
|
end
|
|
|
|
Target.RemoveEntity = function(entities, labels)
|
|
if type(entities) ~= 'table' then entities = { entities } end
|
|
for i = 1, #entities do
|
|
local entity = entities[i]
|
|
if NetworkGetEntityIsNetworked(entity) then
|
|
exports[Bridge.TargetName]:removeEntity(NetworkGetNetworkIdFromEntity(entity), labels)
|
|
else
|
|
exports[Bridge.TargetName]:removeLocalEntity(entity, labels)
|
|
end
|
|
end
|
|
end
|
|
|
|
Target.AddBone = function(bones, options)
|
|
if type(bones) ~= 'table' then bones = { bones } end
|
|
|
|
local boneName = ''
|
|
for _, bone in pairs(bones) do
|
|
boneName = boneName .. bone
|
|
end
|
|
|
|
options = convert(options)
|
|
for _, v in pairs(options) do
|
|
v.bones = bones
|
|
end
|
|
|
|
for k, v in pairs(options) do
|
|
options[k].name = v.label .. boneName
|
|
end
|
|
exports[Bridge.TargetName]:addGlobalVehicle(options)
|
|
end
|
|
|
|
Target.RemoveBone = function(bones, labels)
|
|
if type(bones) ~= 'table' then bones = { bones } end
|
|
|
|
local boneName = ''
|
|
for _, bone in pairs(bones) do
|
|
boneName = boneName .. bone
|
|
end
|
|
|
|
if type(labels) == "string" then
|
|
labels = labels .. boneName
|
|
else
|
|
for k, v in pairs(labels) do
|
|
labels[k] = v .. boneName
|
|
end
|
|
end
|
|
exports[Bridge.TargetName]:removeGlobalVehicle(labels)
|
|
end
|
|
|
|
Target.AddSphereZone = function(data)
|
|
return exports[Bridge.TargetName]:addSphereZone({
|
|
debug = data.debug,
|
|
name = data.name,
|
|
coords = data.coords,
|
|
radius = data.radius,
|
|
options = convert(data.options)
|
|
})
|
|
end
|
|
|
|
Target.AddBoxZone = function(data)
|
|
return exports[Bridge.TargetName]:addBoxZone({
|
|
debug = data.debug,
|
|
name = data.name,
|
|
coords = data.coords,
|
|
size = data.size,
|
|
rotation = data.rotation,
|
|
options = convert(data.options)
|
|
})
|
|
end
|
|
|
|
Target.AddPolyZone = function(data)
|
|
return exports[Bridge.TargetName]:addPolyZone({
|
|
debug = data.debug,
|
|
name = data.name,
|
|
points = data.points,
|
|
thickness = data.height,
|
|
options = convert(data.options)
|
|
})
|
|
end
|
|
|
|
Target.RemoveZone = function(id)
|
|
exports[Bridge.TargetName]:removeZone(id)
|
|
end |