The current version is an beta release. Expect improvements, additions, and the occasional breaking change. Most updates will be minor, but be ready to adapt if a bigger change lands.
MIT licensed feel free to use it in commercial projects just dont claim you made the builder support honest development…
Normally? BOII Development UI Kit
When it’s working so well it feels like magic? BIG D*CK UI KUNG-FU
When it refuses to cooperate? Buggy Dumbass Useless Kit
Tired of learning front-end UI code? Now you don’t have to.
BDUK is a full front-end toolkit built for scripting UIs entirely from Lua.
No HTML, no CSS, no JavaScript knowledge required.
Think of a context menu resource — but bigger… a lot bigger.
Who’s It For?
People who can’t code UI — and don’t want to.
Script authors who’d rather build gameplay.
UI nerds (welcome too — but this one’s for the regular folks).
You. Because you’re done with context menus controlling everything.
Why Use BDUK?
No Bloat – Only includes what you actually use.
No Guesswork – Modals, buttons, tooltips — they just work.
Reusability – Build once, use everywhere.
Uniformity – Get a consistent look across all your scripts.
What’s Included?
Main UI Frame
Header – Branding, buttons, and maybe your nan’s cat.
Footer – Keybind hints, status rows, and other info.
Add the following line into your server.cfg file: ensure bduk.
Restart your server or press F8 and type refresh; ensure bduk and the resource will be started.
Configuration generally boils down to themes, you can modify the defaults or create your own.
License
This script is MIT licensed meaning you can do pretty much whatever you want with it.
Use it in your server, your commercial scripts, it doesn’t matter.
Just retain the original credit notes at the top of the files and your good to go
Support honest development — don’t be that guy.
Support
Need help? Found a bug? Need to vent about a bug that isn’t from this kit?
Join the BOII Dev Discord
Support Hours: 10am - 10pm, Monday - Friday (GMT)
We can’t guarantee instant replies, but we do our best.
Have spotted and fixed a couple issues, will push a v0.1.4 later today just finishing working on a script using it to see if I can spot any other bugs in the process.
Couple screenshots though of it in an actual script use case rather than just showing all the options
Most important change is on_click and on_keypress have now been unified under one handle on_action use this from now on
Any other bugs I spot will get fixed asap before moving to a full release, if anyone spots any give me a shout
Key
- Removed
! Modified
+ Added
# Notes
v0.1.4
! buttons/footer/tooltip.js: Unified `on_click` and `on_keypress` to one handle now use `on_action` instead for both.
! buttons.js: Modified global btn handler now returns the merged dataset from modals on click.
! tooltip.js: Fixed to call correct action, was calling old method.
! builder.js: Now removes modals properly when destroy() is called, stops modals from getting stuck on screen.
! test.lua: Removed action = "close_modal" from example code, isnt needed anymore any modal button without an action or on_action section will close modal.
! modal.js: Modified get_input_html() now merges additional dataset if provided.
! modal.css: Select options are now hidden by default as they should have been.
! buttons.css: Changed btn class to align items correctly if including icons.
! themes/default.css: Added slight opacity to default bg colours, makes the UI a little less dominant.
can run default test command to just view.
for actual use case you need to create a ui table, then setup some form of interaction that exports that ui through exports.bduk:build(your_ui) when interaction occurs for example accessing a ped through a target system? or just a simple drawtext setup “Press E to Open Store” etc
Few changes.
Main addition is the new DUI setup.
This is a rework of a system I’ve used in a couple paid scripts before now, can support multiple progress bars, value displays and keypress actions same as other on_action = function ... for custom functions. You can enable custom locking controls over the dui display by using can_access = function() ... end on any DUI entry.
- main.lua: Split into new files and put into scripts/ folder.
- scripts/builder.lua: removed ui_active flag isnt used anymore.
+ scripts/dui_sprite.lua: New script to handle DUI locations for the new dui element.
+ components/dui_sprite.js: New element to create DUI's in the game world refer to discord for previews docs coming asap.
+ css/dui_sprite.css: Style for dui, uses same default root theme palette.
! builder.js: Added close() function and moved remove nui post out of destroy() into close.
! builder.lua: Changed nui focus to fixed values instead of relying on IsNuiFocused() native.
# and some other stuff i forgot.. hence for the full replace.
This new element has not been documented yet, will do this as soon as possible.
For now I have left some test commands in test.lua you can use these as a guide.