Scripts/resources/[ps]/ps-dispatch/server/sv_main.lua
2024-12-29 21:28:24 +01:00

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)