forked from Simnation/Main
201 lines
5.2 KiB
Lua
201 lines
5.2 KiB
Lua
ESX = nil
|
|
QBCore = nil
|
|
|
|
if (GetResourceState('es_extended') == 'started') then
|
|
ESX = exports['es_extended']:getSharedObject()
|
|
elseif (GetResourceState('qb-core') == 'started') then
|
|
QBCore = exports['qb-core']:GetCoreObject()
|
|
end
|
|
|
|
Functions = {}
|
|
|
|
Functions.Notify = function(message)
|
|
if ESX then
|
|
ESX.ShowNotification(message, 'info', 5000)
|
|
elseif QBCore then
|
|
QBCore.Functions.Notify(message, 'primary', 5000)
|
|
end
|
|
end
|
|
|
|
Functions.CanVehicleHaveDartSystem = function(vehicle)
|
|
local vehicleModel = GetEntityModel(vehicle)
|
|
if not Config.allowedVehicles[vehicleModel] then
|
|
return false
|
|
end
|
|
|
|
return true
|
|
end
|
|
|
|
Functions.CanVehicleShootDart = function(vehicle)
|
|
return true
|
|
end
|
|
|
|
Functions.CanPlayerShootDart = function()
|
|
-- For example: Add a job check if you wish
|
|
|
|
return true
|
|
end
|
|
|
|
-- Called every frame when the vehicle is in 'sight' of the tracker system
|
|
Functions.OnVehicleHit = function(targetVehicle, hitCoords)
|
|
|
|
end
|
|
|
|
Functions.CanOpenOverlay = function()
|
|
local playerPed = PlayerPedId()
|
|
local vehicle = GetVehiclePedIsIn(playerPed, false)
|
|
|
|
if (vehicle == 0) then
|
|
return false
|
|
end
|
|
|
|
-- Check if the ped is the driver
|
|
local driverPed = GetPedInVehicleSeat(vehicle, -1)
|
|
if (driverPed ~= playerPed) then
|
|
return false
|
|
end
|
|
|
|
if IsPedDeadOrDying(playerPed, true) then
|
|
return false
|
|
end
|
|
|
|
return true
|
|
end
|
|
|
|
Functions.HasJob = function()
|
|
if not Config.allowedJobs then
|
|
return true
|
|
end
|
|
|
|
local playerJob = 'unemployed'
|
|
if ESX then
|
|
playerJob = ESX.GetPlayerData()?.job?.name or 'unemployed'
|
|
elseif QBCore then
|
|
playerJob = QBCore.Functions.GetPlayerData()?.job?.name or 'unemployed'
|
|
end
|
|
|
|
return (Config.allowedJobs[playerJob] ~= nil)
|
|
end
|
|
|
|
Functions.ShouldDisplayBlips = function()
|
|
return true
|
|
end
|
|
|
|
Functions.RemoveDartMinigame = function()
|
|
local areaSize = 40
|
|
local speedMultiplier = 1.5
|
|
|
|
for i = 1, 5 do
|
|
local success = lib.skillCheck({ areaSize = areaSize, speedMultiplier = speedMultiplier }, { 'E' })
|
|
if not success then
|
|
return false
|
|
end
|
|
|
|
areaSize -= 2
|
|
speedMultiplier += 0.05
|
|
|
|
Wait(300)
|
|
end
|
|
|
|
return true
|
|
end
|
|
|
|
Functions.CanInteract = function(entity)
|
|
local playerPed = PlayerPedId()
|
|
|
|
if IsPedDeadOrDying(playerPed, true) then
|
|
return false
|
|
end
|
|
|
|
if IsPedInAnyVehicle(playerPed, false) then
|
|
return false
|
|
end
|
|
|
|
return true
|
|
end
|
|
|
|
Functions.CreateRemoveTarget = function(canInteract, onSelect)
|
|
if (GetResourceState('ox_target') == 'started') then
|
|
exports.ox_target:addGlobalVehicle({ {
|
|
icon = 'fa-solid fa-xmark',
|
|
label = Config.Locales['remove_target'],
|
|
canInteract = function(entity)
|
|
return canInteract(entity)
|
|
end,
|
|
onSelect = function(data)
|
|
onSelect(data.entity)
|
|
end,
|
|
distance = Config.interactDistance,
|
|
} })
|
|
return
|
|
end
|
|
|
|
if (GetResourceState('qb-target') == 'started') then
|
|
exports['qb-target']:AddGlobalVehicle({
|
|
options = {
|
|
{
|
|
icon = 'fa-solid fa-xmark',
|
|
label = Config.Locales['remove_target'],
|
|
action = function(entity)
|
|
onSelect(entity)
|
|
end,
|
|
canInteract = function(entity)
|
|
return canInteract(entity)
|
|
end,
|
|
},
|
|
},
|
|
distance = Config.interactDistance,
|
|
})
|
|
return
|
|
end
|
|
|
|
print('[ERROR] No target interaction defined. Please implement your own target interaction.')
|
|
end
|
|
|
|
Functions.InstallingTrackerSystem = function(entity)
|
|
-- Called while installing the tracker system.
|
|
-- For example: Add an animation or progress bar
|
|
|
|
-- Return 'false' to cancel the installation
|
|
return true
|
|
end
|
|
|
|
Functions.CreateInstallTarget = function(canInteract, onSelect)
|
|
if (GetResourceState('ox_target') == 'started') then
|
|
exports.ox_target:addGlobalVehicle({ {
|
|
icon = 'fa-solid fa-location-crosshairs',
|
|
label = Config.Locales['install_target'],
|
|
distance = Config.interactDistance,
|
|
items = Config.itemName,
|
|
canInteract = function(entity)
|
|
return canInteract(entity)
|
|
end,
|
|
onSelect = function(data)
|
|
onSelect(data.entity)
|
|
end,
|
|
} })
|
|
return
|
|
end
|
|
|
|
if (GetResourceState('qb-target') == 'started') then
|
|
exports['qb-target']:AddGlobalVehicle({
|
|
options = {
|
|
{
|
|
icon = 'fa-solid fa-location-crosshairs',
|
|
label = Config.Locales['install_target'],
|
|
item = Config.itemName,
|
|
action = function(entity)
|
|
onSelect(entity)
|
|
end,
|
|
canInteract = function(entity)
|
|
return canInteract(entity)
|
|
end,
|
|
},
|
|
},
|
|
distance = Config.interactDistance,
|
|
})
|
|
return
|
|
end
|
|
|
|
print('[ERROR] No target interaction defined. Please implement your own target interaction.')
|
|
end
|