Comandos#
Los cinco primeros nombres se definen en Config.Commands; los comandos de ciudadanos están en client/custom/misc/commands.lua. Los comandos del dispatch y del MDT solo funcionan de servicio y con un trabajo permitido.
Comando | Quién | Descripción |
|---|---|---|
| Trabajos permitidos | Abre el panel del dispatch. |
| Trabajos permitidos | Muestra la ventana pequeña de llamadas. |
| Trabajos permitidos | Te permite arrastrar la ventana pequeña a otro lugar. |
| Trabajos permitidos | Desactiva o activa el radar de velocidad del vehículo. |
| Trabajos y rangos del MDT | Abre el MDT. Desactivado cuando |
| Todos | Entrar o salir de servicio para el dispatch. |
| Todos | Una llamada al 911 a la policía con una foto. Espera de 20 segundos. |
| Todos | Una llamada a EMS. |
| Todos | Una llamada a los mecánicos. |
| Todos | Una llamada a los taxistas. |
| Todos | Una PANIC CALL parpadeante a la policía, que se mantiene cinco minutos. |
| Administradores (ace) | Abre el creador de cámaras CCTV. Requiere |
| Jugadores caídos | Envía la señal de socorro. Asignado a G. Solo con el Outlaw Alert DLC. |
Teclas#
Todas las teclas se registran en FiveM, así que cada jugador puede cambiarlas en Settings → Key Bindings → FiveM. Solo responden estando de servicio.
Predeterminada | Config | Hace |
|---|---|---|
L |
| Abrir el panel del dispatch. |
K |
| Mostrar el dispatch pequeño. |
U |
| Mover el dispatch pequeño. |
← / → |
| Llamada anterior y siguiente en el dispatch pequeño. |
G |
| Responder a la llamada mostrada, o dejar de responder. |
E |
| Enviar a prisión a los sospechosos acusados cercanos, en un punto de fichaje. |
Exports de cliente#
Para enviar alertas, controlar el servicio desde otro script o abrir el MDT desde un prop de tablet o un menú radial. Los 35 exports de alertas listos para usar se enumeran en Crear llamada de despacho.
GetPlayerInfo — la posición y el vehículo del jugador
local info = exports['qs-dispatch']:GetPlayerInfo()
-- info.coords, info.street_1, info.street_2, info.sex,
-- info.vehicle, info.vehicle_label, info.vehicle_colour, info.vehicle_plate,
-- info.speed, info.doorCount, info.ped, info.networkEntityIdCada campo se describe en Crear llamada de despacho.
getSSURL — tomar una foto para una llamada
exports['qs-dispatch']:getSSURL(function(url)
-- url is the uploaded screenshot, or nil
end)Captura la pantalla del jugador y la sube a Config.DiscordWebHook. Devuelve nil cuando Config.AllowImages está desactivado o no hay ningún webhook definido. No hace falta ningún recurso de capturas extra.
ToggleDuty y GetIsOnDuty — el servicio desde otro script
exports['qs-dispatch']:ToggleDuty(true) -- on duty
exports['qs-dispatch']:ToggleDuty(false) -- off duty
if exports['qs-dispatch']:GetIsOnDuty() then
-- ...
endLlama a ToggleDuty desde tu script de servicio o de fichaje para que el dispatch lo siga.
Abrir el MDT desde otro script
-- the current MDT, skipping the job check (like the item does)
TriggerEvent('qs-dispatch:client:OpenMdt')
-- the classic MDT (Config.MDT.newMdt = false)
exports['qs-dispatch']:TogleMdt(true)TogleMdt se escribe con una sola g.
addCustomPage — añade tu propia sección al MDT
Añade una entrada a la barra lateral del MDT que muestra cualquier página web dentro del MDT — tu propia NUI de otro recurso, o un sitio externo.
exports['qs-dispatch']:addCustomPage({
title = 'Evidence', -- the sidebar label
image = 'https://example.com/evidence-icon.png', -- the sidebar icon
ui = 'https://cfx-nui-my-evidence/web/index.html', -- the page shown
})Los tres campos son obligatorios; el export devuelve true cuando se añade la página. Llámalo en el cliente después de que se inicie qs-dispatch.
Exports de servidor#
GetPlayerInfo y GetSSURL — los datos de un jugador desde el servidor
Los mismos datos que los exports de cliente, leídos de un jugador concreto. Ambos esperan al cliente de ese jugador, así que ejecútalos en un thread.
CreateThread(function()
exports['qs-dispatch']:GetPlayerInfo(playerId, function(info)
print(info.street_1, info.vehicle_plate)
end)
exports['qs-dispatch']:GetSSURL(playerId, function(url)
print(url)
end)
end)SendWebhook — publicar un embed en Discord
exports['qs-dispatch']:SendWebhook(
'https://discord.com/api/webhooks/...', -- webhook URL
'Sheriff Call', -- title
'#c28a00', -- colour, as a hex string
'A message for the log', -- description
imageUrl -- optional picture
)Lo usa onCallEvent.lua para los logs de llamadas; reutilízalo para los tuyos.
Eventos#
Eventos que pueden usar otros recursos:
Evento | Lado | Qué hace |
|---|---|---|
| Servidor | Crea una llamada de despacho. Datos en Crear llamada de despacho. |
| Cliente | Abre el MDT, igual que al usar el ítem. |
| Cliente | Elimina una llamada por id, o todas las llamadas con |
| Cliente | Reproduce el flash del radar de velocidad en la pantalla del jugador — útil para momentos de "captado por la cámara". |
| Cliente | Cierra la pantalla de la prisión y reproduce la escena de liberación. Para liberar a alguien correctamente, usa el MDT, que además limpia la base de datos. |
Hook de servidor: OnCallEvent#
Cada llamada creada en el servidor ejecuta OnCallEvent en server/custom/events/onCallEvent.lua. Edítalo para reaccionar a las llamadas — logs, mensajes de teléfono, estadísticas:
function OnCallEvent(job, callLocation, callCode, message, flashes, image, callId)
if Contains(job, 'sheriff') then
exports['qs-dispatch']:SendWebhook(SheriffWebhookURL, 'Sheriff Call', '#c28a00', message, image)
end
endjob puede ser una cadena o una lista, por eso el ejemplo usa Contains.



