Lo que falla con más frecuencia, qué significa realmente y cómo solucionarlo. La mayoría de los problemas se reducen al orden de carga, a un trabajo que falta en una lista de la configuración o a un valor de configuración que no coincide con ningún puente, así que empieza por la consola del servidor y la consola F8.
Instalación#
"The console will close because qs-dispatch changed its name!"
La carpeta del recurso no se llama qs-dispatch — por ejemplo, qs-dispatch-main o qs-dispatch (1). El servidor se cierra unos segundos después. Renombra la carpeta exactamente a qs-dispatch y actualiza la línea ensure.
"Table 'dispatch_...' doesn't exist"
El SQL no se importó, o se importó en otra base de datos. Importa sql/all.sql en la misma base de datos a la que apunta tu mysql_connection_string y luego reinicia. Un error cerca de Loaded … Camera objects o [AUTOCFG] al iniciar tiene la misma causa.
"No Default framework loaded, check the config.lua"
Config.Framework no es esx o qb. Restaura la detección automática, o define a mano uno de esos dos valores. Asegúrate de que tu framework se inicia con ensure antes que qs-dispatch en server.cfg.
"attempt to concatenate a nil value (local 'collate')"
El script busca tu tabla de usuarios para igualar su intercalación y no la encontró: el framework detectado es incorrecto. En ESX lee users, en QBCore players. Comprueba que el framework correcto se inicia antes que qs-dispatch, o fija Config.Framework.
"attempt to call a nil value (global 'CreateBill' / 'getBills' / 'SetRadioChannel' / 'GetPlayerHouses')"
Un valor de configuración no coincide con ningún archivo de puente, normalmente por un error tipográfico o un nombre no compatible:
CreateBill/getBills→Config.Billing.SetRadioChannel→Config.voice(pma-voiceosaltychat).GetPlayerHouses→Config.Housing.getCars/getVehsByPlate→Config.VehicleGarages.
Usa uno de los valores listados en Integraciones.
"Version check disabled because github is down."
No se pudo acceder a la comprobación de actualizaciones. Es inofensivo: el script funciona con normalidad. Normalmente significa que el servidor no tiene acceso a internet de salida o que GitHub no está disponible en ese momento.
Despacho y llamadas#
El panel no se abre, o se cierra solo
Se comprueban dos condiciones de forma continua, y si falla cualquiera se cierran todos los paneles:
El trabajo del jugador está en
Config.JobsAllowed— con el nombre exacto del trabajo, no su etiqueta.El jugador está en servicio. Escribe
/onduty; en QBCore, revisa también el estado de servicio propio del framework.
Las llamadas de un script nunca llegan
Revisa, en orden:
El trabajo del receptor está en el campo
jobde la llamada y enConfig.JobsAllowed, y está en servicio.callLocationes unvector3. Una tabla simple{ x = …, y = …, z = … }la ignora el cliente que la recibe.El nombre del evento es exactamente
qs-dispatch:server:CreateDispatchCall, disparado conTriggerServerEventdesde un cliente o conTriggerEventdesde el servidor.
La llamada llega pero sin blip — "BLIP BAD ARGUMENT (CHECK YOUR CONFIG)"
A la tabla blip de la llamada le falta sprite, scale, colour, text o time, o time no es un número. Ojo con la ortografía británica: colour, no color.
"call.otherData is not a table"
Un script envió otherData como una sola entrada o como texto. Debe ser una lista, incluso con una sola línea: otherData = { { text = 'Armed', icon = 'fas fa-gun' } }. La llamada se envía igualmente sin las líneas extra.
Las llamadas no tienen foto
Las fotos necesitan Config.AllowImages = true y un webhook de Discord que funcione en Config.DiscordWebHook. La consola F8 muestra "Webhook not configured" cuando está vacío. Si el webhook se borró en Discord, crea uno nuevo y pégalo.
"You dont have a configured webhook (police)" en cada llamada
Los webhooks del registro de llamadas en server/custom/events/onCallEvent.lua están vacíos. Pega una URL en PoliceWebhookURL y AmbulanceWebhookURL, o borra las líneas de aviso si no quieres registros en Discord. No afecta al despacho.
Las unidades no se mueven entre canales de radio
Config.Dispatch.EnabledRadiosdebe sertrueyConfig.voicedebe coincidir con tu recurso de voz.El trabajo necesita su propia entrada en
Config.Dispatch. Sin ella, la consola muestraOnDispatcherUpdate listname is nil.Puede que la unidad haya desactivado su icono de radio en el panel, lo que detiene los movimientos automáticos para ella.
Una unidad no aparece en el mapa o no tiene blip
Su trabajo necesita una entrada en Config.JobsBlips con show = true, y el trabajo de quien mira debe incluirlo en showJobs para ver a otro departamento. En servidores grandes, hace falta OneSync Infinity para las unidades lejanas.
MDT#
/openmdt no hace nada, o muestra "You need use the MDT Item"
Con
Config.NeedItemForMDT = true, solo el ítem abre el MDT.El trabajo necesita una entrada en
Config.MDT.JobsAllowedToMDT, y el rango del jugador debe estar en sugradesAllowedToEdit— por número o por nombre de rango.El jugador debe estar en servicio.
Usar el ítem del MDT no hace nada
El ítem debe existir en tu inventario con el mismo nombre que Config.MDTItemName y estar marcado como usable. Consulta Instalación para cada inventario.
"attempt to index a nil value" al buscar incidentes o perfiles
El trabajo del jugador que usa el MDT no tiene entrada en Config.MDT.JobsAllowedToMDT — normalmente, un trabajo abrió el MDT mediante el ítem. Añade una entrada para ese trabajo.
Las facturas están vacías, o la pestaña de facturas da error
Config.Billing debe coincidir con el script de facturación que realmente usas. Con jim-payments la consola avisa de que no es totalmente compatible: pon Config.showBillsInMDT = false. Sin script de facturación, ponlo también en false.
Faltan los vehículos o las casas de un ciudadano
Los vehículos se leen de Config.vehiclesTable; si tu script de garaje los guarda en otra tabla, cámbialo. Las casas necesitan qs-housing o qb-houses iniciado antes que qs-dispatch. Comprueba también que CanViewVehicles y CanViewHouses están activados para ese trabajo.
Falta un cargo en el código penal
Dos cargos comparten el mismo id en config/jobsdata.lua, y solo se conserva el primero; la consola F8 avisa de ello. Dale a cada cargo un id único. Comprueba también que el libro incluye el trabajo del jugador en jobs.
Cárcel, cámaras y bodycams#
Pulsar E en el punto de ingreso no envía a nadie a prisión
Solo se envía a los sospechosos con cargos asignados desde el MDT y a menos de 5 metros. Los cargos con 0 de tiempo de cárcel (como la lista de servicios de EMS) nunca encarcelan a nadie. El trabajo del agente debe estar en Config.Penitencial.JobsAllowedToSendToJail para poder ver el marcador.
Los ítems ilegales no se quitan — "Server Cant Remove Ilegal Items, Inventory System is None"
Config.InventorySystem es none. Ponlo en tu inventario. Los nombres de los ítems en IlegalItems deben coincidir exactamente con los nombres de tu inventario.
/createcameras muestra "not allowed"
Al jugador le falta uno de los dos aces. La consola del servidor muestra una línea add_ace sugerida; añade tanto command.createcameras como dispatch.createCameras como se indica en Instalación y luego reinicia el servidor.
Conectarse a una cámara CCTV expulsa o marca al jugador
Tu anticheat ve la cámara como una freecam. Con Fiveguard, pon en Config.FiveguardName el nombre exacto de su carpeta para que se conceda la excepción. La consola muestra Failed to set permissions cuando el nombre es incorrecto. Otros anticheats necesitan una excepción de freecam para qs-dispatch.
"Canot use bodycam, your not in whitelisted zone to view bodycams"
O el trabajo de quien mira no está en Config.DispatchBodyCamZones.jobsAllowed, o needIsInZone está activado y está fuera de todas las zonas de bodycam.
Los radares de velocidad nunca multan a nadie
El conductor debe entrar en la zona más rápido que el primer limitFrom de sus velocityRanges — en km/h, o en MPH con useMph. Su trabajo no debe estar en ignoredjobs, y autoBill debe estar activado. Las multas pasan por Config.Billing salvo que sendDirectTheBill esté desactivado.
DLC Outlaw Alert#
No se reportan los tiroteos
A menudo es por diseño: sin peatones alrededor y sin una cámara cerca, nadie llama. Para probar, pon Config.DebugChance = true. Comprueba también que el trabajo de quien dispara no está en Config.PoliceJobs, que el arma no tiene silenciador ni está en la lista negra, y que no estás dentro de una esfera ZonesWithNoCall.
G no hace nada al estar derribado
El DLC no vio morir al jugador. Escucha esx:onPlayerDeath en ESX y hospital:client:SetDeathStatus en QBCore. Con otro script de muerte, dispara uno de esos o edita client/death.lua.
Mensajes de consola#
Los mensajes con el prefijo [QS-Dispatch] [Debug Server] solo aparecen con Config.Debug = true; déjalo desactivado en un servidor en producción, ralentiza el script.
Mensaje | Significado |
|---|---|
| Inicio normal en ESX (o QBCore). |
| Normal. La tabla del MDT se igualó a tu tabla de usuarios. |
| Normal. Se cargaron N cámaras CCTV. |
| Existe una versión más reciente. Descárgala desde el CFX Portal. |
| Se pidió mover por radio a un jugador que ya se fue. Inofensivo. |
| No está activo un puente que proporcione ese callback: revisa |
¿Sigues atascado? Abre un ticket en el Discord de Quasar Store e incluye el orden de carga de tu
server.cfg, tu framework, los valores deConfig.InventorySystem,Config.BillingyConfig.voice, y el error completo de la consola del servidor o de F8.



