Eksempler på brugen af exports

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

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

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)