Hepa DrawText - Modern Obsidian Glass UI
Upgrade your FiveM server’s visual interaction experience with Hepa DrawText, an ultra-responsive, sleek Obsidian Glassmorphism DrawText UI featuring dynamic orbiting neon border beams, soft stardust dissolves, and automatic tactile keycaps.
Preview & Showcase

Key Features
Modern Obsidian Glass UI: Dark translucent frosted glass aesthetic with oceanic navy base and hardware-accelerated 60 FPS rendering.
Animated Rotating Border Beam: Dynamic 360-degree cyan neon light beam continuously orbiting the card border.
Surface Shimmer Sweep: Subtle left-to-right light sweep reflection across the glass surface.
Automatic Keycap Parsing: Automatically detects bracketed keys (e.g. [E],[G],[ENTER],[ALT]) and converts them into tactile 3D glass keycaps.
Tactile Press & Soft Dissolve: Smooth haptic depth bounce and instantaneous GPU-accelerated fade when keys are pressed.
Multi-Position Support: Easily configure screen positions (left,right,top,bottom) per interaction.
1-Step QBCore Drop-in: Automatically upgrades all drawtexts across your entire server (shops, garages, jobs, banks) in seconds.
Zero Performance Cost: 0.00ms idle resmon, fully GPU-accelerated NUI.
Fully Configurable: Easily adjust positions, sound, theme colors, and debug commands in config.lua.
Commands
/testdrawtext [text] [position](e.g./testdrawtext [E] Open Vault right)/hidedrawtext
1-Step QBCore Drop-in (All Server Drawtexts)
Open qb-core/client/drawtext.lua and replace its functions:
local function hideText()
if GetResourceState('hepa-drawtext') == 'started' then
return exports['hepa-drawtext']:HideText()
end
SendNUIMessage({ action = 'HIDE_TEXT' })
end
local function drawText(text, position)
if GetResourceState('hepa-drawtext') == 'started' then
return exports['hepa-drawtext']:DrawText(text, position)
end
if type(position) ~= 'string' then position = 'left' end
SendNUIMessage({ action = 'DRAW_TEXT', data = { text = text, position = position } })
end
local function changeText(text, position)
if GetResourceState('hepa-drawtext') == 'started' then
return exports['hepa-drawtext']:ChangeText(text, position)
end
if type(position) ~= 'string' then position = 'left' end
SendNUIMessage({ action = 'CHANGE_TEXT', data = { text = text, position = position } })
end
local function keyPressed()
if GetResourceState('hepa-drawtext') == 'started' then
return exports['hepa-drawtext']:KeyPressed()
end
CreateThread(function()
SendNUIMessage({ action = 'KEY_PRESSED' })
Wait(500)
hideText()
end)
end
Download & Links (Free)
Download on Tebex (Free): Click Here for Tebex
Discord & Support: Join our Discord
Release Information
| Feature | Details |
|---|---|
| Code is accessible | Yes (config.lua, client, server & NUI) |
| Subscription-based | No (Free Community Release) |
| Lines (approximately) | ~350 |
| Requirements | Standalone / QBCore / ESX |
| Support | Yes (via Discord) |