1
0
Fork 0
forked from Simnation/Main
Main/resources/[jobs]/[police]/ps-dispatch/client/alerts.lua
2025-07-11 22:31:31 +02:00

868 lines
25 KiB
Lua

local function CustomAlert(data)
local coords = data.coords or vec3(0.0, 0.0, 0.0)
local gender = GetPlayerGender()
if not data.gender then gender = nil end
local dispatchData = {
message = data.message or "", -- Title of the alert
codeName = data.dispatchCode or "NONE", -- Unique name for each alert
code = data.code or '10-80', -- Code that is displayed before the title
icon = data.icon or 'fas fa-question', -- Icon that is displaed after the title
priority = data.priority or 2, -- Changes color of the alert ( 1 = red, 2 = default )
coords = coords, -- Coords of the player
gender = gender, -- Gender of the player
street = GetStreetAndZone(coords), -- Street of the player
camId = data.camId or nil, -- Cam ID ( for heists )
color = data.firstColor or nil, -- Color of the vehicle
callsign = data.callsign or nil, -- Callsigns
name = data.name or nil, -- Name of either officer/ems or a player
vehicle = data.model or nil, -- Vehicle name
plate = data.plate or nil, -- Vehicle plate
alertTime = data.alertTime or nil, -- How long it stays on the screen in seconds
doorCount = data.doorCount or nil, -- How many doors on vehicle
automaticGunfire = data.automaticGunfire or false, -- Automatic Gun or not
alert = {
radius = data.radius or 0, -- Radius around the blip
sprite = data.sprite or 1, -- Sprite of the blip
color = data.color or 1, -- Color of the blip
scale = data.scale or 0.5, -- Scale of the blip
length = data.length or 2, -- How long it stays on the map
sound = data.sound or "Lose_1st", -- Alert sound
sound2 = data.sound2 or "GTAO_FM_Events_Soundset", -- Alert sound
offset = data.offset or false, -- Blip / radius offset
flash = data.flash or false -- Blip flash
},
jobs = data.jobs or { 'police' },
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('CustomAlert', CustomAlert)
local function VehicleTheft()
local coords = GetEntityCoords(cache.ped)
local vehicle = GetVehicleData(cache.vehicle)
local dispatchData = {
message = locale('vehicletheft'),
codeName = 'vehicletheft',
code = '10-35',
icon = 'fas fa-car-burst',
priority = 2,
coords = coords,
street = GetStreetAndZone(coords),
heading = GetPlayerHeading(),
vehicle = vehicle.name,
plate = vehicle.plate,
color = vehicle.color,
class = vehicle.class,
doors = vehicle.doors,
alertTime = nil,
jobs = { 'police' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('VehicleTheft', VehicleTheft)
local function Shooting()
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('shooting'),
codeName = 'shooting',
code = '10-11',
icon = 'fas fa-gun',
priority = 2,
coords = coords,
street = GetStreetAndZone(coords),
gender = GetPlayerGender(),
weapon = GetWeaponName(),
alertTime = nil,
jobs = { 'police' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('Shooting', Shooting)
local function Hunting()
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('hunting'),
codeName = 'hunting',
code = '10-13',
icon = 'fas fa-gun',
priority = 2,
weapon = GetWeaponName(),
coords = coords,
gender = GetPlayerGender(),
street = GetStreetAndZone(coords),
alertTime = nil,
jobs = { 'police' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('Hunting', Hunting)
local function VehicleShooting()
local coords = GetEntityCoords(cache.ped)
local vehicle = GetVehicleData(cache.vehicle)
local dispatchData = {
message = locale('vehicleshots'),
codeName = 'vehicleshots',
code = '10-60',
icon = 'fas fa-gun',
priority = 2,
coords = coords,
weapon = GetWeaponName(),
street = GetStreetAndZone(coords),
heading = GetPlayerHeading(),
vehicle = vehicle.name,
plate = vehicle.plate,
color = vehicle.color,
class = vehicle.class,
doors = vehicle.doors,
alertTime = nil,
jobs = { 'police' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('VehicleShooting', VehicleShooting)
local function SpeedingVehicle()
local coords = GetEntityCoords(cache.ped)
local vehicle = GetVehicleData(cache.vehicle)
local dispatchData = {
message = locale('speeding'),
codeName = 'speeding',
code = '10-11',
icon = 'fas fa-car',
priority = 2,
coords = coords,
street = GetStreetAndZone(coords),
heading = GetPlayerHeading(),
vehicle = vehicle.name,
plate = vehicle.plate,
color = vehicle.color,
class = vehicle.class,
doors = vehicle.doors,
alertTime = nil,
jobs = { 'police' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('SpeedingVehicle', SpeedingVehicle)
local function Fight()
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('melee'),
codeName = 'fight',
code = '10-10',
icon = 'fas fa-hand-fist',
priority = 2,
coords = coords,
gender = GetPlayerGender(),
street = GetStreetAndZone(coords),
alertTime = nil,
jobs = { 'police' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('Fight', Fight)
local function PrisonBreak()
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('prisonbreak'),
codeName = 'prisonbreak',
code = '10-90',
icon = 'fas fa-vault',
priority = 2,
coords = coords,
gender = GetPlayerGender(),
street = GetStreetAndZone(coords),
alertTime = nil,
jobs = { 'police' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('PrisonBreak', PrisonBreak)
local function StoreRobbery(camId)
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('storerobbery'),
codeName = 'storerobbery',
code = '10-90',
icon = 'fas fa-store',
priority = 2,
coords = coords,
gender = GetPlayerGender(),
street = GetStreetAndZone(coords),
camId = camId,
alertTime = nil,
jobs = { 'police' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('StoreRobbery', StoreRobbery)
local function FleecaBankRobbery(camId)
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('fleecabank'),
codeName = 'bankrobbery',
code = '10-90',
icon = 'fas fa-vault',
priority = 2,
coords = coords,
gender = GetPlayerGender(),
street = GetStreetAndZone(coords),
camId = camId,
alertTime = nil,
jobs = { 'police' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('FleecaBankRobbery', FleecaBankRobbery)
local function PaletoBankRobbery(camId)
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('paletobank'),
codeName = 'paletobankrobbery',
code = '10-90',
icon = 'fas fa-vault',
priority = 2,
coords = coords,
gender = GetPlayerGender(),
street = GetStreetAndZone(coords),
camId = camId,
alertTime = nil,
jobs = { 'police' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('PaletoBankRobbery', PaletoBankRobbery)
local function PacificBankRobbery(camId)
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('pacificbank'),
codeName = 'pacificbankrobbery',
code = '10-90',
icon = 'fas fa-vault',
priority = 2,
coords = coords,
gender = GetPlayerGender(),
street = GetStreetAndZone(coords),
camId = camId,
alertTime = nil,
jobs = { 'police' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('PacificBankRobbery', PacificBankRobbery)
local function VangelicoRobbery(camId)
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('vangelico'),
codeName = 'vangelicorobbery',
code = '10-90',
icon = 'fas fa-gem',
priority = 2,
coords = coords,
gender = GetPlayerGender(),
street = GetStreetAndZone(coords),
camId = camId,
alertTime = nil,
jobs = { 'police' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('VangelicoRobbery', VangelicoRobbery)
local function HouseRobbery()
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('houserobbery'),
codeName = 'houserobbery',
code = '10-90',
icon = 'fas fa-house',
priority = 2,
coords = coords,
gender = GetPlayerGender(),
street = GetStreetAndZone(coords),
alertTime = nil,
jobs = { 'police' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('HouseRobbery', HouseRobbery)
local function YachtHeist()
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('yachtheist'),
codeName = 'yachtheist',
code = '10-65',
icon = 'fas fa-house',
priority = 2,
coords = coords,
gender = GetPlayerGender(),
street = GetStreetAndZone(coords),
alertTime = nil,
jobs = { 'police' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('YachtHeist', YachtHeist)
local function DrugSale()
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('drugsell'),
codeName = 'suspicioushandoff',
code = '10-13',
icon = 'fas fa-tablets',
priority = 2,
coords = coords,
gender = GetPlayerGender(),
street = GetStreetAndZone(coords),
alertTime = nil,
jobs = { 'police' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('DrugSale', DrugSale)
local function SuspiciousActivity()
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('susactivity'),
codeName = 'susactivity',
code = '10-66',
icon = 'fas fa-tablets',
priority = 2,
coords = coords,
gender = GetPlayerGender(),
street = GetStreetAndZone(coords),
alertTime = nil,
jobs = { 'police' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('SuspiciousActivity', SuspiciousActivity)
local function CarJacking(vehicle)
local coords = GetEntityCoords(cache.ped)
local vehicle = GetVehicleData(vehicle)
local dispatchData = {
message = locale('carjacking'),
codeName = 'carjack',
code = '10-35',
icon = 'fas fa-car',
priority = 2,
coords = coords,
street = GetStreetAndZone(coords),
heading = GetPlayerHeading(),
vehicle = vehicle.name,
plate = vehicle.plate,
color = vehicle.color,
class = vehicle.class,
doors = vehicle.doors,
alertTime = nil,
jobs = { 'police' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('CarJacking', CarJacking)
local function InjuriedPerson()
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('persondown'),
codeName = 'civdown',
code = '10-69',
icon = 'fas fa-face-dizzy',
priority = 1,
coords = coords,
gender = GetPlayerGender(),
street = GetStreetAndZone(coords),
alertTime = 10,
jobs = { 'ems' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('InjuriedPerson', InjuriedPerson)
local function DeceasedPerson()
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('civbled'),
codeName = 'civdead',
code = '10-69',
icon = 'fas fa-skull',
priority = 1,
coords = coords,
gender = GetPlayerGender(),
street = GetStreetAndZone(coords),
alertTime = 10,
jobs = { 'ems' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('DeceasedPerson', DeceasedPerson)
local function OfficerDown()
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('officerdown'),
codeName = 'officerdown',
code = '10-99',
icon = 'fas fa-skull',
priority = 1,
coords = coords,
gender = GetPlayerGender(),
street = GetStreetAndZone(coords),
name = PlayerData.charinfo.firstname .. " " .. PlayerData.charinfo.lastname,
callsign = PlayerData.metadata["callsign"],
alertTime = 10,
jobs = { 'ems', 'leo' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('OfficerDown', OfficerDown)
RegisterNetEvent("ps-dispatch:client:officerdown", function() OfficerDown() end)
local function OfficerBackup()
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('officerbackup'),
codeName = 'officerbackup',
code = '10-32',
icon = 'fas fa-skull',
priority = 1,
coords = coords,
gender = GetPlayerGender(),
street = GetStreetAndZone(coords),
name = PlayerData.charinfo.firstname .. " " .. PlayerData.charinfo.lastname,
callsign = PlayerData.metadata["callsign"],
alertTime = 10,
jobs = { 'ems', 'leo' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('OfficerBackup', OfficerBackup)
RegisterNetEvent("ps-dispatch:client:officerbackup", function() OfficerBackup() end)
local function OfficerInDistress()
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('officerdistress'),
codeName = 'officerdistress',
code = '10-99',
icon = 'fas fa-skull',
priority = 1,
coords = coords,
gender = GetPlayerGender(),
street = GetStreetAndZone(coords),
name = PlayerData.charinfo.firstname .. " " .. PlayerData.charinfo.lastname,
callsign = PlayerData.metadata["callsign"],
alertTime = 10,
jobs = { 'ems', 'leo' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('OfficerInDistress', OfficerInDistress)
local function EmsDown()
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('emsdown'),
codeName = 'emsdown',
code = '10-99',
icon = 'fas fa-skull',
priority = 1,
coords = coords,
gender = GetPlayerGender(),
street = GetStreetAndZone(coords),
name = PlayerData.charinfo.firstname .. " " .. PlayerData.charinfo.lastname,
callsign = PlayerData.metadata["callsign"],
alertTime = 10,
jobs = { 'ems', 'leo' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('EmsDown', EmsDown)
RegisterNetEvent("ps-dispatch:client:emsdown", function() EmsDown() end)
local function Explosion()
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('explosion'),
codeName = 'explosion',
code = '10-80',
icon = 'fas fa-fire',
priority = 2,
coords = coords,
gender = GetPlayerGender(),
street = GetStreetAndZone(coords),
alertTime = nil,
jobs = { 'police' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('Explosion', Explosion)
local function PhoneCall(message, anonymous, job, type)
local coords = GetEntityCoords(cache.ped)
if IsCallAllowed(message) then
PhoneAnimation()
local dispatchData = {
message = anonymous and locale('anon_call') or locale('call'),
codeName = type == '311' and '311call' or '911call',
code = type,
icon = 'fas fa-phone',
priority = 2,
coords = coords,
name = anonymous and locale('anon') or (PlayerData.charinfo.firstname .. " " .. PlayerData.charinfo.lastname),
number = anonymous and locale('hidden_number') or PlayerData.charinfo.phone,
information = message,
street = GetStreetAndZone(coords),
alertTime = nil,
jobs = job
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
end
--- @param data string -- Message
--- @param type string -- What type of emergency
--- @param anonymous boolean -- Is the call anonymous
local pslastaction = 0
RegisterNetEvent('ps-dispatch:client:sendEmergencyMsg', function(data, type, anonymous)
local year, month , day , hour, minute, second = GetUtcTime()
local idtrack = tonumber(hour..minute..second)
local spamdetek = idtrack - pslastaction
if spamdetek < 0 then spamdetek = Config.AlertCommandCooldown end
if spamdetek <= Config.AlertCommandCooldown and pslastaction > 0 then
pslastaction = idtrack
QBCore.Functions.Notify("Command on cooldown", "error")
else
pslastaction = idtrack
local jobs = { ['911'] = { 'police' }, ['311'] = { 'ems' } }
PhoneCall(data, anonymous, jobs[type], type)
end
end)
local function ArtGalleryRobbery()
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('artgalleryrobbery'),
codeName = 'artgalleryrobbery',
code = '10-90',
icon = 'fas fa-brush',
priority = 2,
coords = coords,
gender = GetPlayerGender(),
street = GetStreetAndZone(coords),
alertTime = nil,
jobs = { 'police' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('ArtGalleryRobbery', ArtGalleryRobbery)
local function HumaneRobbery()
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('humanelabsrobbery'),
codeName = 'humanelabsrobbery',
code = '10-90',
icon = 'fas fa-flask-vial',
priority = 2,
coords = coords,
gender = GetPlayerGender(),
street = GetStreetAndZone(coords),
alertTime = nil,
jobs = { 'police' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('HumaneRobbery', HumaneRobbery)
local function TrainRobbery()
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('trainrobbery'),
codeName = 'trainrobbery',
code = '10-90',
icon = 'fas fa-train',
priority = 2,
coords = coords,
gender = GetPlayerGender(),
street = GetStreetAndZone(coords),
alertTime = nil,
jobs = { 'police' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('TrainRobbery', TrainRobbery)
local function VanRobbery()
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('vanrobbery'),
codeName = 'vanrobbery',
code = '10-90',
icon = 'fas fa-van-shuttle',
priority = 2,
coords = coords,
gender = GetPlayerGender(),
street = GetStreetAndZone(coords),
alertTime = nil,
jobs = { 'police' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('VanRobbery', VanRobbery)
local function UndergroundRobbery()
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('undergroundrobbery'),
codeName = 'undergroundrobbery',
code = '10-90',
icon = 'fas fa-person-rays',
priority = 2,
coords = coords,
gender = GetPlayerGender(),
street = GetStreetAndZone(coords),
alertTime = nil,
jobs = { 'police' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('UndergroundRobbery', UndergroundRobbery)
local function DrugBoatRobbery()
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('drugboatrobbery'),
codeName = 'drugboatrobbery',
code = '10-65',
icon = 'fas fa-ship',
priority = 2,
coords = coords,
gender = GetPlayerGender(),
street = GetStreetAndZone(coords),
alertTime = nil,
jobs = { 'police' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('DrugBoatRobbery', DrugBoatRobbery)
local function UnionRobbery()
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('unionrobbery'),
codeName = 'unionrobbery',
code = '10-90',
icon = 'fas fa-truck-field',
priority = 2,
coords = coords,
gender = GetPlayerGender(),
street = GetStreetAndZone(coords),
alertTime = nil,
jobs = { 'police' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('UnionRobbery', UnionRobbery)
local function CarBoosting(vehicle)
local coords = GetEntityCoords(cache.ped)
local vehicle = GetVehicleData(vehicle or cache.vehicle)
local dispatchData = {
message = locale('carboosting'),
codeName = 'carboosting',
code = '10-50',
icon = 'fas fa-car',
priority = 2,
coords = coords,
street = GetStreetAndZone(coords),
heading = GetPlayerHeading(),
vehicle = vehicle.name,
plate = vehicle.plate,
color = vehicle.color,
class = vehicle.class,
doors = vehicle.doors,
alertTime = nil,
jobs = { 'police' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('CarBoosting', CarBoosting)
local function SignRobbery()
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('signrobbery'),
codeName = 'signrobbery',
code = '10-10',
icon = 'fab fa-artstation',
priority = 2,
coords = coords,
gender = GetPlayerGender(),
street = GetStreetAndZone(coords),
alertTime = nil,
jobs = { 'leo'}
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('SignRobbery', SignRobbery)
local function BobcatSecurityHeist()
local coords = GetEntityCoords(cache.ped)
local dispatchData = {
message = locale('bobcatsecurity'),
codeName = 'bobcatsecurityheist',
code = '10-90',
icon = 'fa-solid fa-building-shield',
priority = 2,
coords = coords,
gender = GetPlayerGender(),
street = GetStreetAndZone(coords),
alertTime = nil,
jobs = { 'leo'}
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('BobcatSecurityHeist', BobcatSecurityHeist)
local function MagnetFishing(data)
local coords = data.coords
local gender = data.gender or GetPlayerGender()
local streetName = data.streetName or GetStreetAndZone(coords)
local itemName = data.itemName
local message = "^3Verdächtige Aktivität^7: Person beim Magnetfischen"
local description = "Eine " .. gender .. " Person wurde beim Magnetfischen gesehen."
local priority = 2
local blipSprite = 68
local blipColour = 5
local icon = 'fas fa-magnet'
-- Spezifische Beschreibungen für bestimmte Items
if itemName == "old_gun" then
description = "Eine " .. gender .. " Person wurde beim Magnetfischen gesehen und hat möglicherweise eine Waffe gefunden!"
priority = 3
blipColour = 1
elseif itemName == "safe" then
description = "Eine " .. gender .. " Person wurde beim Magnetfischen gesehen und hat einen Tresor geborgen. Könnte gestohlen sein!"
priority = 3
blipColour = 1
elseif itemName == "old_ammunition" then
description = "Eine " .. gender .. " Person wurde beim Magnetfischen gesehen und hat Munition gefunden!"
priority = 2
blipColour = 1
end
local dispatchData = {
message = message,
codeName = 'magnetfishing',
code = '10-66',
icon = icon,
priority = priority,
coords = coords,
gender = gender,
street = streetName,
alertTime = 5000,
blipSprite = blipSprite,
blipColour = blipColour,
blipScale = 1.0,
blipLength = 2 * 60000, -- 2 Minuten
sound = 'Lose',
soundName = 'GTAO_FM_Events_Soundset',
infoM = description,
jobs = { 'police' }
}
TriggerServerEvent('ps-dispatch:server:notify', dispatchData)
end
exports('MagnetFishing', MagnetFishing)