Customization
What each item does is built in the menu and saved in the database. The files decide the rest: the command, the keys, how things are shown, and how the resource talks to your framework.
Which file decides what
Section titled “Which file decides what”| File | What it decides | Open? |
|---|---|---|
config.lua | Language, command, cancel key, placed-prop interaction, image path, progress bar | Yes |
bridge/client_bridge.lua | Notifications, health, armour, stress, food and thirst, item counts, jobs, target, progress bar | Yes |
bridge/server_bridge.lua | Framework detection, usable items, adding and removing items, jobs, notifications, the item list | Yes |
locales/*.lua | Every piece of text, in game and in the menu | Yes |
data/*.lua | The lists behind the menu’s pickers | Yes |
html/ | The menu (HTML, CSS, JS) | Readable |
client/, server/ | Item logic | Escrowed |
config.lua
Section titled “config.lua”| Option | What it does | Default |
|---|---|---|
Config.Locale | Language of the menu and the messages. See Languages | 'en' |
Config.Command | The command that opens and closes the menu | 'itemcreator' |
Config.CommandDescription | The name of that command in FiveM’s key bindings, where it can be given a key. It has none by default | 'Open Item Creator Menu' |
Config.CancelKey | Default key for cancelling what an item started. See below | 'X' |
Config.Interaction | How a placed prop is picked back up: 'drawtext', 'ox_target' or 'qb-target'. With either target value, the bridge uses whichever of ox_target or qb-target is running | 'drawtext' |
Config.ImageInventoryPath | Where the menu finds item pictures, as <path><item name>.png | 'nui://ox_inventory/web/images/' |
Config.ProgressBar | 'custom' for the built-in bar, 'ox_lib' for ox_lib’s. If ox_lib is not running, the built-in bar is used | 'custom' |
Not on ox_inventory? Set Config.ImageInventoryPath to your inventory’s image folder, for example nui://qb-inventory/html/images/.
Keys and commands
Section titled “Keys and commands”| Command | Default key | What it does |
|---|---|---|
/itemcreator | none | Opens or closes the menu. Needs ACE mic_itemcreator.open |
/cancelitemanim | Config.CancelKey (X) | Stops the animation, scenario or walking style an item started, resets speed, ends superpowers, and removes an attached prop |
While positioning an Attach Prop, these keys apply. Each one is listed in FiveM’s key bindings under a “Placement:” name, so players can move them:
| Key | Does |
|---|---|
| ← → ↑ ↓ | Move the prop left, right, forward, back |
| Page Up / Page Down | Move it up or down |
| Numpad 4 / 6 | Yaw |
| Numpad 8 / 5 | Pitch |
| Numpad 7 / 9 | Roll |
| X | Preview the animation |
| E | Confirm |
| Backspace | Cancel |
The data lists
Section titled “The data lists”Everything you can pick from a list in the menu comes from data/, and you can add to any of them:
| File | What it lists |
|---|---|
data/animations.lua | Animations |
data/scenarios.lua | Scenarios |
data/walkingstyles.lua | Walking styles |
data/bones.lua | Bones a prop can be attached to |
data/particles.lua | Particle effects |
data/screeneffects.lua | Screen effects |
data/sounds.lua | Sounds |
data/cars.lua | Cars, by label and model |
data/peds.lua | Ped models |
data/clothing.lua | The animations played when a clothing piece or prop is put on |
Keep each entry in the same shape as the ones around it. The menu reads these files when it opens; after editing, restart the resource.
Languages
Section titled “Languages”Nine files ship in locales/:
Config.Locale | Language |
|---|---|
en | English |
es | Spanish |
de | German |
fr | French |
it | Italian |
pt | Portuguese |
ru | Russian |
ch-zn | Chinese |
jp | Japanese |
The comment in config.lua also mentions tr and ch; neither exists. Use the codes above.
The same file translates the in-game messages and the menu, so there is only one place to edit.
Adding a language:
- Copy
locales/en.luato a new file, for examplelocales/pl.lua. - Inside it, change
Locales['en']to your code, and translate the text on the right of each line. Keep the keys and any%s. - Add the file to
shared_scriptsinfxmanifest.lua, abovelocales/lib.lua. - Set
Config.Localeto your code,refresh, and restart.
A missing key prints Translation key "…" not found in the console and shows the key itself on screen.
The bridge
Section titled “The bridge”Two open files in bridge/. Keep the function names — the rest of the resource calls them by name.
bridge/server_bridge.lua
| Function | What it is for |
|---|---|
| (detection) | Uses ESX if es_extended is started, otherwise QBCore if qb-core is started. QBox is found as qb-core, through its QBCore compatibility |
Bridge.RegisterUsableItem | Registers each configured item as usable with your framework |
Bridge.AddItem, Bridge.RemoveItem, Bridge.GetItemCount | Items: bundles, pick-ups, required items, Remove on Use |
Bridge.GetPlayerJob, Bridge.GetPlayerJobGrade | The job restriction |
Bridge.Notify | Server-side notifications |
Bridge.GetAllItems | The item list in the menu: from ox_inventory, then ESX’s registered items, then QBCore’s shared items |
bridge/client_bridge.lua
| Function | What it is for |
|---|---|
Bridge.Notify | Every notification. Falls back to the GTA feed with no framework |
Bridge.AddHealth, Bridge.AddArmor | Health/Armor |
Bridge.AddFoodThirst | Food/Thirst: esx_status on ESX; on QBCore the consumables:server:addHunger and addThirst events |
Bridge.AddStress | Stress: esx_status on ESX; consumables:server:addStress on QBCore |
Bridge.GetItemCount | Always Attached Prop: ox_inventory’s count if it runs, otherwise player data |
Bridge.AddTargetEntity | The pick-up option on a placed prop, for ox_target or qb-target |
Bridge.ProgressBar | Progress bars: ox_lib or the built-in one. There is a marked spot, with a commented example, to add another progress bar resource |
Your HUD uses different events for hunger, thirst or stress? Change them in Bridge.AddFoodThirst and Bridge.AddStress. Another notify resource? Replace the body of Bridge.Notify. Another framework or inventory? Fill in the same functions for it in both files.
Community network
Section titled “Community network”Network in the menu lists item configurations shared by other servers. Import asks which of your own items should receive that configuration, then opens it for you to adjust and save. To share one of yours, export it from your item list with a public name, a description and an author name — it becomes visible to every server using the network.
The list is downloaded from GitHub, so your server needs outbound internet access for it to fill.