Configuración de trabajo de policía en FiveM: grados, turno, armería y conteo de policías
Cómo configurar un trabajo de policía en un servidor FiveM: trabajo y grados, toggle de turno, armería con tienda y escondite, esposas y escolta, comprobaciones de conteo de policías, MDT y despacho.
El síntoma: agregaste un trabajo de policía, pero nadie puede entrar en turno, la armería está abierta para todos, o los robos dicen "no hay policías suficientes" mientras tres oficiales están en línea.
Un trabajo de policía que funciona es un puñado de pequeñas partes que tienen que estar de acuerdo en una cosa: el nombre del trabajo y quién está en turno. Este artículo recorre cada parte y dónde usualmente se rompe.
El trabajo y sus grados
El trabajo es una fila de datos: un nombre, una etiqueta y una lista de grados (cadete, oficial, sargento, jefe). El número de grado es lo que compruebas más tarde, así que decide el orden primero y mantenlo. Cómo crear el trabajo en cada framework está cubierto en añadiendo un trabajo en ESX y añadiendo un trabajo en QBCore. En QBox el trabajo vive en los datos compartidos de qbx_core en lugar de un archivo qb-core.
Dos reglas que ahorran dolor:
- Usa un nombre interno en todas partes, por ejemplo
police. Cada script que dice "solo policía" compara contra esa cadena. - Da al grado del jefe la bandera que tu framework usa para jefes, así los menús de sociedad y gestión funcionen.
El toggle de turno
Ser un oficial de policía y estar en turno no son lo mismo. Los robos, despacho y sueldos solo deben contar oficiales en turno.
- QBCore y QBox mantienen un campo
ondutyen el trabajo, y un toggle lo cambia. Un trabajo puede configurarse para comenzar en turno o fuera de turno por defecto. - ESX no tiene campo de turno en el trabajo base. Muchas configuraciones usan un segundo trabajo fuera de turno, o una bandera que tu recurso de policía mantiene, así que comprueba cómo lo hace el tuyo antes de escribir cualquier conteo.
Sea cual sea el framework, el toggle debe ejecutarse en el servidor, y el servidor decide el valor. Un evento del cliente que dice "estoy en turno" sin comprobación es un exploit.
La armería: tienda o escondite
No distribuyas armas de un evento del cliente. Usa las herramientas de tu propio inventario. Con ox_inventory puedes restringir una tienda o un escondite a un trabajo y un grado mínimo, que es la armería más limpia:
-- shop entry (in the ox_inventory shops data)
PoliceArmory = {
name = 'Police Armory',
groups = { police = 0 }, -- job name and minimum grade
inventory = {
{ name = 'radio', price = 0 },
{ name = 'handcuffs', price = 0 },
},
locations = { vec3(452.6, -980.0, 30.7) },
}Un escondite funciona de la misma manera para armarios de evidencia y almacenamiento compartido. Ver tiendas ox_inventory y escondites ox_inventory. Mantén los nombres groups y la comprobación de grado igual que tu nombre de trabajo, o la armería permanece bloqueada para todos.
Esposas y escolta
Esposas es un conjunto de pequeñas piezas, no una característica:
- El oficial juega una animación y el servidor comprueba que el objetivo está cerca y que el oficial tiene el trabajo.
- El objetivo obtiene un estado de esposas, una animación de esposas y controles deshabilitados (sin disparar, sin correr, sin entrar en vehículos por su cuenta).
- La escolta adjunta el objetivo al oficial, o lo sigue, hasta que se suelta.
Mantén la bandera de esposas como una state bag así cada cliente la ve, y así los jugadores que se transmiten más tarde también la ven. Comprueba distancia y trabajo en el servidor, la forma que asegurar eventos de servidor describe. Recuerda limpiar la bandera cuando el jugador se suelte, muera o se vaya.
Conteo de policías para robos
Los robos, asaltos y algunos trabajos de drogas preguntan "cuántos oficiales están en turno". La respuesta debe venir del servidor:
-- ESX (server)
local function policeOnline()
local count = 0
for _, xPlayer in pairs(ESX.GetExtendedPlayers('job', 'police')) do
count += 1
end
return count
end-- QBCore (server)
local function policeOnline()
local count = 0
for _, player in pairs(QBCore.Functions.GetQBPlayers()) do
local job = player.PlayerData.job
if job.name == 'police' and job.onduty then
count += 1
end
end
return count
endEn QBox, versiones recientes de qbx_core también envían exports de conteo de turno, así que comprueba su documentación antes de escribir tu propio bucle. Si usas un par de trabajo fuera de turno en ESX, cuenta solo el nombre en turno.
Siempre cuenta en el servidor, y cuenta de nuevo cuando comienza el robo, no solo cuando el jugador se acerca. Ver scripts de robo para el flujo completo.
MDT y despacho son separados
El trabajo de policía te da un trabajo y un conteo. Estos son usualmente otros recursos:
- MDT: registros, órdenes, ciudadanos y búsqueda de vehículos.
- Despacho: llamadas 911, blips de alerta, estado del oficial.
- Evidencia e impugnación: a menudo sus propios scripts de nuevo.
Comprueba la configuración de cada uno para el nombre del trabajo. Un despacho que nunca muestra alertas es casi siempre configurado para un nombre de trabajo diferente al que creaste.
Checklist
| Síntoma | Solución |
|---|---|
| Armería abierta para todos | Añade el nombre del trabajo y un grado mínimo a los groups de tienda o escondite |
| Armería bloqueada para oficiales | El nombre del trabajo en la armería no coincide con el nombre del trabajo que creaste |
| El robo dice sin policías, oficiales en línea | Cuenta solo oficiales en turno, con el nombre exacto del trabajo, en el servidor |
| El despacho no muestra alertas | Establece el nombre del trabajo de policía en la configuración de despacho |
| El jugador permanece con esposas después de la liberación | Limpia el estado de esposas al liberar, morir y desconectarse |
| Cualquiera puede entrar en turno | Haz el toggle en el servidor y comprueba el trabajo primero |
Respuestas rápidas
¿Cómo cuento los oficiales de policía en línea?
En el servidor, itera sobre los jugadores conectados y cuenta los cuyo trabajo sea tu trabajo de policía y estén en turno. Hazlo en el servidor, nunca en el cliente, porque robos y asaltos confían en ese número.
¿Un trabajo de policía incluye un MDT y despacho?
Normalmente no. El trabajo en sí es solo el trabajo, grados, turno y una armería. El MDT (registros, órdenes) y el despacho (llamadas, blips) son recursos separados que leen el trabajo del jugador.
¿Dónde les doy armas a los policías?
Ponlas en una armería: una tienda de inventario o un escondite restringido al trabajo de policía y a un grado mínimo. No des armas de un evento del cliente.

