Opkald

Opret, læs og luk opkald på kortet

Server-exports. Kaldes fra server_script.

Udkald er den mest oplagte integration: dit alarmscript, panikknap eller ANPG-station rejser et opkald, og det lander på kortet hos alle betjente på vagt.

Opkald lever kun i hukommelsen — de er flygtig radiotrafik, ikke sagsdata. De udløber efter Config.shotSpotter.callTtl (standard 600 sekunder) og overlever ikke en genstart af ressourcen.

CreateCall

Rejs et opkald på kortet.

titlestringpåkrævet

Kort overskrift, fx Indbrudsalarm.

locationstringpåkrævet

Stedbetegnelse som mennesker læser, fx Vangelico, Portola Dr.

prioritystringstandard: mellem

hoej, mellem eller lav. Styrer farven på kortet og hvor kraftigt betjentenes alarm slår ud.

xnumberpåkrævet

Verdenskoordinat.

ynumberpåkrævet

Verdenskoordinat.

returnstable

Det oprettede opkald.

felter
idstring

Fx call-7. Gem den — du skal bruge den til CloseCall.

prioritystring

hoej · mellem · lav

timestring

Klokkeslæt som 14:12.

createdAtnumber

Unix-tidsstempel.

positiontable

{ x = number, y = number }

assignedtable | nil

Den automatisk tildelte patrulje: { id = string, plate = string }. nil når ingen vogn var ledig.

server.lua
local call = exports.va_policemdt:CreateCall(
    'Indbrudsalarm', 'Vangelico, Portola Dr', 'hoej', 1234.5, -567.8
)

if call.assigned then
    print(('Patrulje %s rykker ud'):format(call.assigned.plate))
end

Hvad der sker automatisk

Opkaldet sendes til alle betjente der er logget ind, og forsøger at hive den næste ledige patruljevogn ind efter tur — så belastningen fordeles i stedet for altid at ramme den første vogn på tavlen. Bliver en vogn tildelt, får dens besætning dispatch-beskeden i radioen.

assigned er nil, når ingen vogn stod på status patrulje. Antag aldrig at feltet findes.

GetCalls

Alle aktive opkald, nyeste først.

returnstable[]

Array af opkald i samme form som CreateCall returnerer.

server.lua
for _, call in ipairs(exports.va_policemdt:GetCalls()) do
    print(('[%s] %s — %s'):format(call.priority, call.title, call.location))
end

Oprydningen af udløbne opkald sker ved læsning. Et script der aldrig kalder GetCalls, ser ikke listen skrumpe af sig selv.

CloseCall

Luk et opkald og frigiv dets tildelte vogn.

idstringpåkrævet

Opkaldets id, fx call-7.

returnsboolean

false når intet opkald havde det id — typisk fordi det allerede er udløbet.

server.lua
if not exports.va_policemdt:CloseCall(call.id) then
    print('Opkaldet var allerede væk')
end

Luk dine egne opkald, når kilden er ovre — en butiksalarm der nulstiller sig selv, bør også lukke sit opkald. Ellers optager det plads på kortet indtil det udløber, og den tildelte vogn bliver hængende på udrykning.

Et komplet eksempel

En butiksalarm der rejser et opkald og rydder op efter sig selv.

server.lua
AddEventHandler('minealarmer:udloest', function(butik, coords)
    local call = exports.va_policemdt:CreateCall(
        'Indbrudsalarm', butik, 'hoej', coords.x, coords.y
    )

    -- Alarmen nulstiller sig selv efter fem minutter.
    SetTimeout(5 * 60 * 1000, function()
        exports.va_policemdt:CloseCall(call.id)
    end)
end)