Eksempler på brugen af exports
Færdige integrationer du kan kopiere ind i din egen ressource
va_emsmdtSe produktet →
Alle eksempler forudsætter at va_emsmdt er i din fxmanifest.lua:
dependencies { 'es_extended', 'va_emsmdt' }Dødsscript der tilkalder en ambulance
Ingen ambulance opdager selv, at nogen er gået ned. Det her er den integration de fleste servere mangler.
AddEventHandler('mydeathscript:playerDowned', function(src, coords)
local call = exports.va_emsmdt:CreateEmsCall(
'Person livløs', 'Ukendt placering', 'hoej', coords.x, coords.y)
-- Bliver de genoplivet af andre, skal udkaldet ikke blive stående.
AddEventHandler('mydeathscript:playerRevived', function(revived)
if revived == src then
exports.va_emsmdt:CloseEmsCall(call.id)
end
end)
end)coords kommer fra dit eget dødsscript. Stammer de oprindeligt fra klienten, verificér dem — CreateEmsCall sætter markøren præcis hvor du peger, uden at spørge om spilleren står der.
Telefonen ringer 112 (lb-phone m.fl.)
Kunderne kobler selv deres telefon på; broen er de her få linjer i et lille eget script.
Hook-navnet ind mod lb-phone varierer med version og opsætning — Services-app'en kan udløse events ved beskeder og opkald til et firma, se docs.lbphone.com. Men uanset hvilket hook du bruger, har du en source og en tekst, og så:
-- Når jeres lb-phone melder "spiller src sendte `content` til ambulancen":
local function onAmbulanceMessage(src, content)
local call, err = exports.va_emsmdt:CreateEmsCallFromPlayer(src, content, {
phone = exports['lb-phone']:GetEquippedPhoneNumber(src),
})
if call then
-- Svar tilbage i telefonen: "hjælpen er på vej" / "alle enheder optaget"
return call.assigned ~= nil
end
return false, err -- 'cooldown' | 'offline'
endPositionen slås op server-side, og cooldownen deles med /112. Telefonen bliver derfor ikke en vej uden om spam-værnet, medmindre du selv sætter skipCooldown.
Vil du have telefonen som eneste indgang, slå Config.dispatch.enabled fra. Det fjerner /112-kommandoen, men rører ikke CreateEmsCallFromPlayer.
Journal-sektion i Politi Tabletten
En betjent slår en borger op og kan se de journaler, ambulancetjenesten har frigivet — men kun hvis betjenten selv har adgang til strafferegistret.
local EMS = 'va_emsmdt'
local function emsAvailable()
return GetResourceState(EMS) == 'started'
and exports[EMS]:IsPoliceSharingEnabled()
end
RegisterNetEvent('myscript:openCitizen', function(citizenIdentifier)
local src = source
-- Gate det selv: exportet spørger ikke hvem du er.
if not exports.va_policemdt:HasMdtPermission(src, 'strafferegister') then
return
end
if not emsAvailable() then return end
-- pcall: exportet tilhører et andet produkt og kan mangle i ældre
-- versioner. Din feature må ikke dø på det.
local ok, journals = pcall(function()
return exports[EMS]:GetReleasedJournals(citizenIdentifier)
end)
TriggerClientEvent('myscript:emsJournals', src, ok and journals or {})
end)Og når betjenten åbner en enkelt journal — bemærk at frigivelsen tjekkes igen på det tidspunkt, så et sagsnummer fra før ikke er en genvej:
RegisterNetEvent('myscript:openJournal', function(caseNumber)
local src = source
if not exports.va_policemdt:HasMdtPermission(src, 'strafferegister') then
return
end
local ok, journal = pcall(function()
return exports[EMS]:GetReleasedJournal(caseNumber)
end)
-- nil = findes ikke, er ikke indsendt, eller frigivelsen er tilbagekaldt.
if not ok or not journal then return end
TriggerClientEvent('myscript:showJournal', src, journal)
end)Brandvæsenet tilkalder en ambulance
Et alarmanlæg eller et brandscript har typisk allerede en position og en beskrivelse. Så er det ét kald.
AddEventHandler('minbrand:husbrand', function(adresse, coords, tilskadekomne)
if tilskadekomne < 1 then return end
exports.va_emsmdt:CreateEmsCall(
('Husbrand, %d tilskadekomne'):format(tilskadekomne),
adresse,
'hoej',
coords.x,
coords.y
)
end)Gemmer du ikke call.id, kan du ikke lukke udkaldet igen. Det udløber af sig selv efter Config.dispatch.callTtl, men indtil da står ambulancen tildelt.
Et dashboard der viser de aktive udkald
GetEmsCalls er læsning uden bivirkninger og kan kaldes så tit du vil.
CreateThread(function()
while true do
Wait(5000)
local calls = exports.va_emsmdt:GetEmsCalls()
for _, call in ipairs(calls) do
print(('[%s] %s — %s (%s)'):format(
call.priority,
call.title,
call.location,
call.assigned and call.assigned.plate or 'ikke tildelt'
))
end
end
end)Skal listen ud til spillere, gate den. Et udkald indeholder indringerens navn og telefonnummer, når det kom fra CreateEmsCallFromPlayer.