[FREE] [Standalone/QBCore] Hepa DrawText - Modern & Interactive Obsidian Glass UI

:gem_stone: 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.


:clapper_board: Preview & Showcase

hepa-drawtext


:sparkles: Key Features

  • :gem_stone: Modern Obsidian Glass UI: Dark translucent frosted glass aesthetic with oceanic navy base and hardware-accelerated 60 FPS rendering.
  • :cyclone: Animated Rotating Border Beam: Dynamic 360-degree cyan neon light beam continuously orbiting the card border.
  • :ocean: Surface Shimmer Sweep: Subtle left-to-right light sweep reflection across the glass surface.
  • :keyboard: Automatic Keycap Parsing: Automatically detects bracketed keys (e.g. [E], [G], [ENTER], [ALT]) and converts them into tactile 3D glass keycaps.
  • :collision: Tactile Press & Soft Dissolve: Smooth haptic depth bounce and instantaneous GPU-accelerated fade when keys are pressed.
  • :bullseye: Multi-Position Support: Easily configure screen positions (left, right, top, bottom) per interaction.
  • :counterclockwise_arrows_button: 1-Step QBCore Drop-in: Automatically upgrades all drawtexts across your entire server (shops, garages, jobs, banks) in seconds.
  • :high_voltage: Zero Performance Cost: 0.00ms idle resmon, fully GPU-accelerated NUI.
  • :gear: Fully Configurable: Easily adjust positions, sound, theme colors, and debug commands in config.lua.

:video_game: Commands

  • /testdrawtext [text] [position] (e.g. /testdrawtext [E] Open Vault right)
  • /hidedrawtext

:rocket: 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

:shopping_cart: Download & Links (Free)


:clipboard: 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)
3 Likes

nice work :heart:

1 Like

That made me very happy—thank you so much