Un sistema de TextUI moderno, optimizado y completamente personalizable para FiveM, compatible con qb-core, ESX y modo standalone.
- Coloca la carpeta
DP-TextUIen tu directorioresources/ - Añade
ensure DP-TextUIen tuserver.cfg - Reinicia tu servidor
Requisitos:
- FiveM (Recomendado: versión más reciente)
- qb-core o ESX (opcional para modo standalone)
✅ Sistema de posicionamiento mejorado: Ahora los elementos se reorganizan automáticamente sin superposiciones
✅ Animaciones fluidas: Transiciones suaves al mostrar/ocultar elementos
✅ Gestión de memoria optimizada: Eliminación limpia de elementos sin artefactos visuales
✅ Soporte para múltiples instancias: Hasta 10 TextUI simultáneos con espaciado automático
✅ Compatibilidad mejorada: Funciona perfectamente con todos los frameworks principales
✔️ Sistema de IDs único para múltiples TextUI
✔️ Soporte para acciones mantenidas con barra de progreso animada
✔️ Posicionamiento automático y dinámico de múltiples elementos
✔️ Compatibilidad total con qb-core y ESX (incluye adaptador de reemplazo)
✔️ Efectos visuales profesionales (pulsaciones, sombras, transiciones)
✔️ Sistema de depuración integrado (Config.Debug = true)
- Verifica que el recurso esté iniciado y se llama 'DP-TextUI' (Si cambias el nombre puede dejar de funcionar).
- Revisa la consola F8 para errores.
- Asegúrate de usar IDs únicos.
- Habilita Config.Debug = true para diagnóstico. ¡Listo para implementar! 🎉
- Sección de Novedades: Destaca las mejoras que hemos implementado
- Ejemplos más completos: Incluyendo el manejo de múltiples TextUI.
- Código listo para usar: Ejemplos copiables directamente.
- Organización visual: Secciones bien diferenciadas.
- Solución completa: Incluye adaptador para reemplazar qb-core totalmente.
- Enfoque práctico: Explicaciones concisas con ejemplos reales.
-- Mostrar texto simple
exports['DP-TextUI']:MostrarUI('menu_principal', 'Para abrir el menú', 'E', false)
-- Ocultar específico
exports['DP-TextUI']:OcultarUI('menu_principal')
-- Ocultar todos los TextUI
exports['DP-TextUI']:OcultarUI()
-- Manejar finalización Ejemplo simple
local holdCompleted = false
-- Evento cuando se completa la acción de mantener presionado
AddEventHandler('DP-TextUI:ActionCompleted', function(id)
if id == "textui_test3" then
holdCompleted = true
QBCore.Functions.Notify('¡Puedes soltar ahora!', 'success', 5000)
end
end)local inZone = false
local activeTexts = {}
CreateThread(function()
local coords = vector3(120.0, -200.0, 30.0)
while true do
local playerCoords = GetEntityCoords(PlayerPedId())
local distance = #(playerCoords - coords)
local waitTime = 1000
if distance < 3.0 then
waitTime = 0
if not inZone then
-- Mostrar múltiples TextUI
exports['DP-TextUI']:MostrarUI('npc_tienda', 'Hablar con vendedor', 'E', false)
exports['DP-TextUI']:MostrarUI('npc_robar', 'Forzar cerradura', 'F', true, 3000)
activeTexts = {'npc_tienda', 'npc_robar'}
inZone = true
end
elseif inZone then
-- Ocultar todos limpiamente
for _, id in ipairs(activeTexts) do
exports['DP-TextUI']:OcultarUI(id)
end
activeTexts = {}
inZone = false
end
Wait(waitTime)
end
end)-- Mostrar
exports['qb-core']:DrawText('Presiona [E] para abrir', 'left')
-- Ocultar
exports['qb-core']:HideText()
-- O mediante eventos
TriggerEvent('qb-core:client:DrawText', 'Texto', 'left')
TriggerEvent('qb-core:client:HideText')-- Mostrar (equivalente básico)
exports['DP-TextUI']:MostrarUI('ejemplo_id', 'Texto de ejemplo', 'E', false)
-- Ocultar (equivalente)
exports['DP-TextUI']:OcultarUI('ejemplo_id')
-- Versión mejorada con más opciones
exports['DP-TextUI']:MostrarUI('menu_avanzado', 'Menú avanzado', 'F', true, 2000)-- Reemplazar DrawText/HideText globalmente
RegisterNetEvent('qb-core:client:DrawText')
AddEventHandler('qb-core:client:DrawText', function(text, position)
exports['DP-TextUI']:MostrarUI('qbcomp_'..math.random(1000,9999), text, 'E', false)
end)
RegisterNetEvent('qb-core:client:HideText')
AddEventHandler('qb-core:client:HideText', function()
exports['DP-TextUI']:OcultarUI()
end)
-- Para exports directos
local originalDrawText = exports['qb-core'].DrawText
local originalHideText = exports['qb-core'].HideText
exports('DrawText', function(text, position)
exports['DP-TextUI']:MostrarUI('qb_text_'..math.random(100,999), text, 'E', false)
end)
exports('HideText', function()
exports['DP-TextUI']:OcultarUI()
end)