Antes de empezar#
Antes de instalar Text UI, asegúrate de que tu servidor cumple los requisitos. Nada es obligatorio aparte del propio recurso: no hay base de datos, ni archivo SQL, ni librería que instalar.
Requisito | Estado | Notas |
|---|---|---|
Clave del servidor | Obligatorio | Text UI es un recurso con escrow. La clave del servidor debe generarse con la misma cuenta de CFX que lo compró. |
Framework | Opcional | ESX, QBCore o Qbox — detectado automáticamente. Solo se necesita para mostrar un aviso a un único trabajo. Todo lo demás funciona en standalone. |
El framework se elige según lo que ya está en ejecución:
Recurso iniciado | Framework usado |
|---|---|
| ESX |
| QBCore (Qbox pasa por su compatibilidad con QBCore) |
Ninguno de ellos | Standalone |
No tienes que eliminar
esx_textuini el DrawText de QBCore. Text UI funciona junto a ellos, e Integraciones muestra cómo dirigirlos a Text UI para que todos los scripts del servidor compartan los mismos avisos.
Descargar Text UI#
Tras comprar Text UI, el recurso se vincula automáticamente a tu cuenta de CFX Portal.
Inicia sesión en CFX Portal con la misma cuenta que usaste al finalizar la compra, abre Granted Assets y descarga Text UI.
Tras extraer la descarga, deberías tener la siguiente carpeta:
qs-textui/
├── shared/config.lua -- every setting (editable)
├── client/custom/framework/ -- framework bridges (editable)
├── client/ -- the prompt logic
├── server/ -- the version check
└── web/dist/ -- the interface, ready to useLa carpeta debe llamarse
qs-textui. Todos los demás scripts la llaman comoexports['qs-textui'], así que no encuentran una copia renombrada.
Instalar el recurso#
Mueve la carpeta qs-textui al directorio de recursos de tu servidor. Puede estar en cualquier lugar dentro de él, incluida una carpeta de categoría:
resources/
└── [qs]/
└── qs-textui/Después abre tu server.cfg e inícialo después de tu framework y antes de todos los scripts que lo usan:
# Framework (optional)
ensure es_extended
# ensure qb-core
# ensure qbx_core
ensure qs-textui
# Scripts that show prompts come after
ensure my-shops
ensure my-garagesEl orden de carga importa. El framework se detecta cuando Text UI se inicia, así que un framework iniciado después no se encuentra y los filtros de trabajo dejan de funcionar. Un script que crea sus avisos al iniciarse también debe ir después de Text UI, o el export aún no existe.
Configurar el recurso#
Todos los ajustes están en un archivo. Los bridges del framework también están abiertos, para servidores que leen el trabajo del jugador de otra forma.
Archivo | Contenido |
|---|---|
| La tecla y la posición en pantalla predeterminadas, los colores, el estilo Cyberpunk, los avisos colocados en el mundo, la detección del framework y la depuración. |
| Cómo se lee el trabajo del jugador en ESX. |
| Cómo se lee el trabajo del jugador en QBCore y Qbox. |
Los valores que conviene revisar primero:
Config = {
DefaultKey = {
Enable = true,
Key = 'E' -- key shown when a script does not pass one
},
Areas = { ... } -- prompts placed in the world, see Usage
}
Config.DefaultAlign = 'center-right' -- where the on-screen prompt sits
Config.CyberpunkTextUI = {
enabled = false, -- true for the Cyberpunk 2077 dialogue style
speaker = 'INTERACT',
showKey = true,
align = 'center-left'
}
Config.Debug = false -- extra lines in the F8 consoleEl
Config.Areasincluido contiene algunos avisos de ejemplo en Grove Street que solo imprimen en la consola. Elimínalos, o sustitúyelos por los tuyos, antes de ponerlo en producción. Cada campo se explica en Uso.
Verificar la instalación#
Tras completar la instalación, reinicia tu servidor y busca la línea de versión en la consola del servidor:
You are using the latest version of qs-textui!New version available indica qué cambió y la versión que hay que descargar desde CFX Portal. API is not available solo significa que no se pudo realizar la comprobación de actualizaciones; Text UI funciona con normalidad.
Después prueba los dos tipos de aviso desde cualquier script de cliente tuyo:
Mostrar un aviso en pantalla
Escribe
/textuitesten el chat. El aviso entra deslizándose por la derecha de la pantalla y se va tres segundos después.lua RegisterCommand('textuitest', function() exports['qs-textui']:displayTextUI('Open the garage', 'E') Wait(3000) exports['qs-textui']:hideTextUI() end)Fijar un aviso 3D
Escribe
/textui3dy aléjate. A ocho metros ves un marcador donde estabas; a menos de dos metros se convierte en la etiqueta, y al pulsar E se imprime en la consola F8.lua RegisterCommand('textui3d', function() exports['qs-textui']:create3DTextUI('textui_test', { coords = GetEntityCoords(PlayerPedId()), displayDist = 8.0, interactDist = 2.0, enableKeyClick = true, keyNum = 38, key = 'E', text = 'Test ~g~prompt', triggerData = { triggerName = 'textui:test', args = {} } }) end) AddEventHandler('textui:test', function() print('Text UI works') end)
Los avisos creados por tus scripts cambian en vivo:
changeTextyupdate3DTextUIcambian el texto en su sitio. Los cambios enshared/config.luarequieren reiniciarqs-textui.



