Inicio › Documentación › Personalización · origen_dealerships

Personalización · origen_dealerships

La carpeta custom/ contiene todos los puntos de integración entre origen_dealerships y el resto de tu servidor. Estos ficheros no están protegidos con escrow y debes adaptarlos a tu configuración.

text
custom/
├── client/
│   ├── framework.lua   — player identifier, vehicle props, NPC interaction
│   ├── keys.lua        — vehicle key assignment on purchase
│   └── notify.lua      — notifications and text UI
└── server/
    ├── framework.lua   — admin check, payments, vehicle DB insertion
    ├── financing.lua   — financing eligibility hook
    └── plate.lua       — plate generation and uniqueness check

custom/client/framework.lua

Custom.GetPlayerIdentifier() → string

Devuelve el identificador único del jugador local (citizenid o identifier según el framework).

lua
Custom.GetPlayerIdentifier = function()
    local identifier = nil
    if Config.Framework == 'qb-core' then
        identifier = Framework.Functions.GetPlayerData().citizenid
    elseif Config.Framework == 'esx' then
        identifier = Framework.GetPlayerData().identifier
    end
    return identifier
end

Custom.HandleInteraction(interactionData) → boolean

Hook que se llama cuando un jugador intenta interactuar con el NPC de un concesionario. Devuelve true para sustituir el flujo de interacción por defecto, o false para que lo gestione el recurso con normalidad.

Parámetro Tipo Descripción
interactionData.type string Tipo de interacción. Por ahora: 'npc'
interactionData.onInteract function Llámala para lanzar la interacción por defecto desde dentro del hook
lua
Custom.HandleInteraction = function(interactionData)
    if interactionData.type == 'npc' then
        -- interactionData.onInteract() -- uncomment to delegate back
        return true -- return true to fully take over
    end
    return false
end

La sustitución de la interacción con el NPC está desactivada por defecto (return false). Actívala si quieres usar un menú contextual de ox_lib propio o un recurso de interacción de terceros.


Custom.GetVehicleProps(vehicle) → table

Devuelve las propiedades de la entidad de vehículo indicada. Usa lib.getVehicleProperties cuando Config.VehiclePurchase.useOxLibProps es true.

Parámetro Tipo Descripción
vehicle entity Handle de la entidad del vehículo
lua
Custom.GetVehicleProps = function(vehicle)
    if Config.VehiclePurchase.useOxLibProps and lib and lib.getVehicleProperties then
        return lib.getVehicleProperties(vehicle)
    end
    -- fallback: returns basic props table
end

Custom.SetVehicleProps(vehicle, props) → boolean

Aplica una tabla de propiedades a una entidad de vehículo. Usa lib.setVehicleProperties cuando está disponible.

Parámetro Tipo Descripción
vehicle entity Handle de la entidad del vehículo
props table Tabla de propiedades (mismo formato que GetVehicleProps)

custom/client/keys.lua

Custom.GiveKeys(vehicle, plate) → boolean

Concede al jugador local las llaves de propietario del vehículo indicado. Se llama automáticamente tras la compra cuando Config.VehiclePurchase.giveKeysOnPurchase es true.

Parámetro Tipo Descripción
vehicle entity | nil Entidad del vehículo. Si es nil, se usa plate
plate string | nil Matrícula. Se usa como alternativa si la entidad no está disponible
lua
Custom.GiveKeys = function(vehicle, plate)
    local plateToUse = plate or (DoesEntityExist(vehicle) and GetVehicleNumberPlateText(vehicle) or nil)
    TriggerEvent("vehiclekeys:client:SetOwner", plateToUse)
    return true
end

La implementación por defecto lanza el evento vehiclekeys:client:SetOwner (compatible con qb-vehiclekeys). Sustituye esta función si tu servidor usa otro sistema de llaves, como qs-vehiclekeys o vehicles_keys.


custom/client/notify.lua

Custom.Notify(text, type, length)

Muestra una notificación al jugador local usando lib.notify.

Parámetro Tipo Descripción
text string Mensaje ya traducido
type string Tipo de notificación: 'success', 'error', 'warning', 'info'
length number Duración en milisegundos
lua
Custom.Notify = function(text, type, length)
    lib.notify({
        title       = 'Origen Dealerships',
        description = text,
        type        = type,
        duration    = length
    })
