Abre los paneles desde tus propios targets u objetos, y lee, emite, revoca y restaura licencias desde un MDT o cualquier otro recurso.
Exports de cliente
openGetCard
Abre la tienda de la oficina de licencias, la misma que abre el NPC.
exports.cuxial_license:openGetCard()openJobManager
Abre el panel de emisión. Las tarjetas que emitir, las licencias emitidas y los jugadores cercanos solo se entregan al staff y a los jugadores de authorizedJobs o revokeJobs; limita en tu propio recurso quién llega al export.
exports.cuxial_license:openJobManager(data)| Parámetro | Tipo | Descripción |
|---|---|---|
data.heading | string | Título del panel. |
data.subHeading | string | Texto bajo el título. |
data.logo | string | Imagen que se muestra junto al nombre del trabajo. |
data.jobName | string | Nombre del trabajo que se muestra en el panel. |
exports.cuxial_license:openJobManager({
heading = 'Departamento de Policía',
subHeading = 'Ventanilla de licencias',
logo = 'https://example.com/logo.png',
jobName = 'police',
})openIdCheck
Abre el panel de verificación de identidad. El escaneo solo devuelve datos a los jugadores de authorizedJobs.
exports.cuxial_license:openIdCheck()openFakeId
Abre el generador de identificaciones falsas. Este export es la única forma de abrirlo; limita el acceso en tu propio recurso.
exports.cuxial_license:openFakeId(data)| Parámetro | Tipo | Descripción |
|---|---|---|
data.heading | string | Título del panel. Opcional. |
data.subHeading | string | Texto bajo el título. Opcional. |
exports.ox_target:addBoxZone({
coords = vec3(0.0, 0.0, 0.0),
size = vec3(1.0, 1.0, 2.0),
options = {
{
label = 'Falsificar un documento',
onSelect = function()
exports.cuxial_license:openFakeId({ heading = 'Falsificador' })
end,
},
},
})Exports de objeto
Son los exports a los que apuntan los objetos de inventario. No los llamas tú; los referencias en la definición del objeto, como se ve en Instalación.
| Export | Objeto | Muestra |
|---|---|---|
cuxial_license.useLicenseCard | license_card y cualquier nombre de objeto puesto en el diseñador | Una tarjeta emitida por el script |
cuxial_license.useFakeId | fake_id | Una tarjeta hecha con el generador de identificaciones falsas |
cuxial_license.useJobBadge | job_badge | Una placa de trabajo |
cuxial_license.useWorkerId | worker_id | Una identificación de trabajador |
Objetos de placa y de trabajador
El script muestra job_badge y worker_id, pero no los entrega. Da el objeto desde tu propio recurso con estos metadatos:
| Objeto | Metadatos |
|---|---|
job_badge | layout ('portrait' por defecto), heading, logo, playerPhoto, firstname, rank, issueDate, expireDate, isRevoked, colors (body, bodyText, footer, footerText en hex) |
worker_id | name, sex, job, rank, logo, isRevoked |
exports.ox_inventory:AddItem(source, 'worker_id', 1, {
name = 'John Doe',
sex = 'Hombre',
job = 'Mecánico',
rank = 'Aprendiz',
logo = 'https://example.com/logo.png',
})Exports de servidor
GetPlayerLicenses
Devuelve las licencias de un personaje que no están revocadas. Las vencidas sí se incluyen.
exports.cuxial_license:GetPlayerLicenses(citizenId)| Parámetro | Tipo | Descripción |
|---|---|---|
citizenId | string | Identificador del personaje. |
Devuelve: table[]. Cada entrada tiene id (id de la licencia), type (id del diseño de tarjeta), label (título de la tarjeta), issueDate y expireDate ('YYYY-MM-DD', o vacío cuando no vence). Una tabla vacía si no hay ninguna.
local licenses = exports.cuxial_license:GetPlayerLicenses(citizenId)
for _, license in ipairs(licenses) do
print(license.label, license.expireDate)
endGetAvailableCards
Devuelve todos los diseños de tarjeta creados en el servidor.
exports.cuxial_license:GetAvailableCards()Devuelve: table[]. Cada entrada tiene type (id del diseño de tarjeta), label, restrictJob (boolean) y restrictJobNames (lista de nombres de trabajo).
IssueLicense
Emite una tarjeta a un personaje, conectado o no. No comprueba permisos: hazlo en tu recurso antes de llamar.
exports.cuxial_license:IssueLicense(issuerSrc, cardId, citizenId, opts)| Parámetro | Tipo | Descripción |
|---|---|---|
issuerSrc | number | nil | Id de servidor del jugador que emite. Con nil el emisor queda registrado como SYSTEM. |
cardId | string | Id del diseño de tarjeta, el type de GetAvailableCards. |
citizenId | string | Personaje que la recibe. |
opts.expireDate | string | Fecha de vencimiento como 'YYYY-MM-DD'. Omítela para que no venza. |
opts.metadata | table | Datos extra que se guardan con la licencia. playerPhoto (un enlace https) se usa como foto de la tarjeta. |
Devuelve: table. { success = true, id = licenseId }, o { success = false, reason = 'invalid_args' } / { success = false, reason = 'card_not_found' }.
Si el personaje está conectado recibe el objeto y una notificación. Si no lo está, solo se guarda el registro, sin objeto. Si el personaje ya tiene esa tarjeta, se actualiza el registro existente y se devuelve su id.
local result = exports.cuxial_license:IssueLicense(source, cardId, citizenId, {
expireDate = '2027-01-01',
})
if result.success then
print('Emitida', result.id)
endRevokeLicense
exports.cuxial_license:RevokeLicense(licenseId)| Parámetro | Tipo | Descripción |
|---|---|---|
licenseId | string | El id de GetPlayerLicenses o de IssueLicense. |
Devuelve: boolean. true cuando la licencia se revocó; false si no existe o ya estaba revocada.
RestoreLicense
exports.cuxial_license:RestoreLicense(licenseId)Devuelve: boolean. true cuando una licencia revocada vuelve a estar activa.
GetCardTemplate
Devuelve el diseño de una tarjeta con los campos en blanco, para un recurso que quiera dibujar la tarjeta y rellenarla por su cuenta.
exports.cuxial_license:GetCardTemplate(query)| Parámetro | Tipo | Descripción |
|---|---|---|
query.id | string | Id del diseño de tarjeta. |
query.item | string | Alternativa a id: la primera tarjeta cuyo nombre de objeto sea este. |
Devuelve: table | nil. id, display (formato, colores, logo, título, pie y la lista de campos) y fields (las claves con las que se puede rellenar una tarjeta: first_name, last_name, citizenid, birthdate, gender, nationality, issue_date, expiry_date). nil cuando ninguna tarjeta coincide.
local template = exports.cuxial_license:GetCardTemplate({ item = 'license_card' })Eventos
cuxial_license:client:openPanel
Abre un panel a un jugador desde el servidor.
TriggerClientEvent('cuxial_license:client:openPanel', source, panel, data)| Parámetro | Tipo | Descripción |
|---|---|---|
panel | string | 'admin' (gestión), 'purchase' (tienda), 'manager' (emisión), 'idcheck' (verificación) o 'fakeid' (generador de identificaciones falsas). |
data | table | La misma tabla que el export de cliente equivalente. Para 'idcheck', { scanId = serverId } escanea a ese jugador al abrir. |
TriggerClientEvent('cuxial_license:client:openPanel', source, 'idcheck', { scanId = targetId })Abrir un panel no da derechos extra. Cada acción de dentro se vuelve a comprobar en el servidor contra admin.permission y authorizedJobs.
