Skip to content

Exports y eventos

API pública de Cuxial Garages: exports para llaves, garajes de casa, depósito y limpieza de vehículos.

Da y comprueba llaves de vehículo, abre un garaje de casa, incauta un vehículo o inicia una limpieza desde tus propios recursos. Los recursos escritos para qbx_vehiclekeys no necesitan cambios.

Los exports de llaves solo existen con enabled = true en data/keys.lua, y los de limpieza solo con enabled = true en data/carwipe.lua.

Exports de servidor ​

GiveKeys ​

Da a un jugador la llave de una matrícula. No hace nada si el jugador ya la tiene.

lua
exports.cuxial_garages:GiveKeys(source, plate)
ParámetroTipoDescripción
sourcenumberId de servidor del jugador.
platestringMatrícula del vehículo. Se ignoran los espacios de los extremos y se pasa a mayúsculas.

Devuelve: boolean. true cuando el jugador acaba con la llave.

lua
exports.cuxial_garages:GiveKeys(source, 'ABC12345')

HasKeys ​

Indica si un jugador lleva la llave de una matrícula.

lua
local has = exports.cuxial_garages:HasKeys(source, plate)
ParámetroTipoDescripción
sourcenumberId de servidor del jugador.
platestringMatrícula del vehículo.

Devuelve: boolean.

lua
if not exports.cuxial_garages:HasKeys(source, plate) then return end

RemoveKeys ​

Retira del inventario del jugador todas las llaves de esa matrícula.

lua
exports.cuxial_garages:RemoveKeys(source, plate)
ParámetroTipoDescripción
sourcenumberId de servidor del jugador.
platestringMatrícula del vehículo.

Devuelve: boolean. true cuando se ha retirado al menos una llave.

lua
exports.cuxial_garages:RemoveKeys(source, plate)

ImpoundStoredVehicle ​

Envía un vehículo al depósito a partir de su id en la base de datos, sin agente. Pensado para vehículos guardados: no retira un vehículo que esté fuera, en el mundo.

lua
local result = exports.cuxial_garages:ImpoundStoredVehicle(data)
ParámetroTipoDescripción
data.idnumberId del vehículo en la tabla de vehículos. Obligatorio.
data.costnumberTasa para retirarlo. Por defecto defaultPrice de data/impound.lua.
data.reasonstringMotivo que ve el dueño. Hasta 255 caracteres.
data.sentBystringNombre que aparece como quien lo incautó. Hasta 100 caracteres.
data.jobstringTrabajo que queda registrado como origen de la incautación.
data.depotstringId del depósito que lo retiene. Sin él, el vehículo se puede retirar en cualquier depósito.
data.fromStatenumberEstado en el que debe estar el vehículo. Por defecto guardado (1).

Devuelve: table. Si sale bien, { ok = true, cost, depot, depotLabel }. Si falla, { ok = false, reason }, donde reason es 'bad_request', 'no_vehicle' o 'not_stored'.

lua
local result = exports.cuxial_garages:ImpoundStoredVehicle({
    id = vehicleId,
    cost = 2500,
    reason = 'Embargado por orden judicial',
    sentBy = 'Departamento de Justicia',
    job = 'police',
})
if result.ok then print('Incautado por $' .. result.cost) end

GetVehicleMdtInfo ​

Devuelve el apodo y la ficha de incautación de una matrícula. Pensado para tablets policiales.

lua
local info = exports.cuxial_garages:GetVehicleMdtInfo(plate)
ParámetroTipoDescripción
platestringMatrícula de un vehículo con dueño.

Devuelve: table, o nil cuando la matrícula no tiene dueño.

CampoTipoDescripción
nicknamestring | nilApodo puesto por el dueño.
impoundtable | nilnil cuando el vehículo no está incautado. Si lo está: depot, cost, reason, selfRetrievable, sentBy, authorizedBy y date (tiempo Unix).
lua
local info = exports.cuxial_garages:GetVehicleMdtInfo('ABC12345')
if info and info.impound then
    print(('Incautado por %s: %s'):format(info.impound.sentBy, info.impound.reason or '-'))
end

StartCarWipe ​

Inicia una limpieza de vehículos tras una cuenta atrás que ven todos los jugadores.

lua
local ok, message = exports.cuxial_garages:StartCarWipe(seconds)
ParámetroTipoDescripción
secondsnumberCuenta atrás en segundos. Opcional; por defecto countdown de data/carwipe.lua.

Devuelve: boolean, string. false cuando ya hay una limpieza en curso. El texto es el mensaje a mostrar.

lua
local ok, message = exports.cuxial_garages:StartCarWipe(90)
print(message)

CancelCarWipe ​

Cancela la limpieza en curso.

lua
local ok, message = exports.cuxial_garages:CancelCarWipe()

Devuelve: boolean, string. false cuando no hay ninguna limpieza en curso.

IsWipeInProgress ​

Indica si hay una cuenta atrás de limpieza en marcha.

lua
local running = exports.cuxial_garages:IsWipeInProgress()

Devuelve: boolean.

Exports de cliente ​

GiveKeys ​

Pide al servidor la llave de una matrícula para el jugador local. El servidor solo la concede cuando el jugador es dueño del vehículo o la matrícula no tiene dueño.

lua
exports.cuxial_garages:GiveKeys(plate, vehicleEntity)
ParámetroTipoDescripción
platestringMatrícula del vehículo.
vehicleEntitynumberHandle del vehículo. Opcional. Si se indica, el jugador puede usar ese vehículo al momento, sin esperar al ítem. Úsalo con vehículos que generes tú, como pruebas de conducción.
lua
local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
exports.cuxial_garages:GiveKeys(GetVehicleNumberPlateText(vehicle), vehicle)

