Skip to Content

Exports

🧩
UI modules, chat hooks, and compatibility shims
The resource exposes the full UI suite, the integrated chat system, and compatibility exports for common radial/chat integrations.

1. Notify

Trigger detailed notifications with titles, icons, sounds, animations, and per-call positioning.

exports['mizu_interface']:Notify('This is a simple notification.')

2. Progress Bar

Handles animations, props, control locks, cancel keys, and completion callbacks.

exports['mizu_interface']:ProgressBar({ duration = 5000, label = 'Repairing Vehicle...', icon = 'wrench', type = 'success', canCancel = true, disable = { movement = true, car = true, mouse = false, combat = true, inventory = true }, animation = { animDict = 'veh@break_in@0h@p_m_one@', anim = 'low_force_entry_ds', flags = 16 }, prop = { model = 'prop_tool_wrench', bone = 28422, coords = vec3(0.0, 0.0, 0.0), rotation = vec3(0.0, 0.0, 0.0) }, propTwo = { model = 'prop_tool_spanner', bone = 60309, coords = vec3(0.0, 0.0, 0.0), rotation = vec3(0.0, 0.0, 0.0) }, onFinish = function(isCanceled) if not isCanceled then print('Repair complete!') end end, onCancel = function() print('Canceled!') end })

Both naming conventions work for control locks, for example movement and disableMovement.

Cancel Progress

exports['mizu_interface']:CancelProgress()

3. Text UI

The TextUI uses a dead-man switch and hides automatically if it is not refreshed within Config.TextUI.Timeout.

exports['mizu_interface']:TextUI('E', 'Interact') exports['mizu_interface']:TextUI('TAB', 'Open Trunk', 'info') exports['mizu_interface']:TextUI('G', 'Open Door', '#2ecc71', 'solid')

Hide Text UI

exports['mizu_interface']:HideTextUI()

4. Skill Check

A promise-based multi-round timing minigame that returns true or false.

local success = exports['mizu_interface']:SkillCheck('medium') if success then print('Passed!') else print('Failed.') end

Cancel Skill Check

exports['mizu_interface']:CancelSkillCheck()

5. Radial Hub

Open a nested SVG pie menu. Each slice can execute a client event, server event, command, or open another submenu.

exports['mizu_interface']:OpenRadialHub({ center = { icon = 'user-gear', title = 'ACTIONS' }, slices = { { icon = 'car', title = 'VEHICLE', type = 'info', items = { { icon = 'key', title = 'KEY', type = 'success', action = 'myresource:client:ToggleLock', actionType = 'client' }, { icon = 'power-off', title = 'ENGINE', type = 'warning', action = 'qb-vehiclekeys:client:ToggleEngine', actionType = 'client' } } }, { icon = 'box', title = 'INVENTORY', type = 'success', action = 'qb-inventory:client:openInventory', actionType = 'client' } } })

Close Radial Hub

exports['mizu_interface']:CloseRadialHub()

Radial Compatibility Stubs

These exist so scripts expecting qb-radialmenu style APIs do not hard-crash.

local id = exports['mizu_interface']:AddOption({ title = 'Example' }) exports['mizu_interface']:RemoveOption(id) exports['mizu_interface']:setupSubItems(id, {}) exports['mizu_interface']:setupAppItems('phone', {})

6. Context Menu

Use OpenContextMenu or the compatibility alias openMenu.

exports['mizu_interface']:OpenContextMenu({ title = 'Vehicle Actions', icon = 'fas fa-car', color = '#f39c12', theme = 'classic', position = 'right', items = { { title = 'Engine Toggle', description = 'Turn the engine on or off', icon = 'fas fa-power-off', action = 'myresource:client:ToggleEngine', actionType = 'client', shouldClose = true }, { title = 'Repair Preview', description = 'Read-only diagnostic entry', icon = 'fas fa-wrench', readOnly = true } } })
exports['mizu_interface']:openMenu({ title = 'Alias Call', items = { { title = 'Open Locker', action = 'myresource:openLocker', actionType = 'client' } } })

Close Context Menu

exports['mizu_interface']:CloseContextMenu()

7. Input Dialog

Returns submitted form data or nil when the dialog is closed.

local result = exports['mizu_interface']:Input({ header = 'Character Setup', color = '#3498db', icon = 'keyboard', inputs = { { type = 'text', name = 'firstname', label = 'First Name', required = true }, { type = 'number', name = 'age', label = 'Age', min = 18, max = 99 }, { type = 'select', name = 'origin', label = 'Origin', options = { 'Los Santos', 'Blaine County' } } } }) if result then print(json.encode(result)) end

8. NPC Dialog

Returns the selected value or nil.

local result = exports['mizu_interface']:Dialog({ npcName = 'Officer Vega', job = 'LSPD', icon = 'shield-halved', color = '#0984e3', interactionMethod = 'both', startNode = 'start', nodes = { start = { text = 'Need anything from dispatch?', options = { { label = 'Request backup', value = 'backup', type = 'close' }, { label = 'Open records', next = 'records' }, { label = 'Nothing', value = 'leave', type = 'close' } } }, records = { text = 'State your query.', options = { { label = 'Return', next = 'start' } } } } })

9. Action Panel

Use it for accept/decline confirmations, optional single-button flows, or timed warnings.

local choice = exports['mizu_interface']:ActionPanel({ title = 'Danger Zone', text = 'You are about to enter a lethal-force area.', icon = 'skull-crossbones', color = '#e74c3c', acceptLabel = 'Enter', declineLabel = 'Leave', position = 'top-center', autoAccept = false, duration = 5000 })

10. Chat Exports

The package includes a full chat replacement with its own export surface.

Send Chat Message

Client-side:

exports['mizu_interface']:SendChatMessage('server', 'System', 'Welcome to the server.', '#3498db')

Server-side:

exports['mizu_interface']:SendChatMessage('server', 'Server', 'Maintenance starts in 10 minutes.', '#e30909')

Suggestions

exports['mizu_interface']:AddChatSuggestion('/garage', 'Open your garage', { { name = 'id', help = 'Garage ID' } }) exports['mizu_interface']:RemoveChatSuggestion('/garage')

The lowercase alias used by many legacy resources is still available:

exports['mizu_interface']:addSuggestion('/garage', 'Open your garage', { { name = 'id', help = 'Garage ID' } })

Chat Window Control

exports['mizu_interface']:OpenChat('ooc', 'Hello there') exports['mizu_interface']:CloseChat() exports['mizu_interface']:ClearChat()

Mask State

local isMasked = exports['mizu_interface']:IsPlayerMasked()

Notes

  • openMenu is an alias of OpenContextMenu.
  • addSuggestion and IsPlayerMasked are runtime compatibility exports in code.
  • SendChatMessage exists on both client and server.
  • Radial compatibility exports are intentionally shallow stubs. They prevent crashes, but they do not dynamically rebuild the internal radial tree.
Last updated on