Antes de empezar#
Antes de instalar Job Center, asegúrate de que tu servidor cumple los requisitos. Solo un recurso es obligatorio; todo lo demás es opcional y se detecta solo.
Requisito | Estado | Notas |
|---|---|---|
| Obligatorio | Lo carga el manifiesto. El recurso no se inicia sin él. |
Framework | Recomendado | ESX, QBCore o Qbox — detectado automáticamente. Sin uno, funciona en un modo de prueba standalone. |
Target | Opcional |
|
| Opcional | Dibuja ese aviso cuando no se usa ningún target. |
Inventario | Opcional | Solo para el ítem de la tablet de jefe. El comando |
Smartphone | Opcional |
|
Todo lo específico de un framework o un target está detrás de un pequeño archivo puente, y el recurso elige el correcto según lo que ya está en ejecución:
Capa | Busca |
|---|---|
Framework |
|
Target |
|
Aviso |
|
Cada integración opcional se degrada en silencio: si falta un recurso, esa parte usa una alternativa y no hay errores. Integraciones tiene los detalles y cómo fijar una a mano.
github.comReleases · overextended/ox_libA FiveM resource and script library for Lua and JS.Descargar Job Center#
Después de comprar Job Center, el recurso se vincula automáticamente a tu cuenta del CFX Portal.
Inicia sesión en el CFX Portal con la misma cuenta que usaste al finalizar la compra, abre Granted Assets y descarga Job Center.
Después de extraer la descarga, deberías tener la siguiente carpeta:
qs-jobcenter/
├── shared/config.lua -- every setting and every job listing
├── locales/ -- 28 languages
├── client/custom/ -- framework and target bridges (editable)
├── server/custom/ -- framework bridges, Discord logs, phone bridge (editable)
├── client/ · server/ -- the core (protected)
├── html/ -- the interface
└── fxmanifest.luaLa carpeta debe llamarse
qs-jobcenter. La interfaz llama al recurso por ese nombre, y una copia renombrada se detecta al iniciar: la consola imprimeYou have renamed the script!y el servidor deja de responder hasta que se restaura el nombre original.
Instalar el recurso#
Mueve la carpeta qs-jobcenter al directorio de recursos de tu servidor. Puede estar en cualquier lugar dentro de él, incluida una carpeta de categoría:
resources/
└── [qs]/
└── qs-jobcenter/Una vez copiada, abre tu server.cfg y asegúrate de que cada dependencia — y todo lo que deba detectar — se inicie antes que Job Center:
ensure ox_lib
# Framework — one of them
ensure es_extended
# ensure qb-core
# ensure qbx_core
# Inventory, target and prompt (optional)
ensure ox_inventory
ensure ox_target
# ensure qb-target
# ensure qs-textui
ensure qs-jobcenterEl orden de carga importa. La detección solo ve los recursos que ya están iniciados, así que un framework o un target que se inicie después de Job Center no se encuentra: el framework pasa a standalone y el recepcionista al aviso E.
La base de datos#
No hay ningún archivo SQL que importar, y Job Center no usa oxmysql. Las ofertas están en shared/config.lua, y el trabajo en el que se contrata a un jugador lo guarda tu framework, igual que cualquier otro cambio de trabajo.
Los chats de las solicitudes se guardan en la memoria del servidor, no en una tabla:
Qué | Se guarda hasta |
|---|---|
Cada hilo de chat y sus mensajes | Se reinicia el recurso o el servidor, o un jefe cierra esa solicitud. |
Lo que cada jefe ya ha leído | Se reinicia el recurso o el servidor. |
Respuestas en espera para un solicitante desconectado | El siguiente inicio de sesión del solicitante, o un reinicio. |
Planifica los reinicios teniendo esto en cuenta: un reinicio del servidor empieza de cero todas las conversaciones de solicitudes. Un jugador que ya fue contratado conserva el trabajo — eso está en tu framework.
El ítem de la tablet de jefe#
La tablet de jefe abre el panel de jefe desde el inventario — el mismo panel que /jobchats. Es opcional: sáltate esta sección si el comando es suficiente, y pon Config.UseBossItem = false.
El ítem se registra como usable a través de tu framework, con el nombre de Config.BossItem (boss_tablet por defecto). Añádelo a tu inventario:
En ox_inventory/data/items.lua:
['boss_tablet'] = {
label = 'Boss Tablet',
weight = 500,
stack = false,
close = true,
consume = 0,
description = 'A special tablet for managing job applications and employee communications.',
client = {
image = 'boss_tablet.png',
},
},consume = 0 mantiene la tablet en el inventario después de usarla.
En qs-inventory/shared/items.lua:
['boss_tablet'] = {
['name'] = 'boss_tablet',
['label'] = 'Boss Tablet',
['weight'] = 500,
['type'] = 'item',
['image'] = 'boss_tablet.png',
['unique'] = false,
['useable'] = true,
['shouldClose'] = true,
['combinable'] = nil,
['rare'] = 'common',
['description'] = 'A special tablet for managing job applications and employee communications.'
},En qb-core/shared/items.lua:
boss_tablet = {
name = 'boss_tablet',
label = 'Boss Tablet',
weight = 500,
type = 'item',
image = 'boss_tablet.png',
unique = false,
useable = true,
shouldClose = true,
combinable = nil,
description = 'A special tablet for managing job applications and employee communications.'
},ESX guarda sus ítems en la base de datos. Ejecuta una vez:
INSERT INTO `items` (`name`, `label`, `weight`, `rare`, `can_remove`) VALUES
('boss_tablet', 'Boss Tablet', 500, 0, 1);Este es el único SQL que Job Center necesita, y solo para la lista de ítems de ESX.
La imagen, boss_tablet.png, viene con la descarga en la carpeta [img]. Cópiala en la carpeta de imágenes de tu inventario:
Inventario | Carpeta de imágenes |
|---|---|
ox_inventory |
|
qs-inventory |
|
qb-inventory |
|
esx_inventoryhud |
|
Entrégalo como cualquier otro ítem — el /giveitem <id> boss_tablet 1 de tu framework, una tienda o un menú de jefe.
Tener la tablet no basta. El panel solo se abre para un jugador cuyo trabajo y rango actuales figuran como jefe de ese trabajo — consulta Quién es jefe. Cualquier otro ve
You can't use this item.
Configurar el recurso#
Todo se configura en un único archivo sin cifrar, shared/config.lua:
Ajuste | Contenido |
|---|---|
| El idioma — cualquiera de los 28 archivos de |
| Mensajes de consola para la detección, las traducciones y los logs de Discord. |
| Detectados automáticamente. Fíjalos a mano cuando haga falta. |
| El recepcionista: modelo, posición y el texto del aviso. |
| El blip del mapa. |
| Las dos formas de entrar al panel de jefe, cada una con su propio interruptor. |
| Las categorías de la barra lateral. |
| Cada oferta. |
| Logs de Discord. |
Los valores que conviene revisar primero:
Config.Language = 'en' -- ar · bg · ca · cs · da · de · el · en · es · fa · fr · hi · hu · it
-- ja · ko · nl · no · pl · pt · ro · ru · sl · sv · th · tr · zh-CN · zh-TW
Config.JobCenterPed = {
model = 'a_f_y_business_01',
coords = vector4(-268.95, -956.13, 31.22, 204.35), -- x, y, z, heading
label = 'Open Job Center', -- the target option and the prompt
}
Config.UseBossCommand = true
Config.BossCommand = 'jobchats'
Config.UseBossItem = true
Config.BossItem = 'boss_tablet'Las ofertas incluidas son ejemplos. Cada clave de
Config.Jobsdebe ser el nombre del trabajo en tu framework, y subossGradesdebe coincidir con los rangos de ese trabajo. Uso explica ambas cosas — léelo antes de ponerlo en producción.
Verificar la instalación#
Para el primer inicio, pon Config.Debug = true y reinicia el servidor. La consola dice qué se eligió para cada capa:
[Quasar Jobcenter]: Found matching dependency: es_extended with ID: esx
[Quasar Jobcenter]: Found matching dependency: ox_target with ID: ox_target
[Quasar Jobcenter]: [Quasar Jobcenter] Server loaded translations for language: enNo matching dependencies found significa que no se encontró nada para esa capa — el framework funciona en standalone, o el recepcionista usa el aviso. Si sí usas ese recurso, muévelo por encima de ensure qs-jobcenter. Vuelve a poner Config.Debug en false cuando termines.
Después entra en tu servidor y recorre el primer ciclo:
Visita al recepcionista
El blip Job Center — un maletín — marca al recepcionista en el centro. Usa la opción del target, o ponte junto al recepcionista y pulsa
E. La ventana se abre en All Jobs.Acepta un trabajo instantáneo
Abre una oferta que contrate al momento para un trabajo que tenga tu framework —
garbageobusen un servidor QBCore estándar — y pulsa Apply for Job.You have been hired as …aparece y tu trabajo cambia.Envía una solicitud
Abre una oferta con chat — Police Officer por defecto — y pulsa Apply for Job o el icono del chat, y envía un mensaje.
Respóndela como jefe
Con un personaje que tenga un rango de jefe de ese trabajo, escribe
/jobchats. El solicitante aparece en la lista con un contador de no leídos: abre el hilo y responde, y el solicitante recibe una notificación.
Los cambios en
shared/config.luase aplican después derestart qs-jobcenter— y ese reinicio también borra todos los chats de solicitudes abiertos.



