134 lines
4.2 KiB
Lua
134 lines
4.2 KiB
Lua
|
local QBCore = exports['qb-core']:GetCoreObject()
|
||
|
local calls = {}
|
||
|
|
||
|
function _U(entry)
|
||
|
return Locales[Config.Locale][entry]
|
||
|
end
|
||
|
|
||
|
local function IsPoliceJob(job)
|
||
|
for k, v in pairs(Config.PoliceJob) do
|
||
|
if job == v then
|
||
|
return true
|
||
|
end
|
||
|
end
|
||
|
return false
|
||
|
end
|
||
|
|
||
|
local function IsDispatchJob(job)
|
||
|
for k, v in pairs(Config.PoliceAndAmbulance) do
|
||
|
if job == v then
|
||
|
return true
|
||
|
end
|
||
|
end
|
||
|
return false
|
||
|
end
|
||
|
|
||
|
RegisterServerEvent("dispatch:server:notify", function(data)
|
||
|
local newId = #calls + 1
|
||
|
calls[newId] = data
|
||
|
calls[newId]['source'] = source
|
||
|
calls[newId]['callId'] = newId
|
||
|
calls[newId]['units'] = {}
|
||
|
calls[newId]['responses'] = {}
|
||
|
calls[newId]['time'] = os.time() * 1000
|
||
|
|
||
|
TriggerClientEvent('dispatch:clNotify', -1, data, newId, source)
|
||
|
if not data.alert then
|
||
|
TriggerClientEvent("ps-dispatch:client:AddCallBlip", -1, data.origin, dispatchCodes[data.dispatchcodename], newId)
|
||
|
else
|
||
|
TriggerClientEvent("ps-dispatch:client:AddCallBlip", -1, data.origin, data.alert, newId)
|
||
|
end
|
||
|
end)
|
||
|
|
||
|
function GetDispatchCalls() return calls end
|
||
|
exports('GetDispatchCalls', GetDispatchCalls) --
|
||
|
|
||
|
-- this is mdt call
|
||
|
AddEventHandler("dispatch:addUnit", function(callid, player, cb)
|
||
|
if calls[callid] then
|
||
|
if #calls[callid]['units'] > 0 then
|
||
|
for i=1, #calls[callid]['units'] do
|
||
|
if calls[callid]['units'][i]['cid'] == player.cid then
|
||
|
cb(#calls[callid]['units'])
|
||
|
return
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
if IsPoliceJob(player.job.name) then
|
||
|
calls[callid]['units'][#calls[callid]['units']+1] = { cid = player.cid, fullname = player.fullname, job = 'Police', callsign = player.callsign }
|
||
|
elseif player.job.name == 'ambulance' then
|
||
|
calls[callid]['units'][#calls[callid]['units']+1] = { cid = player.cid, fullname = player.fullname, job = 'EMS', callsign = player.callsign }
|
||
|
end
|
||
|
cb(#calls[callid]['units'])
|
||
|
end
|
||
|
end)
|
||
|
|
||
|
AddEventHandler("dispatch:sendCallResponse", function(player, callid, message, time, cb)
|
||
|
local Player = QBCore.Functions.GetPlayer(player)
|
||
|
local name = Player.PlayerData.charinfo.firstname.. " " ..Player.PlayerData.charinfo.lastname
|
||
|
if calls[callid] then
|
||
|
calls[callid]['responses'][#calls[callid]['responses']+1] = {
|
||
|
name = name,
|
||
|
message = message,
|
||
|
time = time
|
||
|
}
|
||
|
local player = calls[callid]['source']
|
||
|
if GetPlayerPing(player) > 0 then
|
||
|
TriggerClientEvent('dispatch:getCallResponse', player, message)
|
||
|
end
|
||
|
cb(true)
|
||
|
else
|
||
|
cb(false)
|
||
|
end
|
||
|
end)
|
||
|
|
||
|
-- this is mdt call
|
||
|
AddEventHandler("dispatch:removeUnit", function(callid, player, cb)
|
||
|
if calls[callid] then
|
||
|
if #calls[callid]['units'] > 0 then
|
||
|
for i=1, #calls[callid]['units'] do
|
||
|
if calls[callid]['units'][i]['cid'] == player.cid then
|
||
|
calls[callid]['units'][i] = nil
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
cb(#calls[callid]['units'])
|
||
|
end
|
||
|
end)
|
||
|
|
||
|
|
||
|
RegisterCommand('togglealerts', function(source, args, user)
|
||
|
local source = source
|
||
|
local Player = QBCore.Functions.GetPlayer(source)
|
||
|
local job = Player.PlayerData.job
|
||
|
if IsPoliceJob(job.name) or job.name == 'ambulance' then
|
||
|
TriggerClientEvent('dispatch:manageNotifs', source, args[1])
|
||
|
end
|
||
|
end, false)
|
||
|
|
||
|
-- Explosion Handler
|
||
|
local ExplosionCooldown = false
|
||
|
AddEventHandler('explosionEvent', function(source, info)
|
||
|
if ExplosionCooldown then return end
|
||
|
|
||
|
for i = 1, (#Config.ExplosionTypes) do
|
||
|
if info.explosionType == Config.ExplosionTypes[i] then
|
||
|
TriggerClientEvent("ps-dispatch:client:Explosion", source)
|
||
|
ExplosionCooldown = true
|
||
|
SetTimeout(1500, function()
|
||
|
ExplosionCooldown = false
|
||
|
end)
|
||
|
end
|
||
|
end
|
||
|
end)
|
||
|
|
||
|
QBCore.Commands.Add("cdb", "Fjern alle dispatch-blips", {}, false, function(source, args)
|
||
|
local src = source
|
||
|
local Player = QBCore.Functions.GetPlayer(src)
|
||
|
local job = Player.PlayerData.job.name
|
||
|
if IsDispatchJob(job) then
|
||
|
TriggerClientEvent('ps-dispatch:client:clearAllBlips', src)
|
||
|
end
|
||
|
end)
|