Inicio › Documentación › Personalización · origen_masterjob
La carpeta custom/ gestiona la integración con el framework, el inventario, la ropa, los vehículos, el combustible y las notificaciones sin tocar el núcleo. Todos los ficheros son escrow_ignore, así que sobreviven a las actualizaciones.
custom/
├── client.lua — notifications, inventory, stash, clothing, garage, mechanic, keys, fuel
├── client_pay_bills.lua — bill payment NPC thread
├── blips.lua — business blip rendering
└── server/
├── command.lua — admin command definitions
├── main.lua — inventory helpers, vehicle queries, payment, keys, bill sending
└── menu/
└── phone.lua — phone number lookupCustom.canOpenMenu(job) → { success, message }Controla si el jugador local puede abrir el menú del negocio. Devuelve success = false con un mensaje para bloquear el acceso.
Custom.canOpenMenu = function(job)
return { success = true, message = '' }
endCustom.ShowNotification(msg)Muestra una notificación al jugador local. Se usa cuando Config.CustomNotify = true.
Custom.ShowNotification = function(msg)
-- Add your notification here
-- Example: exports["origen_notify"]:ShowNotification(msg, "business")
endCustom.ShowShopState(msg)Muestra una notificación relacionada con la tienda (por ejemplo, compra correcta o fallida).
Custom.ShowShopState = function(msg)
-- Same as ShowNotification but can use a different style
endShowHelpNotification(key, msg)Muestra una ayuda de interacción en el mundo. Se usa cuando Config.OrigenNotify = true.
function ShowHelpNotification(key, msg)
-- Default: uses origen_notify CreateHelp
-- Add your own implementation if not using origen_notify
endCustom.DrawText(key, msg) / Custom.HideText()Dibuja la ayuda de interacción con la interfaz de texto. Se usa cuando Config.customDrawText = true.
GetItemData(item) → table | nilDevuelve los datos de un objeto del sistema de inventario activo. Redirige según Config.Inventory.
OpenStash(Sid, Sslots, label, preId)Abre el inventario de un almacén. Redirige según Config.Inventory:
ox_inventory → openInventory('stash', ...)codem-inventory → OpenStash(...)OpenOutfitMenu(canEdit)Abre el menú de selección de vestuario. Redirige según Config.Clothing.
openPlayerInventory(pID)Abre el inventario de otro jugador (para el trabajo de mecánico). Redirige según Config.Inventory.
Custom.ReapirVehicle(vehicle)Repara un vehículo. Implementa aquí tu arreglo de deformaciones si lo necesitas.
Custom.ReapirVehicle = function(vehicle)
-- exports['VehicleDeformation']:FixVehicleDeformation(vehicle)
endCustom.GetVehicleProperties(vehicle) / Custom.SetVehicleProperties(vehicle, mods)Obtiene o aplica las modificaciones de un vehículo. Redirige según Config.Framework.
Custom.GetVehicleFuel(vehicle) / Custom.SetVehicleFuel(vehicle, fuel)Obtiene o aplica el combustible de un vehículo. Implementa aquí tu sistema de combustible.
Custom.GetVehicleFuel = function(vehicle)
-- return exports['FuelSystem']:GetFuel(vehicle)
endCustom.OpenModificationMenu(vehicle)Abre el menú de tuneo. Implementa aquí tu sistema de tuneo.
Custom.OpenModificationMenu = function(vehicle)
-- Used when Config.CustomMechanic = true
endCustom.GetClientVehicleKeys(vehicle)Da al jugador las llaves de un vehículo desde el cliente. Implementa aquí tu sistema de llaves.
Custom.GetClientVehicleKeys = function(vehicle)
local plate = GetVehicleNumberPlateText(vehicle)
TriggerEvent("vehiclekeys:client:SetOwner", plate)
endCustom.SpawnVehicle(model, cb, coords, isNetwork)Crea un vehículo. Redirige según Config.Framework.
CustomGarage(PlayerData, coords) / CustomGarageBusiness(PlayerData, coords)Sustituye el garaje por defecto por tu propio sistema. Solo se llama cuando Config.CustomGarage = true.
Custom.RemoveMoney(Player, account, amount, log) → booleanRetira dinero de la cuenta de un jugador. Gestiona el objeto de efectivo de ox_inventory y las cuentas del framework.
Custom.GetVehicleKeys(source, plate)Da las llaves de un vehículo desde el servidor. Implementa aquí tu sistema de llaves.
Custom.GetVehicleKeys = function(source, plate)
TriggerClientEvent("vehiclekeys:client:SetOwner", source, plate)
endCustom.GetVehicleData(plate) → { owner } | falseDevuelve el identificador del propietario de un vehículo a partir de su matrícula, consultando la tabla de vehículos del framework.
Custom.PlateGenerator() → stringGenera una matrícula personalizada. Implementa aquí tu propia lógica.
Custom.PlateGenerator = function()
local plate = ''
-- your plate generation logic
return plate
endCustom.QueryGiveBusinesscar(values) / Custom.QueryRemoveBusinesscar(values)Inserta o elimina un vehículo en la tabla de vehículos del framework cuando se asigna o se retira un vehículo de negocio.
Custom.SendBill → false | functionSustituye la lógica de creación de facturas por defecto. Asígnale una función para usar tu propio sistema de facturación:
Custom.SendBill = function(data, cb)
-- data: { senderSource, receiverSource, price, concept, business }
-- cb(true) on success, cb('error message') on failure
local success = MySQL.insert.await('INSERT INTO bills (...) VALUES (...)', {...})
cb(success or 'Failed to send bill')
end