Rapporter og bøder

Hent en hel sagsakt, eller udsted en bøde på en betjents vegne

This page is only available in Danish so far. The code and the export names are the same in either language.

Server-exports. Kaldes fra server_script.

GetReport

Hent en hel sagsakt.

caseNumberstringrequired

Sagsnummeret, fx S-2043.

returnstable | nil

nil når sagsnummeret ikke findes.

felter
prioritystring

hoej · mellem · lav

submittedboolean

Er rapporten indsendt, eller stadig et udkast?

createdAtnumber

Unix-tidsstempel.

officertable

{ name, rank, callsign } — den rapportansvarlige.

colleaguestable[]

Medvirkende betjente.

statetable

Selve rapportindholdet.

state
narrativestring

Sagsfremstillingen.

involvedtable[]

{ id, name, role } — mistænkte, vidner, ofre, anmeldere.

chargestable[]

{ id, paragraf, title, penalty, tier, maxMonths, fine, plea }

vehiclestable[]

{ plate, model, owner }

itemstable[]

{ id, name, quantity, category }

photostable[]

{ id, url, label, takenAt, takenBy }

GetReport har intet rettighedstjek. Det returnerer hele sagsakten — sagsfremstilling, sigtelser, involverede personer, køretøjer, koster og fotos.

Det er de samme data, som aktindsigt beskytter bag en engangskode. Videregiv dem aldrig til spillere uden selv at gate det først.

server.lua
RegisterNetEvent('mitscript:seSag', function(caseNumber)
    local src = source

    -- Uden dette lækker du sagsakter til hvem som helst.
    if not exports.va_policemdt:HasMdtPermission(src, 'rapportarkiv') then
        return
    end

    local report = exports.va_policemdt:GetReport(caseNumber)
    if not report then return end

    TriggerClientEvent('mitscript:visSag', src, report)
end)

IssueFine

Udsted en bøde på en betjents vegne.

officerIdentifierstringrequired

ESX-identifier på den betjent, bøden skrives i navn af.

datatablerequired
felter
citizenIdstringrequired

ESX-identifier på borgeren der får bøden.

caseNumberstring

Knyt bøden til en sag. Valgfri.

linestable[]required

Bødelinjerne: { paragraf, description, amount }.

returnstable
felter
okboolean

false ved ugyldige argumenter, eller hvis ingen linje havde et gyldigt beløb.

totalnumber

Samlet beløb.

countnumber

Antal linjer der blev skrevet.

billedboolean

Om betalingssystemet tog regningen. Se nedenfor.

server.lua
local res = exports.va_policemdt:IssueFine(officerIdentifier, {
    citizenId  = 'char1:def…',
    caseNumber = 'S-2043',
    lines = {
        { paragraf = '§ 118', description = 'Hastighed 92/50', amount = 2500 },
    },
})

if res.ok then
    print(('%d kr på %d linjer'):format(res.total, res.count))
end

Beløb bliver renset

Kun positive heltal accepteres, der er højst 20 linjer pr. bøde, og hvert beløb har et loft. Linjer med ugyldigt beløb springes over — er der ingen gyldige linjer tilbage, returneres { ok = false } og intet skrives.

Register og opkrævning er to ting

billed = false betyder at bøden er registreret i MDT'et, men at betalingsadapteren ikke tog den. Registret står ved magt uanset — opkrævningen er en separat mekanisme, konfigureret i Config.billing.

Bøden sendes som én samlet regning til Config.billing.send, præcis som når en betjent udsteder den fra tabletten.

Et komplet eksempel

Et fartkamera der bøder automatisk.

server.lua
AddEventHandler('minatk:maalt', function(citizenIdentifier, speed, limit)
    if speed <= limit then return end

    local res = exports.va_policemdt:IssueFine('char1:atk-system', {
        citizenId = citizenIdentifier,
        lines = {{
            paragraf    = '§ 118',
            description = ('Hastighed %d/%d (ATK)'):format(speed, limit),
            amount      = math.floor((speed - limit) * 60),
        }},
    })

    if not res.ok then
        print('ATK: bøden kunne ikke skrives')
    end
end)