end

Custom.DrawText(text, key)

Muestra el text UI de ox_lib con una indicación de tecla.

Parámetro Tipo Descripción
text string Texto de la etiqueta
key string Etiqueta de la tecla que se muestra entre corchetes

Custom.HideText()

Oculta el text UI de ox_lib que esté activo.


custom/server/framework.lua

Custom.isAdmin(source) → boolean

Comprueba si el jugador indicado tiene permisos de administrador según Config.AdminGroups.

Parámetro Tipo Descripción
source number ID del jugador en el servidor

Custom.getPlayerIdentifier(source) → string | nil

Devuelve el identificador único del jugador (citizenid en QB/QBX, identifier en ESX).

Parámetro Tipo Descripción
source number ID del jugador en el servidor

Custom.doPayment(source, paymentData) → boolean

Procesa un pago desde la cuenta de un jugador. Admite los métodos cash, bank y xp.

Parámetro Tipo Descripción
source number ID del jugador en el servidor
paymentData.method string Método de pago: 'cash', 'bank', 'xp'
paymentData.amount number Importe a descontar
lua
Custom.doPayment = function(source, paymentData)
    -- Handles cash/bank via framework, XP via exports['origen_xp']
end

El método de pago 'xp' requiere que origen_xp esté en ejecución. Llama a exports['origen_xp']:RemoveXPFromLicense(license, amount).


Custom.removeFinanceMoney(source, amount) → boolean

Descuenta de la cuenta bancaria del jugador el pago de una cuota de financiación.

Parámetro Tipo Descripción
source number ID del jugador en el servidor
amount number Importe a descontar del banco

Custom.addVehicleToDatabase(source, vehicleModel, plate, props, callback)

Inserta un vehículo comprado en la tabla de vehículos correspondiente al framework activo.

Parámetro Tipo Descripción
source number ID del jugador en el servidor
vehicleModel string Nombre del modelo del vehículo (nombre de spawn)
plate string Cadena de la matrícula
props table | nil Propiedades del vehículo. Si es nil, se usan las de por defecto
callback function(success, message) Se llama cuando termina la inserción en la base de datos

Tablas de destino:

Framework Tabla
QBCore / QBX player_vehicles
ESX owned_vehicles

Custom.GetPlayerSourceByIdentifier(identifier) → number | nil

Busca el ID de servidor (source) de un jugador conectado a partir de su identificador único. Se usa para las notificaciones de pagos de financiación.

Parámetro Tipo Descripción
identifier string citizenid (QB/QBX) o identifier (ESX)

Custom.canBuyCategory(source, categoryKey, vehicleModel) → { cant: boolean, msg: string }

Hook para añadir restricciones personalizadas a la compra de categorías de vehículos. Devuelve cant = false con un mensaje para bloquear la compra.

Parámetro Tipo Descripción
source number ID del jugador en el servidor
categoryKey string Identificador de la categoría del concesionario
vehicleModel string Modelo de vehículo que se está comprando
lua
Custom.canBuyCategory = function(source, categoryKey, vehicleModel)
    -- Example: block category for players without a license
    return { cant = true, msg = "" }
end

custom/server/financing.lua

Custom.canFinanceVehicle(source, model, price, period) → { success: boolean, message: string }

Hook que se llama antes de crear un contrato de financiación. Devuelve success = false con un mensaje para bloquear la operación.

Parámetro Tipo Descripción
source number ID del jugador en el servidor
model string Modelo del vehículo
price number Precio total del vehículo
period number Número de periodos de pago solicitado
lua
Custom.canFinanceVehicle = function(source, model, price, period)
    return { success = true, message = '' }
end

custom/server/plate.lua

Custom.GeneratePlate() → string | nil

Genera una matrícula única de 8 caracteres (4 letras + 4 dígitos). Reintenta hasta 100 veces para evitar colisiones. Devuelve nil si no encuentra una matrícula única tras el máximo de intentos.


Custom.PlateExists(plate) → boolean

Comprueba si una matrícula ya está registrada en la tabla de vehículos.

Parámetro Tipo Descripción
plate string Matrícula a comprobar

Consulta player_vehicles en QBCore/QBX y owned_vehicles en ESX.