F5 StudioF5 Studio
Skip to main content

Items

F5 Board ships with nine board variants. Each one is a usable inventory item (CreateUseableItem) that triggers placement when used. The script will also fall back to opening the catalog through /board when Config.Command.requireItem = false.

Item List

Item nameInventory labelProp modelWeight (g)Icon file
corkboardCork Boardprop_cork_board1500corkboard.png
chalkboardChalkboardprop_muster_wboard_011800chalkboard.png
chalkboard_standChalkboard (Standing)prop_muster_wboard_022400chalkboardstand.png
planning_standPlanning Board (Stand)p_planning_board_012200planningboardstand.png
planning_boardPlanning Boardp_planning_board_021600planningboard.png
planning_board_v2Planning Board v2p_planning_board_031600planningboard.png
whiteboardWhiteboardprop_w_board_blank_21700whiteboard.png
greyboardGrey Boardprop_w_board_blank1700greyboardstand.png
brownboardBrown Boardprop_b_board_blank1700brownboard.png

All nine icons live in f5_board/items/icons/.

Step 1 — Copy Item Icons

Copy every PNG from f5_board/items/icons/ into your inventory's image folder. Filename must match exactly (lowercase).

InventoryIcons folder
qb-inventoryqb-inventory/html/images/
ox_inventoryox_inventory/web/images/
qs-inventoryqs-inventory/html/images/
tgiann-inventorytgiann-inventory/html/items/
codem-inventorycodem-inventory/html/itemimages/
ps-inventoryps-inventory/html/images/
ESX native(no icon folder required)

Step 2 — Register the Items

Open f5_board/items/QbCore.txt. Pick one method:

Method A — paste into qb-core/shared/items.lua

Paste the entries inside the QBShared.Items = { … } table.

qb-core/shared/items.lua
['corkboard'] = {
name = 'corkboard',
label = 'Cork Board',
weight = 1500,
type = 'item',
image = 'corkboard.png',
unique = false,
useable = true,
shouldClose = true,
combinable = nil,
description = 'Classic cork board — pin notes, photos and strings.'
},
-- ... (eight more entries — see the full file)

Then restart qb-core:

restart qb-core

Method B — runtime registration

Drop this snippet into any server-side .lua in a resource that runs after qb-core (e.g. your own server resource). No qb-core edits.

CreateThread(function()
while GetResourceState('qb-core') ~= 'started' do Wait(100) end

exports['qb-core']:AddItems({
['corkboard'] = { name='corkboard', label='Cork Board', weight=1500, type='item', image='corkboard.png', unique=false, useable=true, shouldClose=true, combinable=nil, description='Classic cork board — pin notes, photos and strings.' },
['chalkboard'] = { name='chalkboard', label='Chalkboard', weight=1800, type='item', image='chalkboard.png', unique=false, useable=true, shouldClose=true, combinable=nil, description='Wall-mounted chalkboard for quick notes and sketches.' },
['chalkboard_stand'] = { name='chalkboard_stand', label='Chalkboard (Standing)', weight=2400, type='item', image='chalkboardstand.png', unique=false, useable=true, shouldClose=true, combinable=nil, description='Freestanding chalkboard on a wooden frame.' },
['planning_stand'] = { name='planning_stand', label='Planning Board (Stand)', weight=2200, type='item', image='planningboardstand.png', unique=false, useable=true, shouldClose=true, combinable=nil, description='Mobile planning board on a tripod stand.' },
['planning_board'] = { name='planning_board', label='Planning Board', weight=1600, type='item', image='planningboard.png', unique=false, useable=true, shouldClose=true, combinable=nil, description='Wall planning board for projects and briefings.' },
['planning_board_v2'] = { name='planning_board_v2', label='Planning Board v2', weight=1600, type='item', image='planningboard.png', unique=false, useable=true, shouldClose=true, combinable=nil, description='Alternate wall planning board variant.' },
['whiteboard'] = { name='whiteboard', label='Whiteboard', weight=1700, type='item', image='whiteboard.png', unique=false, useable=true, shouldClose=true, combinable=nil, description='Dry-erase whiteboard for meetings and operations.' },
['greyboard'] = { name='greyboard', label='Grey Board', weight=1700, type='item', image='greyboardstand.png', unique=false, useable=true, shouldClose=true, combinable=nil, description='Industrial grey planning board.' },
['brownboard'] = { name='brownboard', label='Brown Board', weight=1700, type='item', image='brownboard.png', unique=false, useable=true, shouldClose=true, combinable=nil, description='Vintage brown wooden notice board.' },
})
end)

Step 3 — Restart and Test

Give yourself an item to verify it works:

giveitem <serverId> corkboard 1

Use the item from your inventory — the placement mode should open.

Customizing Items

Renaming an item

If you want a different inventory item to trigger the same prop:

  1. Change the item field in Config.Boards:
config/config.lua
Config.Boards = {
{ model = 'prop_cork_board', item = 'detective_board', label = 'ui_board_cork' },
-- ...
}
  1. Register the new item name in your inventory (Step 2 above), using the same icon and a label of your choice.
  2. The locale display name (ui_board_cork) stays the same — change it in locales/<code>.lua if you want a different in-game label.

Adding a new board variant

To add a tenth board prop:

  1. Append a new entry to Config.Boards:
config/config.lua
{ model = 'my_custom_board_prop', item = 'custom_board', label = 'ui_board_custom' }
  1. Add a surface geometry entry to Config.PropModels. The four numbers below are placeholders — to obtain real values for your prop, run the companion tool f5_board_calibrate and export the snippet:
config/config.lua
my_custom_board_prop = {
surfaceForward = 0.020,
surfaceUp = 0.000,
surfaceWidth = 2.50,
surfaceHeight = 1.80,
},
  1. Register the custom_board item in your inventory.
  2. Add the ui_board_custom locale key to every locales/<code>.lua file you support.
  3. Drop an icon my_custom_board_prop.png into f5_board/nui/imgs/ (used by the catalog grid).

Removing a board variant

Simply delete the entry from Config.Boards — no other cleanup needed. The corresponding inventory item, if registered, just stops doing anything when used.

See Also

  • Installation — installation flow including item registration
  • Configuration — full Config.Boards and Config.PropModels reference
  • Commands/board with item-gated mode (requireItem = true)