HasKeys ​

Indica si el jugador local lleva la llave de una matrícula. Consulta al servidor, así que llámalo desde un hilo.

lua
local has = exports.cuxial_garages:HasKeys(plate)

Devuelve: boolean.

RemoveKeys ​

Retira al jugador local la llave de una matrícula.

lua
exports.cuxial_garages:RemoveKeys(plate)

IsVehicleAccessible ​

Indica si el jugador local puede usar un vehículo: con su llave, o por las llaves compartidas de su trabajo. Consulta al servidor, así que llámalo desde un hilo.

lua
local allowed = exports.cuxial_garages:IsVehicleAccessible(vehicle)
ParámetroTipoDescripción
vehiclenumberHandle del vehículo.

Devuelve: boolean.

lua
if not exports.cuxial_garages:IsVehicleAccessible(cache.vehicle) then return end

OpenGarage ​

Abre un garaje de casa en una posición que da tu recurso de propiedades. El garaje no se guarda en la base de datos ni dibuja marcador: tu recurso gestiona el punto de interacción.

lua
exports.cuxial_garages:OpenGarage(id, opts)
ParámetroTipoDescripción
idstringId único del garaje, hasta 64 caracteres. Los vehículos guardados ahí quedan ligados a este id.
opts.coordsvector4Posición de acceso, que también se usa como plaza cuando no se dan spawns. Obligatorio.
opts.categorystring'car', 'motorcycle', 'air' o 'sea'. Opcional; por defecto todas las categorías.
opts.labelstringNombre que se ve en la interfaz. Opcional, hasta 48 caracteres.
opts.capacitynumberVehículos por jugador, de 1 a 100. Opcional. Solo se aplica con capacity.enabled = true.
opts.spawnstable[]Plazas como { x, y, z, h }. Opcional, hasta 16, cada una a menos de 30 metros de coords.
lua
exports.cuxial_garages:OpenGarage('house:' .. property.id, {
    coords = vector4(x, y, z, heading),
    category = 'car',
    label = 'Garaje de casa',
    capacity = 4,
})

StoreVehicle ​

Guarda en un garaje de casa el vehículo que conduce el jugador local. No hace nada si el jugador no es el conductor.

lua
exports.cuxial_garages:StoreVehicle(id, opts)
ParámetroTipoDescripción
idstringId del garaje, el mismo que se usa con OpenGarage.
optstableOpcional. Los mismos campos que OpenGarage. Sin coords, se usa la posición del jugador.
lua
exports.cuxial_garages:StoreVehicle('house:' .. property.id, { category = 'car' })

OpenGarage y StoreVehicle solo funcionan con externalGarages = true en shared/config.lua. El servidor comprueba además que el jugador esté a menos de interactDistance (8 metros por defecto) de coords, y acepta hasta 25 garajes de casa por jugador y sesión.

OpenImpound ​

Abre el formulario de incautación del vehículo más cercano al jugador local, igual que /impound. El jugador sigue necesitando un trabajo con permiso para incautar.

lua
exports.cuxial_garages:OpenImpound()

Compatibilidad con qbx_vehiclekeys ​

Cuxial Garages responde a estas llamadas con el nombre de qbx_vehiclekeys, así que los recursos que las usan siguen funcionando:

LlamadaComportamiento
exports.qbx_vehiclekeys:GiveKeys(source, vehicle)Servidor. vehicle es un handle de vehículo o una matrícula.
exports.qbx_vehiclekeys:HasKeys(source, plate)Servidor. Igual que HasKeys de arriba.
exports.qbx_vehiclekeys:RemoveKeys(source, plate)Servidor. Igual que RemoveKeys de arriba.
lib.callback('qbx_vehiclekeys:server:giveKeys', false, cb, netId)Se llama desde el cliente. Concede la llave de ese vehículo cuando el jugador es su dueño o no tiene dueño.
lua
exports.qbx_vehiclekeys:GiveKeys(source, vehicle)

State bags ​

State bagEnSignificado
vehicleidVehículoId en la base de datos de un vehículo con dueño entregado por un garaje. Los vehículos que no lo tienen cuentan como sin dueño.
doorslockstateVehículoEstado de bloqueo de puertas que pone el sistema de llaves. Por encima de 1 = cerrado.
ignoreLocksVehículoPonlo a true desde tu recurso para dejar un vehículo fuera del sistema de cierre.
rentalcodeVehículoCódigo de ticket de un vehículo alquilado.
lua
Entity(vehicle).state:set('ignoreLocks', true, true)

Eventos ​

Cuxial Garages no expone eventos públicos. Usa los exports de arriba.

Integraciones propias ​

Tres opciones apuntan a un recurso por su nombre. Para usar tu propio recurso en lugar del de por defecto, debe ofrecer estos exports de servidor:

OpciónExports que debe ofrecer tu recurso
dispatch.resource en data/keys.luaSendDispatchAlert(data)
license.resource en data/rental.luaGetAvailableCards() devuelve una lista de { type, label }. GetPlayerLicenses(citizenid) devuelve una lista de { type }.
finance.resource en shared/config.luagetPlayerFinancedVehicles(citizenid), getFinanceByPlate(plate) y makeFinancePayment(source, plate)

El aviso de robo que recibe SendDispatchAlert:

lua
{
    title = 'Robo de vehículo',   -- texto traducido
    type = 'vehicle',
    code = '10-72',
    coords = { x = 0.0, y = 0.0, z = 0.0 },
    vehicle = { plate = 'ABC12345' },
    central = true,
}

© Cuxial