Eksempler på brugen af exports

Nedenfor finder du en liste med brugen af nogle af de exports tabletten tilbyder

Alle eksempler forudsætter at va_policemdt er i din fxmanifest.lua:

fxmanifest.lua
dependencies { 'es_extended', 'va_policemdt' }

Butiksalarm der sender et opkald

En alarm der udløses, sender et højprioritets-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
    )

    if call.assigned then
        print(('%s: patrulje %s rykker ud'):format(butik, call.assigned.plate))
    else
        print(('%s: ingen ledig patrulje'):format(butik))
    end

    -- Alarmen nulstiller sig selv efter fem minutter. Lukker vi ikke opkaldet,
    -- bliver den tildelte vogn hængende på udrykning indtil det udløber.
    SetTimeout(5 * 60 * 1000, function()
        exports.va_policemdt:CloseCall(call.id)
    end)
end)

Fartkamera med automatisk bøde

server.lua

local ATK_IDENTIFIER = 'char1:atk-system'

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

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

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

    print(('ATK: %d kr, opkrævet: %s'):format(res.total, tostring(res.billed)))
end)

Åben af tablet via zone

client.lua
exports.ox_target:addBoxZone({
    coords = vec3(441.7, -979.2, 30.7),
    size   = vec3(1.0, 1.0, 1.0),
    rotation = 0.0,
    options = {
        {
            label = 'Åbn Politi Tablet',
            icon  = 'fa-solid fa-tablet-screen-button',
            onSelect = function()
                exports.va_policemdt:OpenTablet()
            end,
        },
    },
})

Vagtbonus efter timer

server.lua
RegisterCommand('minbonus', function(source)
    local src = source

    if not exports.va_policemdt:IsPolice(src) then return end

    local officer = exports.va_policemdt:GetOfficer(src)
    if not officer then return end

    local sheet = exports.va_policemdt:GetTimesheet(officer.identifier)

    if sheet.hoursMonth < 20 then
        return TriggerClientEvent('chat:addMessage', src, {
            args = { 'Løn', ('Du mangler %.1f timer.'):format(20 - sheet.hoursMonth) },
        })
    end

    -- udbetal bonus …
end, false)

Automatisk GPS-registrering fra garagen

server.lua
AddEventHandler('garageScript:koeretoejUdleveret', function(src, plate, model)
    if not exports.va_policemdt:IsPolice(src) then return end

    -- Vognen er nu på kortet og på flådetavlen, uden at betjenten
    -- skal huske /registergps.
    exports.va_policemdt:TrackVehicle(plate, model)
end)

AddEventHandler('garageScript:koeretoejIndleveret', function(plate)
    -- Ignoreres hvis der stadig sidder nogen i den — tag besætningen af først.
    exports.va_policemdt:UntrackVehicle(plate)
end)

Parkér flåden ved vagtskifte

server.lua
RegisterCommand('parkerflaade', function()
    local parked = 0

    for _, v in ipairs(exports.va_policemdt:GetFleet().vehicles) do
        if #v.occupants == 0 and v.status ~= 'garage' then
            if exports.va_policemdt:SetVehicleStatus(v.id, 'garage') then
                parked = parked + 1
            end
        end
    end

    print(('Parkerede %d vogne'):format(parked))
end, true)  -- true = kun konsol og admins

Discord-status over aktive udkald

Da API'et ikke har events, poller vi. Vælg intervallet efter hvor hurtigt du skal opdage ændringer - ikke lavere.

server.lua
CreateThread(function()
    local lastCount = -1

    while true do
        Wait(30000)  -- 30 sekunder

        local calls = exports.va_policemdt:GetCalls()

        -- Skriv kun når tallet faktisk ændrer sig.
        if #calls ~= lastCount then
            lastCount = #calls
            TriggerEvent('mindiscord:opdaterStatus', ('%d aktive udkald'):format(#calls))
        end
    end
end)