Cómo funcionan las integraciones#
Todo lo que depende de tu framework está detrás de dos pequeños archivos de puente sin cifrar — uno para el cliente y otro para el servidor — y el recurso carga el que corresponde a lo que está en ejecución. El resto es opcional y se detecta por sí solo:
Capa | Compatible | Sin ella |
|---|---|---|
Framework |
| Obligatorio. No hay modo independiente. |
Base de datos |
| Obligatoria. |
Librería |
| Obligatoria: callbacks, notificaciones de salario y contratación, reinicios programados. |
Aviso 3D |
| Una etiqueta de texto dibujada sobre la zona del jefe. |
Niveles de trabajo | Once recursos de trabajo de Quasar | Las tarjetas y las filas de empleados no muestran nivel ni XP. |
Pagos de trabajo | Cualquier recurso que llame a | El trabajo sigue funcionando; su tesorería y sus estadísticas de ganancias quedan vacías. |
Notificaciones | Cualquier sistema, mediante | Algunos mensajes no se muestran hasta que eliges uno. |
Nombres de personaje |
| Los nombres aparecen como Unknown en menús y registros. |
Discord | Una URL de webhook | Sin registros en Discord; el registro de RR. HH. y el del servidor siguen guardándolo todo. |
Cada integración opcional se desactiva en silencio. Si falta un recurso, su función se retira — nunca impide que se abra el menú de trabajos.
Frameworks#
El framework se detecta a partir de los recursos iniciados en el momento en que arranca Job Management. Ejecuta exactamente uno.
Los jugadores se identifican en ESX por su identifier, y un cambio de trabajo se detecta con esx:setJob. Los rangos se leen y se escriben en job_grades, los trabajos en jobs, y ESX los recarga al instante — todo cambio hecho en el juego es permanente.
Los nombres vienen del nombre y apellido de
esx_identity.Los administradores son los grupos
adminysuperadmin.El dinero se paga en la cuenta
money(efectivo).
Los jugadores se identifican por su citizenid, y un cambio de trabajo se detecta con QBCore:Client:OnJobUpdate. Los rangos se leen de QBCore.Shared.Jobs y se escriben mediante las propias funciones de trabajo del core.
Los nombres vienen del personaje, en
charinfo.Los administradores son quienes el core autoriza con el permiso
admin.El dinero se paga como
cash.Los trabajos y rangos creados o editados en el juego duran hasta el siguiente reinicio — cópialos en
qb-core/shared/jobs.luapara conservarlos.
Qbox se detecta por qbx_core y usa el puente de QBCore: los jugadores se identifican por citizenid, los trabajos se leen y se escriben en qbx_core mediante sus exports, y los cambios de trabajo hechos por otros recursos se detectan en el momento.
Los nombres, la comprobación de administrador y el efectivo funcionan como en QBCore.
Los trabajos y rangos creados o editados en el juego duran hasta el siguiente reinicio — cópialos al archivo de trabajos compartidos de Qbox para conservarlos.
Notificaciones#
SendTextMessage(msg, type) en config/config.lua muestra el aviso de máximo de trabajos, el rechazo por licencia, el aviso al jefe de que un empleado lo dejó, el aviso a un jugador de que recibió un pago de la tesorería y el resultado de una contratación. Viene con todas las líneas comentadas, así que esos mensajes no se muestran hasta que eliges un sistema. type es info, success o error.
-- config/config.lua
function SendTextMessage(msg, type)
lib.notify({
description = msg,
type = type == 'info' and 'inform' or type,
})
end-- config/config.lua
function SendTextMessage(msg, type)
SetNotificationTextEntry('STRING')
AddTextComponentString(msg)
DrawNotification(0, 1)
end-- config/config.lua
function SendTextMessage(msg, type)
exports['your-notify']:Alert(msg, type)
endLos pagos de salario y los resultados de contratación también usan directamente las notificaciones de ox_lib, así que esos aparecen elijas lo que elijas aquí.
El aviso 3D#
Cuando qs-textui está iniciado, el aviso [E] Manage sobre una zona del jefe lo dibuja él, con su indicación de tecla. Sin él, se dibuja en su lugar una etiqueta simple con fondo oscuro. No hay nada que configurar.
Recursos de trabajo de Quasar#
Estos recursos guardan el nivel y la experiencia de cada trabajador en su propia tabla, y Job Management la lee — solo mientras el recurso está iniciado — para mostrar los niveles en el menú de trabajos y en el menú del jefe:
Nombre del trabajo | Recurso | Tabla |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
El nombre del trabajo debe ser el que esos recursos asignan a sus trabajadores. Config.JobStatsTables contiene los mismos pares para el menú del jefe, y Config.JobProgress la curva de XP de cada uno — mantén ambos sincronizados con la propia configuración de los scripts de trabajo.
Cualquier recurso de trabajo — de Quasar o tuyo — que pague a sus trabajadores mediante AddJobMoney alimenta la tesorería y las estadísticas del trabajo. Consulta Comandos y exports.
Registros de Discord#
Pega el webhook de un canal en config/config.lua y los eventos de trabajo se publicarán ahí como embeds, con el nombre QS MultiJob. Déjalo vacío para no enviar nada.
Config.DiscordWebhook = "https://discord.com/api/webhooks/0000000000/xxxxxxxxxxxx"Embed | Se envía cuando |
|---|---|
Employee Hired | Se acepta una oferta de trabajo, o un administrador añade un trabajo a un jugador. Marcado con |
Employee Fired | Un jefe, un rango con Fire, un administrador o un contrato rescindido quita a alguien. |
Grade Changed | Cambia el rango de un empleado, con el rango anterior y el nuevo. |
Penalty Applied | Se añade una sanción, con su motivo. |
Treasury | Un jefe o un administrador paga a un empleado desde la tesorería. |
Boss Assigned · Boss Removed · Boss Resigned | Cualquier cambio de jefe. |
Announcement | Un jefe o un administrador envía un anuncio. |
Job Created · Job Deleted | Desde el panel de administración, en Manage Jobs. |
Las contrataciones mediante contrato firmado, los cambios de comisión e impuesto, los fondos añadidos y los cambios de permisos se guardan en el registro de RR. HH. y en el del servidor en lugar de enviarse a Discord.
Frameworks personalizados y comprobaciones#
Los puentes de client/framework/ y server/framework/ se pueden editar libremente. El puente del servidor ofrece algunas funciones de las que depende el resto del recurso:
Función | Devuelve |
|---|---|
| El objeto de jugador del framework, o |
| El identificador del personaje guardado en |
| Los ids de servidor de los jugadores cargados. |
| El nombre del personaje, usado en menús y registros. |
| Si el jugador puede usar el panel de administración. |
| Escribe un trabajo y sus rangos en el core, o lo elimina. |
Un fork de ESX o QBCore que conserve su objeto de jugador funciona ajustando estas funciones. Si tu core anuncia los cambios de trabajo con otro evento, reenvíalo desde el puente del cliente para que el trabajo siga llegando a la lista del jugador:
-- client/framework/esx.lua or qb.lua
RegisterNetEvent('mycore:jobChanged', function(job)
PlayerJob = job
TriggerServerEvent('qs-job-management:add', job.name, job.grade)
end)Idiomas#
Se incluyen diecinueve traducciones en locales/: inglés (en), español (es), francés (fr), alemán (de), portugués (pt), italiano (it), neerlandés (nl), danés (da), húngaro (hu), rumano (ro), ruso (ru), búlgaro (bg), turco (tr), árabe (ar), persa (fa), hindi (hi), japonés (ja), coreano (ko) y chino simplificado (zh-CN). Pon Config.Locale con el nombre del archivo.
Se aceptan variantes cercanas:
DEcarga alemán, un código regional comopt-BRrecurre apt, yzhcargazh-CN.Cualquier texto que falte en una traducción se muestra en inglés en lugar de desaparecer.
Un archivo guardado con Notepad o PowerShell con marca de orden de bytes se carga igualmente.
Para añadir un idioma, copia en.json, traduce los valores, guárdalo como locales/<code>.json y pon Config.Locale con ese código.



