Documentación de Multiempleo con rueda
ov_multijob
Multiempleo para servidores qb-core con una rueda radial: el jugador guarda varios trabajos a la vez y cambia entre ellos manteniendo una tecla, sin pasar por ninguna oficina.
Que hace
ov_multijob guarda una lista de trabajos por personaje (con el grado que tiene en cada uno) y la muestra en una rueda que se abre en el centro de la pantalla, parecida a la rueda de armas de GTA.
- Mantener la tecla (por defecto
J) abre la rueda; mover el mouse elige un sector y soltar la tecla confirma el cambio. - Un toque rapido a la tecla, o el comando
/trabajos, deja la rueda abierta para elegir con clic. - El centro de la rueda muestra el trabajo actual, su grado y si el jugador esta en servicio o fuera de servicio; un clic en el centro ficha entrada o salida.
- El sector "Sin empleo" (civil) permite volver a ser civil sin perder los demas trabajos y nunca ocupa un espacio de la lista.
- Desde un panel de gestion el jugador puede renunciar a un trabajo de su lista (con confirmacion).
- Limite de trabajos por jugador configurable (los administradores no tienen limite), con proteccion anti-spam en el servidor.
- Marca los trabajos con whitelist en la interfaz y permite definir cuales no se pueden fichar desde la rueda (por ejemplo policia y ambulancia).
- Incluye exports para que otros scripts (paneles de jefe, por ejemplo) lean y modifiquen la lista de trabajos.
- Es compatible con scripts que llamaban a
sbr-multijobops-multijob, porque el recurso se declara conprovidede ambos nombres y conserva la misma tablamultijobs.
La rueda no agrega trabajos por si sola: un trabajo entra en la lista cuando el jugador lo obtiene por la via normal (contratacion, jefe de la empresa, /setjob, otro script que llame a SetJob). La rueda solo permite alternar entre los que ya tiene.
Requisitos
- Servidor FiveM con framework qb-core.
- Recursos declarados en
dependenciesdelfxmanifest.lua:qb-coreyoxmysql. - Lua 5.4 (el manifest declara
lua54 'yes'). - Base de datos MySQL o MariaDB, accedida con
oxmysql. - El recurso no usa
ox_lib,ox_inventoryni otros recursos externos (solo exports deqb-core). - Los trabajos que aparecen en la rueda son los que existan en
QBCore.Shared.Jobsde tu servidor.
Instalacion
El recurso viene protegido con Asset Escrow de Cfx.re: se descarga desde el Portal de Cfx.re con la cuenta Cfx.re con la que hiciste la compra y solo funciona en los servidores de esa cuenta. Segun su fxmanifest.lua, quedan sin cifrar (editables) shared/config.lua, shared/locale.lua y toda la carpeta web/ (la interfaz).
- Descarga el recurso desde el Portal de Cfx.re (seccion de assets comprados) y copia la carpeta
ov_multijobdentro deresources/de tu servidor. - Importa el archivo
sql/multijobs.sqlen tu base de datos. El recurso no crea la tabla por si solo; el script crea la tablamultijobscon las columnascitizenidyjobdata. Si ya usabassbr-multijobops-multijob, la tabla ya existe con el mismo formato y no hay nada que migrar. - Si tienes instalado otro multiempleo (
sbr-multijob,ps-multijob), retira su carpeta deresources/antes de arrancar este, porqueov_multijobocupa esos mismos nombres conprovide. - Agrega en
server.cfg, despues deqb-coreyoxmysql: ``ensure oxmysql ensure qb-core ensure ov_multijob`` - Reinicia el servidor. No se requieren convars ni permisos ACE adicionales.
Configuracion
Todo se edita en shared/config.lua. Los textos de la interfaz estan en shared/locale.lua y los iconos SVG en web/index.html.
| Clave | Valor por defecto | Para que sirve |
|---|---|---|
Config.Key | 'J' | Tecla por defecto de la rueda (el jugador puede cambiarla en Ajustes > Teclas > FiveM). |
Config.Command | 'trabajos' | Comando que abre la rueda sin mantener tecla. |
Config.TapToStickMs | 220 | Si se suelta la tecla antes de estos milisegundos, la rueda queda abierta. |
Config.MaxJobs | 5 | Trabajos guardados por jugador (los admins no tienen limite). |
Config.CivilJob | 'unemployed' | Trabajo civil al que siempre se puede volver. |
Config.ShowCivil | true | Muestra el sector civil en la rueda. |
Config.IgnoredJobs | unemployed | Trabajos que nunca se guardan en la lista ni ocupan espacio. |
Config.DenyDuty | ambulance, police | Trabajos que no se fichan desde la rueda (tienen su propio puesto de servicio). |
Config.WhitelistJobs | police, ambulance, mechanic, mechanic2, mechanic3, bennys, judge, lawyer | Trabajos marcados como whitelist en la interfaz. |
Config.AllowQuitWhitelist | true | Si es false, no se puede renunciar a un trabajo con whitelist desde la rueda. |
Config.Cooldown | 350 | Milisegundos minimos entre dos acciones del mismo jugador. |
Config.RateWindow | 10000 | Ventana (ms) del limitador de acciones. |
Config.RateMax | 12 | Acciones permitidas dentro de esa ventana. |
Config.Descriptions | tabla por trabajo | Subtexto que se muestra bajo cada trabajo. |
Config.Icons | tabla por trabajo | Icono de cada trabajo (ids del set SVG de web/index.html; sin entrada usa generic). |
Para agregar un trabajo propio con descripcion e icono, anade su nombre (el de QBCore.Shared.Jobs) en Config.Descriptions y Config.Icons.
Comandos y permisos
Para jugadores
| Comando / tecla | Efecto |
|---|---|
Mantener J | Abre la rueda; al soltar se confirma el sector elegido. |
/trabajos | Abre la rueda en modo "clic para elegir" (el nombre se cambia con Config.Command). |
/jobmenu | Alias del comando del multiempleo anterior; hace lo mismo. |
Para administradores (permiso admin de qb-core)
| Comando | Efecto |
|---|---|
/addjob [id] [trabajo] [grado] | Agrega un trabajo a la lista del jugador. Valida que el trabajo y el grado existan en QBCore.Shared.Jobs. |
/removejob [id] [trabajo] | Quita un trabajo de la lista del jugador. |
Exports del servidor
exports['ov_multijob']:GetJobs(citizenid)devuelve la tabla{ trabajo = grado }.AddJob(citizenid, job, grade),RemoveJob(citizenid, job)yUpdateJobRank(citizenid, job, grade)modifican la lista (funcionan tambien con jugadores desconectados).getEmployees(jobName)devuelve los personajes que tienen ese trabajo y su grado.- Tambien responden los nombres
sbr-multijobyps-multijobpara scripts antiguos.
Exports del cliente: OpenWheel() abre la rueda y CloseWheel() la cierra.
Eventos de compatibilidad (solo servidor): ov_multijob:server:removeJob, sbr-multijob:server:removeJob y ps-multijob:server:removeJob reciben un citizenid y borran la fila completa de ese jugador. El servidor tambien registra el callback ps-multijob:getJobs y el evento ps-multijob:changeJob para scripts que los usaban.
Como se usa
- Entra al servidor con tu personaje; la lista de trabajos se carga sola.
- Mantén pulsada
J: la rueda aparece en el centro de la pantalla con un sector por cada trabajo guardado mas el de "Sin empleo". - Mueve el mouse hacia el sector que quieras y suelta la tecla para cambiar (tambien puedes confirmar con clic).
- Para fichar, haz clic en el centro de la rueda. Policia y ambulancia no se fichan aqui, y el trabajo civil no tiene fichaje.
- Si prefieres no mantener la tecla, da un toque rapido a
Jo escribe/trabajos: la rueda queda abierta y eliges con clic. - Para renunciar, abre la rueda, usa el clic derecho sobre el trabajo para entrar al panel "Gestionar trabajos", pulsa Renunciar y luego Confirmar. Si el trabajo tiene whitelist, el panel avisa de que no se podra volver a entrar por cuenta propia.
- Si renuncias a tu trabajo activo, pasas al primero de tu lista por orden alfabetico; si no queda ninguno, quedas sin empleo.
La rueda se cierra sola si se abre el menu de pausa o el personaje muere, y mientras esta abierta bloquea el disparo y el apuntado. Tambien admite el stick izquierdo del mando para elegir sector.
Para administradores
- Dar un trabajo a un jugador: usa el flujo normal de tu servidor (
/setjob, panel de jefe, etc.) o/addjob. Cuando un trabajo se asigna por cualquier via de qb-core,ov_multijoblo agrega a la lista del jugador si hay espacio; si el jugador ya lo tenia, solo actualiza el grado aunque la lista este llena. - Quitar un trabajo:
/removejob [id] [trabajo]. Si era el trabajo activo, el jugador pasa al siguiente de su lista o al civil. - Cambiar el limite: edita
Config.MaxJobs. Los administradores (permisoadmin) no tienen limite. - Trabajos con whitelist: agrega o quita nombres en
Config.WhitelistJobs. Estos trabajos solo se marcan como whitelist en la interfaz; la entrada sigue dependiendo de quien los asigne. - Evitar que un trabajo se ficha desde la rueda: agregalo a
Config.DenyDuty. - Datos guardados: tabla
multijobs, dondejobdataes un JSON{"trabajo": grado}porcitizenid. - Ver errores: revisa la consola del servidor (errores de SQL aparecen con el prefijo de
oxmysql) y la consola F8 del cliente.
Preguntas frecuentes
Es compatible con mi multiempleo actual (sbr-multijob o ps-multijob)? Si, usa la misma tabla multijobs y el mismo formato, asi que los jugadores conservan su lista. Debes retirar la carpeta del script anterior, porque ov_multijob ocupa sus nombres con provide.
El recurso crea la tabla de la base de datos? No. Importa sql/multijobs.sql una sola vez. Si la tabla ya existe de otro multiempleo, no hace falta.
Como cambio el numero maximo de trabajos? Edita Config.MaxJobs en shared/config.lua y reinicia el recurso.
Un trabajo de mi servidor no aparece en la rueda. Solo se muestran los trabajos que existen en QBCore.Shared.Jobs y que el jugador tiene guardados. Si el jugador lo obtuvo cuando su lista estaba llena, no se agrego; liberale un espacio o usa /addjob.
Por que no puedo fichar siendo policia desde la rueda? Porque esta en Config.DenyDuty; ese trabajo se ficha en su propio puesto de servicio. Puedes cambiarlo en el config.
Puedo traducir o cambiar los textos? Si, los textos estan en shared/locale.lua y la interfaz en web/, ambos sin cifrar.
Actualizaciones y soporte
Las versiones nuevas aparecen en el Portal de Cfx.re y en la tienda; descarga siempre la version mas reciente y conserva tus cambios en shared/config.lua antes de reemplazar la carpeta. Para soporte, abre un ticket en el Discord de la tienda: [enlace de soporte]. Al reportar un problema indica la version del recurso (1.0.0 en el manifest actual), tu version de qb-core y el error que aparece en la consola.
