SCRIPT

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.

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

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).

  1. Descarga el recurso desde el Portal de Cfx.re (seccion de assets comprados) y copia la carpeta ov_multijob dentro de resources/ de tu servidor.
  2. Importa el archivo sql/multijobs.sql en tu base de datos. El recurso no crea la tabla por si solo; el script crea la tabla multijobs con las columnas citizenid y jobdata. Si ya usabas sbr-multijob o ps-multijob, la tabla ya existe con el mismo formato y no hay nada que migrar.
  3. Si tienes instalado otro multiempleo (sbr-multijob, ps-multijob), retira su carpeta de resources/ antes de arrancar este, porque ov_multijob ocupa esos mismos nombres con provide.
  4. Agrega en server.cfg, despues de qb-core y oxmysql: `` ensure oxmysql ensure qb-core ensure ov_multijob ``
  5. 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.

ClaveValor por defectoPara 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.TapToStickMs220Si se suelta la tecla antes de estos milisegundos, la rueda queda abierta.
Config.MaxJobs5Trabajos guardados por jugador (los admins no tienen limite).
Config.CivilJob'unemployed'Trabajo civil al que siempre se puede volver.
Config.ShowCiviltrueMuestra el sector civil en la rueda.
Config.IgnoredJobsunemployedTrabajos que nunca se guardan en la lista ni ocupan espacio.
Config.DenyDutyambulance, policeTrabajos que no se fichan desde la rueda (tienen su propio puesto de servicio).
Config.WhitelistJobspolice, ambulance, mechanic, mechanic2, mechanic3, bennys, judge, lawyerTrabajos marcados como whitelist en la interfaz.
Config.AllowQuitWhitelisttrueSi es false, no se puede renunciar a un trabajo con whitelist desde la rueda.
Config.Cooldown350Milisegundos minimos entre dos acciones del mismo jugador.
Config.RateWindow10000Ventana (ms) del limitador de acciones.
Config.RateMax12Acciones permitidas dentro de esa ventana.
Config.Descriptionstabla por trabajoSubtexto que se muestra bajo cada trabajo.
Config.Iconstabla por trabajoIcono 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 / teclaEfecto
Mantener JAbre la rueda; al soltar se confirma el sector elegido.
/trabajosAbre la rueda en modo "clic para elegir" (el nombre se cambia con Config.Command).
/jobmenuAlias del comando del multiempleo anterior; hace lo mismo.

Para administradores (permiso admin de qb-core)

ComandoEfecto
/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 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

  1. Entra al servidor con tu personaje; la lista de trabajos se carga sola.
  2. 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".
  3. Mueve el mouse hacia el sector que quieras y suelta la tecla para cambiar (tambien puedes confirmar con clic).
  4. Para fichar, haz clic en el centro de la rueda. Policia y ambulancia no se fichan aqui, y el trabajo civil no tiene fichaje.
  5. Si prefieres no mantener la tecla, da un toque rapido a J o escribe /trabajos: la rueda queda abierta y eliges con clic.
  6. 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.
  7. 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

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.