Cómo funcionan las integraciones#
Newspaper Job se comunica con otros recursos mediante pequeños archivos puente abiertos en client/framework/, client/vehiclekeys/ y server/framework/. La mayoría de las capas se eligen solas buscando un recurso iniciado, así que inícialos antes de qs-newspaperjob.
Capa | Compatibles | Cómo se elige | Sin ella |
|---|---|---|---|
Framework | es_extended · qb-core · qbx_core | Automático | Obligatorio — el editor nunca aparece. |
Inventario | ox_inventory · qs-inventory | Automático | El inventario propio del framework (qb-inventory, el de ESX). |
Target | ox_target · qb-target |
| Pulsa E junto al editor. |
Llaves de vehículos | Once recursos (abajo) | Automático | No se dan llaves. |
Combustible | LegacyFuel o cualquier export |
| El tanque se queda como apareció. |
Texto 3D | qs-textui | Automático | Texto flotante integrado. |
Cuentas de trabajo | qs-job-management | Automático | La paga va directamente al repartidor. |
Notificaciones | Integradas, o cualquier recurso |
| — |
El dinero siempre se paga en efectivo: la cuenta money en ESX y cash en QBCore y Qbox. Qbox es compatible a través de su capa de compatibilidad con qb-core, así que usa el mismo puente que QBCore.
Inventarios#
Cada lectura y escritura del periódico va al inventario que realmente está en marcha — ox_inventory y qs-inventory se llaman directamente, porque las funciones de ítems propias de ESX no llegan a qs-inventory. Antes de entregar una bolsa, el script también pregunta al inventario si el ítem existe, así que un ítem que falta se informa como This item does not exist: weapon_acidpackage (y una vez en la consola del servidor) en lugar de Your inventory is full.
Las definiciones de ítems para qs-inventory, ox_inventory y qb-inventory están en Instalación → Registrar el ítem del periódico.
Targets#
El target no se detecta automáticamente. Para usar el tercer ojo en el editor en lugar de pulsar E:
Config.Target = true
Config.TargetScript = 'ox' -- 'ox' for ox_target, 'qb' for qb-targetEl editor recibe una sola opción Start working a menos de 3 m. La entrega de la bicicleta siempre se hace pulsando una tecla en el punto de entrega.
Llaves de vehículos#
La bicicleta de trabajo recibe llaves al aparecer y las pierde al devolverla. Se usa el primero de estos que esté en marcha:
qs-vehiclekeys · qb-vehiclekeys · qbx_vehiclekeys · F_RealCarKeysSystem
fivecode_carkeys · glfp10_carkeys · mono_carkeys · ti_vehicleKeys
vehicles_keys · wasabi_carlock · xd_locksystemPara un recurso de llaves que no esté en la lista, copia el archivo más parecido de client/vehiclekeys/, cambia su primera línea por el nombre de tu recurso, completa AddVehiclekeys(vehicle, plate) y RemoveVehiclekeys(vehicle, plate), y añade el recurso a la tabla vehicleKeys al principio de config/config.lua:
-- config/config.lua
local vehicleKeys = {
['qs-vehiclekeys'] = 'qs-vehiclekeys',
-- ...
['my_keys'] = 'my_keys',
}
-- client/vehiclekeys/my_keys.lua
if Config.Vehiclekeys ~= 'my_keys' then
return
end
function AddVehiclekeys(vehicle, plate)
exports['my_keys']:GiveKeys(plate)
end
function RemoveVehiclekeys(vehicle, plate)
exports['my_keys']:RemoveKeys(plate)
endCombustible#
De serie, solo la Faggio usa combustible. Para llenar su tanque al aparecer, apunta el export a tu recurso de combustible:
Config.Fuel = true
Config.FuelExport = exports['LegacyFuel'] -- or exports['cdn-fuel'], exports['ps-fuel'] …El recurso debe exponer SetFuel(vehicle, amount).
Notificaciones y avisos#
Por defecto, el trabajo dibuja sus propias notificaciones, con un sonido y un icono por tipo (success, error, warning, info). Para enviarlas por tu propio sistema, desactiva las integradas y completa SendTextMessage en config/config.lua:
Config.DefaultNotifications = false
function SendTextMessage(msg, type) -- type: 'info' | 'error' | 'success' | 'warning'
exports['okokNotify']:Alert('Newspaper', msg, 5000, type)
endCon qs-textui en marcha, los avisos "[E] Start working" y "[E] Hand the bike in" lo usan automáticamente. Con Config.DrawText3D = false pasan a ser una indicación en la esquina de la pantalla.
Cuentas de trabajo#
Cuando qs-job-management está en marcha, cada pago de ruta pasa por él con el trabajo de periódico del repartidor, así que la parte de la tesorería del jefe y las estadísticas del trabajo avanzan con cada entrega. Varios periódicos en Config.NewspaperJob se registran cada uno en su propio trabajo. Los premios de la clasificación siempre se pagan directamente al ganador.
Logs de Discord#
Cinco eventos se pueden publicar en Discord como embeds con códigos de color, cada uno con el nombre del jugador, el ID de servidor y el identificador en el pie. Desactivados por defecto:
Config.Webhooks = {
Enabled = true,
Url = 'https://discord.com/api/webhooks/…', -- the shared channel
Name = 'qs-newspaperjob',
Avatar = '', -- an image URL, or '' for none
Timestamp = true,
Events = {
MissionStarted = true,
MissionFinished = true,
MissionAbandoned = true,
MoneyPaid = 'https://discord.com/api/webhooks/…', -- its own channel
ExperienceGiven = false,
},
}Evento | Se publica cuando |
|---|---|
| Se toma una ruta — paradas, bicicleta, paga y experiencia. |
| Se entrega la bicicleta — parte de las paradas atendidas, paga, experiencia y periódicos cobrados. |
| Se abandona una ruta desde el panel — paradas atendidas del total. |
| Se entrega el pago de una ruta. |
| Se otorga experiencia — ganada, nivel antes y después, progreso hacia el siguiente nivel y total. |
Cada evento acepta true (compartido: Url), false, o una URL propia — así el dinero puede ir a un canal del staff mientras las rutas van a uno público.
Añadir un framework#
Un core renombrado o personalizado se admite editando los puentes abiertos, no la detección. server/framework/esx.lua y qb.lua definen el mismo pequeño conjunto de funciones — GetPlayeridentifier, GetPlayerJobName, AddInventoryItem, RemoveInventoryItem, AddMoney, GetPlayerFromIdentifier — y los archivos del cliente se encargan de las actualizaciones del trabajo, la aparición de la bicicleta y el blip. Ajusta el que corresponda a la API de tu core, y mantén el nombre de recurso del core en la tabla frameworks de config/config.lua.
Idiomas#
Se incluyen once traducciones en config/translations.lua: inglés (en), español (es), italiano (it), francés (fr), portugués (pt), alemán (de), ruso (ru), turco (tr), neerlandés (nl), chino simplificado (cn) y chino tradicional (zh-tw).
Config.Language = 'es'
-- inside each language table:
["CURRENCY_TYPE"] = "$", -- the symbol FormatCurrency usesCualquier clave que falte en el idioma activo usa el inglés en lugar de mostrar su nombre en bruto. Para añadir un idioma, copia la tabla ['en'] con un código nuevo, traduce el texto entre comillas y define Config.Language con él.



