⚙️Installation Guide
Step by step instructions to install this resource
Install (or update) dependencies and optional
Verify all dependencies below are started before this script in your server.cfg.
Required
oxmysql
Database driver for player data, ranking, and match history. Download oxmysql
Framework
One of: qb-core, qbx_core (QBox), es_extended (ESX Legacy)
Inventory
One of: ox_inventory, qb-inventory, qs-inventory
Optional
ox_lib
Enhanced notifications. Download ox_lib
ox_target or qb-target
Target-based board interaction (alternative to DrawText)
Install cDev_Axethrowing and create a new subfolder or extract folder to server's root
Install resource from Portal
After installing, you should get a zip file with the name shown below.
cdev_axethrowing.pack.zip
If you haven’t already, create a new subfolder named [cdev] in your server’s root resources directory. Unzip (extract) this script into the newly created [cdev] subfolder.

Add ACE permission
Open your server.cfg and add the following ACE permission:
add_ace group.admin cdev_axethrowing.admin allowor
add_ace identifier.license:xxxxxxxxxxxx cdev_axethrowing.admin allowImportant: If you are on the Qbox framework, the recommended place to paste the above permission is inside the permissions.cfg file instead of server.cfg.
Update server.cfg & perform a full restart
Once all other steps are completed, open your server.cfg & add ensure cdev_axethrowing to the very bottom of your resource start list (after oxmysql, your framework, inventory, and target if used). Finally, perform a full server restart. Failure to perform a full restart after installation will cause errors.

Note: Once completed, use the command /axethrowing place in-game to place the target, or use the axethrowing target item to place a target and play!
Add the inventory items (target + hatchet)
Item names must match AxeThrowingConfig.Item.Target.name and AxeThrowingConfig.Item.Hatchet.name in public/shared/config.lua (defaults: axe_throwing_target and axe_throwing_hatchet). If you rename them in config, rename the items here too.
Location: ox_inventory → data → items.lua
Open
resources/[ox]/ox_inventory/data/items.luaAdd both items inside the return table:
['axe_throwing_target'] = {
label = 'Axe Throwing Target',
weight = 5000,
stack = false,
close = true,
consume = 0,
description = 'Place on a wall to open an axe throwing lane. Pick up with your pickup key when allowed.',
server = {
export = 'cdev_axethrowing.useAxeThrowingTarget',
},
},
['axe_throwing_hatchet'] = {
label = 'Throwing Hatchet',
weight = 1200,
stack = false,
close = true,
consume = 0,
description = 'Required to throw when the server configures hatchet checks.',
server = {
export = 'cdev_axethrowing.useAxeThrowingHatchet',
},
},Add images
axe_throwing_target.pngandaxe_throwing_hatchet.pngto your inventory images folder (e.g.ox_inventory/web/images/).Save and full restart the server.
Ox uses server exports cdev_axethrowing.useAxeThrowingTarget and cdev_axethrowing.useAxeThrowingHatchet — these are registered by this resource (server/classes/itemuse.lua).
Location (typical): qb-core → shared → items.lua (or your inventory’s item list if your fork moved it)
Open
qb-core/shared/items.lua(or the file whereQBCore.Shared.Itemsis defined).Add both items in the same format as your other useable items:
Copy the PNGs into your inventory UI images folder (e.g.
qb-inventory/html/images/depending on your inventory build).Do not add
server.exportlines for QB — cdev_axethrowing registers useable items at runtime viaQBCore.Functions.CreateUseableItemwhen qb-core or qbx_core is running (server/classes/itemuse.lua).Save and full restart the server.
QS setups differ by framework:
QBCore + QS: item definitions are usually still in
qb-core/shared/items.lua(same block as the QBCore tab above). The resource registers useables through qb-core the same way — noserver.exportin the item row.ESX + QS: items are often under
qs-inventory/shared/items.lua(or your pack’s documented path). Use the same name / label / image / useable fields your file expects. cdev_axethrowing registersESX.RegisterUsableItemfor both names when es_extended is started.
Example shape (adjust field names to match your items.lua):
Add both PNGs to your QS images folder, save, and full restart.
If items do nothing on use: confirm names match config, AxeThrowingConfig.Item.enabled = true, framework/inventory start before cdev_axethrowing, and check F8 with AxeThrowingConfig.Debug = true.
If you run a custom framework, inventory, notify, or target, read Configurations and Integrations to align Bridge settings and optional bridge files under public/bridge/.
Last updated























