Las dos ventanas#
Job Center tiene dos interfaces, una para quienes buscan trabajo y otra para quienes contratan:
Ventana | Se abre con | Para qué sirve |
|---|---|---|
El Job Center | El empleado — la opción de target o | Todos. Explora las ofertas, postúlate, chatea con los empleadores y marca un punto de ruta. |
El panel de jefe |
| Jugadores cuyo trabajo y grado actuales figuran como jefes. Leen y responden las solicitudes. |
Ambas se cierran con ESC o la ✕ de la esquina superior.
El Job Center#
La cabecera muestra un recuento en vivo de active jobs: los jugadores conectados ahora mismo que trabajan en uno de los trabajos ofertados. La barra lateral empieza con All Jobs y luego muestra cada categoría; al elegir una, se filtran las tarjetas.
Una tarjeta muestra la imagen de la oferta con su insignia de estado y su icono, el título, la descripción y el salario. Una insignia roja en una tarjeta cuenta los mensajes que ese empleador le ha enviado al jugador. Haz clic en una tarjeta para ver los detalles:
Parte | Qué muestra |
|---|---|
Cabecera | Título, empresa e icono — más un botón de chat cuando la oferta tiene |
Description · Salary | El texto propio de la oferta. |
Requirements · Benefits | Una línea por entrada. |
Work Location | El nombre del lugar de trabajo. |
Apply for Job | Depende de la oferta — consulta Postularse a un trabajo más abajo. |
Set Waypoint | Coloca un punto de ruta GPS en el lugar de trabajo y confirma |
Postularse a un trabajo#
El applyType de cada oferta decide qué hace Apply for Job:
applyType | Qué ocurre | Requisitos |
|---|---|---|
| Se contrata al jugador al instante, con el grado | La clave de la oferta debe ser un trabajo que tu framework conozca. |
| Se abre el chat con ese empleador. |
|
| La dirección se abre en el navegador web del jugador — una invitación de Discord, un formulario de solicitud. |
|
| Sin botón de postulación: la oferta informa y marca un punto de ruta. Para actividades en las que no hace falta contratar a nadie. | — |
hasChatbox y applyType son independientes: un trabajo instantáneo puede mostrar igualmente el botón de chat, para que el jugador pregunte antes de aceptarlo. Real Estate Agent y Tow Truck Operator vienen así de serie.
El servidor comprueba el tipo. Una contratación instantánea solicitada para una oferta que no es
"instant"se trata como un exploit, y el jugador es expulsado conAttempted to exploit job hiring system.
El chat#
Cada jugador tiene una conversación por oferta. El solicitante escribe desde el Job Center; los jefes de ese trabajo leen y responden desde el panel de jefe.
En vivo en ambas direcciones. Se notifica a todos los jefes conectados —
New message in <job> (n unread)— y el hilo se actualiza en su panel. Se notifica al solicitante conNew reply from <job> (n unread)y la respuesta aparece en su chat abierto.Los solicitantes desconectados se ponen al día. Una respuesta enviada mientras el solicitante no está se le anuncia en su siguiente inicio de sesión, y la tarjeta lleva una insignia hasta que abre el chat.
Anti-spam. Cinco segundos entre mensajes, por remitente. La ventana muestra
Please wait before sending another messagey el servidor ignora todo lo que llegue más rápido.Nombres. Los jugadores conectados aparecen con el nombre de su personaje. Un solicitante desconectado aparece como
Applicantmás el inicio de su identificador; un jefe desconectado aparece comoBoss.
Los chats viven en la memoria del servidor. Reiniciar el recurso o el servidor los borra — consulta La base de datos.
El panel de jefe#
Se abre con /jobchats (Config.BossCommand) o usando la tablet de jefe (Config.BossItem). Cada uno tiene su propio interruptor, Config.UseBossCommand y Config.UseBossItem.
Lista a los solicitantes del trabajo que tienes, bajo el título de ese trabajo: su nombre, el inicio de su último mensaje y, mientras no esté leído, el número de mensajes. Haz clic en uno para abrir el hilo — se marca como leído para ti, y cada jefe mantiene su propio estado de lectura.
La ✕ de un solicitante cierra la solicitud: el hilo se elimina para ambas partes, y ese jugador puede volver a postularse desde cero.
Quién es jefe#
bossGrades de cada oferta indica los grados que pueden abrir el panel de ese trabajo:
bossGrades = {3, 4} -- grades 3 and 4 of this job, and nobody elseEs una lista exacta, no un mínimo.
{3}no deja entrar al grado 4. Incluye cada grado que deba tener acceso.Solo cuenta el trabajo actual. Un jugador con otro trabajo — o con este trabajo en otro grado — recibe
You don't have access to this commanddel comando yYou can't use this itemde la tablet.Los grados se numeran como los numera tu framework. ESX y QBCore cuentan desde
0, el rango más bajo.
Escribir una oferta#
Cada oferta es una entrada en Config.Jobs, en shared/config.lua. La clave es el nombre del trabajo en tu framework — el nombre que asigna una contratación instantánea, y el nombre con el que se compara el trabajo de un jugador para el acceso de jefe.
Config.Jobs = {
police = { -- the framework's job name
title = 'Police Officer',
company = 'Los Santos Police Department',
icon = 'fas fa-shield-alt',
image = 'https://images.unsplash.com/photo-1568515387631-8b650bbcdb90?w=600&h=300&fit=crop',
salary = '$4,500 - $6,200',
status = 'High Demand',
category = 'emergency', -- a key of Config.JobCategories
description = 'Maintain law and order throughout the city.',
requirements = { 'Clean criminal record', "Valid driver's license" },
benefits = { 'Pension plan', 'Health insurance' },
location = 'Mission Row Police Station',
coords = vector3(428.23, -984.28, 30.71),
hasChatbox = true,
bossGrades = {3, 4},
applyType = 'chatbox', -- 'instant' · 'chatbox' · 'link' · 'hobby'
-- applyLink = 'https://discord.gg/yourserver', -- for 'link'
},
}Campo | Qué es |
|---|---|
| El título del trabajo en la tarjeta, en la cabecera del chat y en las notificaciones. |
| El empleador, bajo el título en los detalles. |
| Una clase gratuita de Font Awesome 6, como |
| Un enlace directo |
| Texto libre: la línea del salario y la insignia de la imagen — High Demand, Commission Based, Now Hiring. |
| La clave de una categoría en |
| La presentación, en la tarjeta y en los detalles. |
| Listas de líneas. |
| El nombre del lugar de trabajo, y el |
| Muestra el botón de chat, y es obligatorio para las solicitudes |
| Los grados que gestionan el panel de jefe de este trabajo. |
| Cómo se comporta Apply for Job, y la dirección para |
El texto de una oferta se muestra exactamente como está escrito — no se traduce mediante locales/. Escribe tus ofertas en el idioma de tu servidor.
Categorías#
Config.JobCategories = {
emergency = { label = 'Emergency Services', icon = 'fas fa-ambulance' },
business = { label = 'Business & Finance', icon = 'fas fa-building' },
-- the key is what a listing's category points to
}Vienen diez de serie — emergency, business, transport, service, entertainment, industrial, legal, medical, criminal y food. Una categoría sin ofertas muestra No jobs available in this category.
Qué viene de serie#
24 ofertas, listas para editar o eliminar:
Categoría | Ofertas (clave) |
|---|---|
Emergency Services | Police Officer ( |
Business & Finance | Bank Manager ( |
Transport & Logistics | Commercial Pilot ( |
Public Services | Auto Mechanic ( |
Entertainment & Media | News Reporter ( |
Industrial & Labor | Commercial Fisherman ( |
Legal & Government | Attorney ( |
Healthcare | Medical Doctor ( |
Underground | Product Distributor ( |
Food & Hospitality | Bartender ( |
Haz coincidir las claves con tu framework. El paramédico viene como
emsy el taxista comotaxidriver, mientras que ESX y QBCore estándar llaman a esos trabajosambulanceytaxi. Una clave que tu framework no conoce sigue apareciendo en el Job Center, pero no puede contratar a nadie y nadie es su jefe.
El empleado y el blip#
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',
}
Config.JobCenterBlip = {
enabled = true,
coords = vector3(-268.95, -956.13, 31.22), -- keep it on the clerk
sprite = 407,
color = 3,
scale = 0.8,
name = 'Job Center',
shortRange = true, -- on the radar only when nearby
}El empleado está congelado en su sitio, no puede recibir daño e ignora lo que ocurre a su alrededor. Toma coords donde esté un jugador — los pies del empleado quedan un metro por debajo de z — y usa el cuarto valor para orientarlo hacia la calle. label es el texto de la opción de target y del aviso.
El blip tiene sus propias coords: mueve ambos cuando muevas al empleado, o establece enabled = false para que el Job Center no aparezca en el mapa.



