Brug af exports
Fra ingenting til et udkald på kortet
va_emsmdtSe produktet →
Forudsætninger
- En kørende FiveM-server med ESX og
va_emsmdtinstalleret - Din egen ressource at skrive i — eller opret en ny mappe i
resources/
Du behøver ikke ændre noget i va_emsmdt selv. API'et er exports, som enhver anden ressource kan kalde.
Byg det
Opsæt fxmanifest.lua
Tilføj
va_emsmdttil dinfxmanifest.lua.fx_version 'cerulean' game 'gta5' dependencies { 'es_extended', 'va_emsmdt', } server_script 'server.lua'Load order er irrelevant — exports slås op når de kaldes, ikke når de indlæses.
dependencieser der for at serveren siger til, hvis ressourcen mangler.Skriv serverkoden
Alle exports ligger på serversiden. Her registrerer vi en kommando, som enhver spiller kan køre — så vi bruger
CreateEmsCallFromPlayer, der selv slår spillerens position op.RegisterCommand('testudkald', function(source, args) local src = source -- Positionen læses server-side på spillerens ped. Den kan ikke sendes -- med udefra, så et manipuleret kald kan ikke sende ambulancen et -- vilkårligt sted hen. local call, err = exports.va_emsmdt:CreateEmsCallFromPlayer( src, table.concat(args, ' ') ) if not call then -- 'offline' eller 'cooldown' return print(('Intet udkald: %s'):format(err)) end print(('Oprettede %s — %s'):format(call.id, call.location)) if call.assigned then print(('Ambulance %s rykker ud'):format(call.assigned.plate)) end end, false)local src = sourcei første linje er ikke pynt.sourceer en global, der bliver overskrevet så snart en anden event-handler kører — læser du den senere i funktionen, kan du ramme en helt anden spiller.Prøv det
Start din ressource og kør
/testudkald Person livløsi spillet.ensure min_ressourceUdkaldet dukker op på kortet hos alle behandlere på vagt. Er en ambulance ledig — og er
Config.dispatch.autoAssignslået til — bliver den tildelt, skifter til Udrykning og får beskeden direkte.
Der er ingen identitets-exports
Politi Tabletten har IsPolice, IsMdtAuthed og HasMdtPermission til at gate din egen kode. va_emsmdt har ingen tilsvarende exports.
Det betyder, at du selv skal afgøre hvem der må hvad, før du kalder noget her:
local ESX = exports['es_extended']:getSharedObject()
local function isMedic(src)
local xPlayer = ESX.GetPlayerFromId(src)
return xPlayer ~= nil and xPlayer.job.name == 'ambulance'
endKører du både tabletterne, er exports.va_policemdt:HasMdtPermission(src, …) den rigtige gate, når det er en betjent der skal se noget. Se eksemplerne.
Exportene til journaler kan kun nå frigivne journaler, så du kan ikke lække en fortrolig journal ved et uheld. Men du kan lække en frigiven journal til en tilfældig spiller, hvis du glemmer din egen gate.