Lo que falla con más frecuencia en Text UI, lo que significa realmente y qué hacer al respecto. Mientras investigas, activa Config.Debug = true en shared/config.lua y mantén abierta la consola F8: ahí aparecen los errores de Lua del cliente.
Instalación#
"Failed to verify protected resource" o "You lack the required entitlement"
La clave del servidor pertenece a una cuenta de CFX distinta de la que compró Text UI, o los archivos protegidos se modificaron o se volvieron a subir por FTP en modo texto. Descárgalo de nuevo desde Granted Assets con la cuenta que hizo la compra, súbelo en modo binario y usa una clave del servidor generada por esa misma cuenta.
"No such export displayTextUI in resource qs-textui"
El script que llama al export se inició antes que Text UI, o Text UI no está en ejecución. Mueve ensure qs-textui por encima de todos los scripts que lo usan, comprueba que la carpeta se llama exactamente qs-textui, y busca más arriba en la consola del servidor el motivo por el que no se inició.
"API is not available. Unable to check the version."
Solo falló la comprobación de actualizaciones: el servidor no pudo conectar con GitHub. Text UI funciona con normalidad y el mensaje se puede ignorar.
"attempt to call a nil value (global 'GetJobName')"
Un aviso tiene un job distinto de 'all', pero no se detectó ningún framework. O tu framework se inicia después de Text UI — muévelo por encima de ensure qs-textui — o el servidor es standalone y el aviso necesita job = 'all'. Un framework con otro nombre de recurso se puede añadir como se muestra en Integraciones.
Avisos#
Un aviso 3D nunca se muestra
Revisa esto en orden:
No tiene
displayDist. Sin él, el aviso se omite; con debug activado, la consola imprimeNo displayDist.Su
jobno es el trabajo de tu personaje, o sucanInteractdevuelvefalse.El id ya estaba en uso. Un segundo
create3DTextUIcon el mismo id se ignora, así que se mantienen las coordenadas y los ajustes del primero.La coordenada está bajo el suelo o dentro de una pared, así que nunca aparece en pantalla. Sube
zmedio metro.Otro script tiene abierto el cursor del ratón: un inventario o un menú. Los avisos se ocultan hasta que se cierra, por diseño.
Pulsar la tecla no hace nada
El aviso tiene un
keypero no unkeyNum.keyes solo la etiqueta;keyNumes el control que se escucha.Hay otra opción seleccionada. Con varios avisos al alcance solo responde el resaltado: usa las flechas.
En un aviso sobre un jugador, falta
enableKeyClick. Ahí debe sertrue.El nombre del evento en
triggerDataes incorrecto, o el evento es del lado del servidor yisServerno estrue.Los avisos en pantalla de
displayTextUInunca gestionan una tecla: tu script comprueba la tecla por su cuenta.
"attempt to concatenate a nil value (field 'key')", y todos los avisos dejan de funcionar
Se creó un aviso 3D sin key. Cada aviso necesita una etiqueta de tecla, también uno solo visual, así que pasa key = 'E' o cualquier etiqueta, y luego reinicia qs-textui. Si viene de un script antiguo a través de DrawText3D, usa el wrapper, que rellena una tecla.
Los avisos desaparecieron tras reiniciar qs-textui
Los avisos creados mediante exports viven en la memoria de Text UI, y un reinicio los borra. Reinicia también los scripts que los crean, o haz que vuelvan a crear sus avisos cuando Text UI se inicie; consulta Cuando qs-textui se reinicia.
Los avisos desaparecen mientras hay un inventario, teléfono o menú abierto
Es el comportamiento correcto. Siempre que otro script tiene el cursor del ratón, Text UI se oculta para no tapar esa ventana, y vuelve cuando se cierra. Lo mismo ocurre en el menú de pausa y durante los fundidos de pantalla.
Las etiquetas de DrawText3D siguen en pantalla al alejarse
El script llama a drawText3D directamente y nunca elimina la etiqueta. Usa el wrapper completo, que elimina la etiqueta unos fotogramas después de que el script deje de dibujarla, o llama tú a DeleteDrawText3D.
Dos etiquetas saltan entre lugares, o una reemplaza a la otra
Comparten un id. Cada aviso necesita el suyo: añádele el número de la puerta, el nombre de la tienda o la entidad: 'door_' .. doorId.
El texto muestra ~g~ o ~r~ en lugar de colores
Los códigos de color de GTA se admiten desde la versión 1.2.27. Comprueba la versión en fxmanifest.lua y descarga la última desde CFX Portal.
El aviso en pantalla está en el lugar equivocado
Una posición que no es uno de los nueve nombres vuelve a Config.DefaultAlign — left o right de QBCore, por ejemplo. Usa los nombres indicados en Posición en pantalla, o la equivalencia de Integraciones. En el estilo Cyberpunk, el diálogo se sitúa en Config.CyberpunkTextUI.align salvo que el script elija otra.
Los cambios en la configuración no hacen nada
shared/config.lua se lee cuando qs-textui se inicia. Reinícialo tras cada cambio, y después reinicia los scripts que crean avisos mediante exports, porque el reinicio los borra.
¿Sigues atascado? Abre un ticket e incluye tu versión de Text UI (de
fxmanifest.lua), tu framework, la salida de la consola F8 conConfig.Debug = true, y el código que crea el aviso.



