HomeScriptsServicesPortfolioDocumentationContactJoin Discord
FiveM processing-job documentation

Diamond Butcher Job

Installation, ESX job setup, inventory items, production chains, selling configuration, troubleshooting, and the supported external integration surface for diamond_butcherjob version 1.0.0.

v1.0.0ESX Legacyox_inventoryox_targetLua 5.4
Diamond Butcher Job
Complete resource guideDocumented from the v1.0.0 package
Diamond Butcher Job v1.0.0

Overview

Diamond Butcher Job provides two multi-stage production lines. Players process beef through a conveyor, grinder, and packing stations; poultry is plucked, gutted, chopped, and packaged. Finished goods can be sold to a configurable NPC.

Beef productionRaw Meat → Processed Meat → Ground Beef → Packed Ground Beef.
Chicken productionRaw Chicken → Plucked → Gutted → Chopped → Packaged Chicken.
Job restrictionsStations and sales can be restricted to the configured butcher job.
Configurable economyAdjust yields, sell prices, station coordinates, durations, labels, and props.
Documentation scope
This page documents the code contained in diamond_butcherjob version 1.0.0. Where the bundled README and the current code disagree, the code is treated as the source of truth.
Supported release configuration
Version 1.0.0 is supported as shipped on ESX Legacy. QBCore and standalone detection code exists in config.lua, but the shipped manifest hard-requires es_extended; do not treat those bridges as supported until a tested compatibility patch is released.

Compatibility matrix

AreaSystemStatus in v1.0.0
FrameworkESX LegacySupported as shipped. The manifest requires es_extended.
FrameworkQBCoreBridge code exists in config.lua, but the manifest still hard-requires ESX. Treat this as incomplete until the resource is patched and tested.
FrameworkStandaloneDetection code exists, but the manifest hard-requires ESX. Not supported as shipped.
Inventoryox_inventoryRequired. Client item checks and all selling operations call ox_inventory directly.
Targetox_targetRequired. Every station and the selling NPC use ox_target.
Libraryox_libRequired. Used for callbacks, progress bars, context menus, dialogs, and optional notifications.
DatabaseoxmysqlLoaded by the manifest and therefore required to start v1.0.0, although the current scripts do not run database queries.
Before installation

Requirements

Required resources

  • es_extended — framework required by the current manifest.
  • ox_inventory — item lookup, item removal during selling, item images in menus, and standalone item operations.
  • ox_target — station and NPC interactions.
  • ox_lib — callbacks, progress UI, context menus, alerts, and dialogs.
  • oxmysql — loaded by fxmanifest.lua, even though v1.0.0 contains no SQL queries.

Optional resources

  • Notifier, core_notify, or mythic_notify when selected in Config.NotificationSystem.
  • An external hunting or farming script that gives players raw_meat and raw_chicken.
  • An ESX job creator or database access to create the butcher job.
Recommended notification setting
Use Config.NotificationSystem = 'ox_lib'. ox_lib is already required, so this avoids adding another notification dependency.
Step by step

Installation

  1. Keep the resource folder name.

    Place the resource at resources/[jobs]/diamond_butcherjob. The external event examples on this page assume that exact folder and resource name.

  2. Install and start all dependencies.

    Use the startup order below. The resource must start after ox_lib, ox_target, ox_inventory, oxmysql, and ESX.

  3. Register all nine items.

    Copy the provided item definitions into ox_inventory/data/items.lua. Make sure commas before and after the pasted block are correct.

  4. Copy the item images.

    Copy every PNG from diamond_butcherjob/install/images into ox_inventory/web/images.

  5. Create the butcher job.

    The resource does not create jobs automatically. Add an ESX job named exactly butcher, or change Config.RequiredJobName to an existing job.

  6. Choose a notification system.

    Set Config.NotificationSystem to an installed provider. ox_lib is the simplest supported choice.

  7. Provide raw materials.

    Connect a hunting, farming, shop, or admin system that supplies raw_meat and raw_chicken.

  8. Restart and run the acceptance test.

    Test the complete beef and chicken chains, each sell mode, the job restriction, cancellation, full inventory behavior, and /propfix.

Recommended server.cfg order

cfg
# Database/library resources loaded by the manifest
ensure oxmysql
ensure ox_lib

# Framework supported by the shipped v1.0.0 manifest
ensure es_extended

# Required inventory and targeting resources
ensure ox_inventory
ensure ox_target

# Optional notification resource only when selected in config.lua
# ensure Notifier
# ensure core_notify
# ensure mythic_notify

# Start the job after every dependency
ensure diamond_butcherjob
Folder-name warning
Do not rename diamond_butcherjob after another resource has been written to use its events. Renaming changes the resource name used by future exports and support instructions.
Employment access

Job Setup

By default, Config.RequireJob = true and Config.RequiredJobName = 'butcher'. The script checks only the job name; it does not require a grade, boss status, or on-duty state.

Common ESX Legacy SQL example

sql
-- Example for the common ESX Legacy jobs/job_grades schema.
-- Back up the database and adapt columns if your schema differs.
INSERT IGNORE INTO `jobs` (`name`, `label`)
VALUES ('butcher', 'Butcher');

INSERT IGNORE INTO `job_grades`
(`job_name`, `grade`, `name`, `label`, `salary`, `skin_male`, `skin_female`)
VALUES
('butcher', 0, 'trainee', 'Trainee', 0, '{}', '{}'),
('butcher', 1, 'worker', 'Butcher', 0, '{}', '{}'),
('butcher', 2, 'senior', 'Senior Butcher', 0, '{}', '{}'),
('butcher', 3, 'boss', 'Manager', 0, '{}', '{}');
Schema differences
ESX database schemas vary. Review your existing jobs and job_grades rows before importing. The script itself does not use a society account or boss menu.

Disable the job restriction

lua
Config.RequireJob = false
-- All players can now use processing stations and sell goods.
ox_inventory

Inventory Items and Images

The package contains definitions and matching PNG images for all nine required items. The note at the bottom of the bundled ox_inventory.txt says images were not supplied, but that note is outdated.

ItemLabelStageUsed forImage
raw_meatRaw MeatInputBeef conveyorraw_meat.png
processed_meatProcessed MeatIntermediateMeat grinder or saleprocessed_meat.png
ground_beefGround BeefIntermediateBeef packagingground_beef.png
packed_groundbeefGround BeefFinal productSellablepacked_groundbeef.png
raw_chickenRaw ChickenInputChicken pluckingraw_chicken.png
plucked_chickenPlucked ChickenIntermediateChicken guttingplucked_chicken.png
gutted_chickenGutted ChickenIntermediateChicken choppinggutted_chicken.png
chopped_chickenChopped ChickenIntermediate / sellableChicken packaging or salechopped_chicken.png
packaged_chickenChicken filletFinal productSellablepackaged_chicken.png

Provided ox_inventory definitions

lua
["raw_meat"] = {
	label = "Raw Meat",
	weight = 200,
},
["raw_chicken"] = {
	label = "Raw Chicken",
	weight = 100,
},
["processed_meat"] = {
	label = "Processed Meat",
	weight = 200,
	stack = true,
	close = true,
	description = 'Freshly butchered and processed meat.'
},
["ground_beef"] = {
	label = "Ground Beef",
	weight = 200,
	stack = true,
	close = true,
	description = 'Fresh from the meat grinder and ready to pack.'
},
["packed_groundbeef"] = {
	label = "Ground Beef",
	weight = 200,
	stack = true,
	close = true,
	description = 'Freshly packed ground beef, ready to cook.'
},
["packaged_chicken"] = {
	label = "Chicken fillet",
	weight = 100,
	stack = true,
	close = true,
	description = 'Freshly packed chicken, ready to cook.'
},
['plucked_chicken'] = {
	label = 'Plucked Chicken',
	weight = 100,
	stack = true,
	close = true,
	description = 'Freshly plucked, ready to be gutted.'
},
['gutted_chicken'] = {
	label = 'Gutted Chicken',
	weight = 100,
	stack = true,
	close = true,
	description = 'Freshly gutted chicken, ready to be chopped.'
},
['chopped_chicken'] = {
	label = 'Chopped Chicken',
	weight = 100,
	stack = true,
	close = true,
	description = 'Freshly chopped chicken, ready to pack.'
}

Image installation

text
Source: diamond_butcherjob/install/images/*.png
Destination: ox_inventory/web/images/
Exact names matter
Do not change item keys in only one file. The item registry, image filenames, processing configuration, sell-price table, and external hunting resource must all use matching names.
Player operations

Workflow and Locations

Beef workflow

Players obtain raw_meat, use the conveyor to create processed_meat, use the grinder to create ground_beef, and package it into packed_groundbeef.

Chicken workflow

Players obtain raw_chicken, then use the plucking, gutting, chopping, and packaging stations in order.

Configured stations

Station groupCountConfigured areaConversionDuration
Beef conveyor1998.27, -2142.66, 29.53raw_meat → processed_meat9,000 ms
Beef grinder1975.20, -2120.03, 31.38processed_meat → ground_beef7,000 ms
Beef packaging6982–985, -2118 to -2124, 30.76ground_beef → packed_groundbeef6,000 ms
Chicken plucking4-90 to -93, 6235–6240, 31.09raw_chicken → plucked_chicken6,000 ms
Chicken gutting3-78 to -79, 6228–6230, 31.09plucked_chicken → gutted_chicken6,000 ms
Chicken chopping3-96 to -100, 6202–6208, 31.13–31.23gutted_chicken → chopped_chicken6,000 ms
Chicken packaging4-101 to -107, 6205–6212, 31.03chopped_chicken → packaged_chicken6,000 ms
Selling NPC1464.215, -700.840, 27.511Sells configured finished goodsN/A

Server-enforced yields

Required itemReward itemYield per action
raw_meatprocessed_meat1–3
processed_meatground_beef1–3
ground_beefpacked_groundbeef1–3
raw_chickenplucked_chicken1
plucked_chickengutted_chicken1
gutted_chickenchopped_chicken1
chopped_chickenpackaged_chicken1–3

Default sell prices

ItemPrice each
processed_meat$18
packed_groundbeef$30
packaged_chicken$24
chopped_chicken$16

The NPC offers two modes: sell every configured sellable item in the player inventory, or choose one item and quantity.

config.lua

Configuration Reference

SettingPurposeOwner note
Config.NotificationSystemSelects the notification provider.Valid code paths: core_notify, ox_lib, notifier, mythic_notify, esx, or fallback printing.
Config.FrameworkAutomatic or manual framework selection.Use esx or auto for the shipped v1.0.0 manifest.
Config.RequireJobTurns the job restriction on or off.When false, all players can process and sell.
Config.RequiredJobNameRequired framework job name.Default: butcher.
Config.ConveyorBeef conveyor coordinates, models, travel, items, and target radius.The configured conveyor model must exist near the target coordinates.
Config.GrinderGrinder coordinates, prop, animation duration, and conversion.Changing items requires matching the yield table.
Config.PackagingStationsList of beef packing stations.Add or remove table entries to change station count.
Config.ChickenPluckingRaw-to-plucked station list.Each entry creates one ox_target sphere.
Config.ChickenGuttingPlucked-to-gutted station list.Each entry creates one ox_target sphere.
Config.ChickenChoppingGutted-to-chopped station list.Each entry creates one ox_target sphere.
Config.ChickenPackagingChopped-to-packaged station list.Each entry creates one ox_target sphere.
Config.ProcessingYieldsServer-side minimum and maximum rewards.Every allowed conversion should be explicitly defined.
Config.SellPedNPC model, position, scenario, target label, and invincibility.The distance property is present but not used by v1.0.0.
Config.SellPoint.pricesSellable item whitelist and unit price.Removing an item here removes it from both sell modes.
Config.LocaleLanguage key used by locale.lua.Only English is included.

Example economy adjustment

lua
Config.ProcessingYields.raw_meat.processed_meat = { min = 1, max = 2 }
Config.SellPoint.prices.packed_groundbeef = 25
Config.SellPoint.prices.packaged_chicken = 20
External supply

Raw Material and Hunting Integration

Diamond Butcher Job does not spawn animals or generate raw inputs. Another resource must add raw_meat and raw_chicken to the player's inventory. The bundled README recommends ars_hunting, but any hunting, farming, shop, reward, or admin system can be used.

External hunting item example

lua
-- Example item rewards inside an external hunting resource
meat = {
    {
        item = 'raw_meat',
        chance = 100,
        maxQuantity = 3,
    },
}

-- Use raw_chicken for poultry hunting/collection sources.
-- The item names must exactly match Diamond Butcher Job's config.lua.

Integration checklist

  • The hunting item keys match Config.Conveyor.requiredItem and the chicken plucking station item.
  • The items exist in ox_inventory.
  • Matching PNG images exist in ox_inventory's image directory.
  • The hunting resource starts before players attempt the butcher workflow.
  • The server economy accounts for both hunting yield and butcher processing yield.
External scripts

Events, Callback, and Exports

No formal exports in v1.0.0
The current resource does not declare any client or server exports. External scripts can open two client menus through registered events and can query the job callback. Do not advertise internal processing or selling network events as a public API.

Supported external client event: open main menu

Opens the NPC's main context menu from another client resource.

lua
-- Client-side: open the main butcher NPC menu
TriggerEvent('diamond_butcherjob:openButcherMenu')

Supported external client event: open selling menu

Opens the sell-all / sell-specific menu directly. Server-side selling still checks the configured job.

lua
-- Client-side: open the selling menu directly
TriggerEvent('diamond_butcherjob:openSellDialog')

Available ox_lib callback: check job access

Returns the result of Config.HasJob(source). This is useful when another client resource needs to show or hide a butcher interaction.

lua
-- Client-side, requires ox_lib
local isButcher = lib.callback.await('diamond_butcherjob:hasJob', false)

if isButcher then
    print('Player has access to the butcher job')
end

Export status

SideExportStatus
ClientNoneNo exports(...) declarations are present in v1.0.0.
ServerNoneNo exports(...) declarations are present in v1.0.0.
Internal events are not a developer API
Processing and payment events were written for the built-in UI flow. External resources should not call them directly. An owner-only audit and a recommended future API design are included in the downloadable documentation bundle.
Player utility

Commands

CommandSidePermissionPurpose
/propfixClientNoneDetaches and deletes the entity currently attached to the player's ped, then clears tasks.
Use carefully
/propfix removes the entity attached to the player, not only butcher props. Use it when a processing prop remains stuck after cancellation or interruption.
Common issues

Troubleshooting

The resource will not start

Dependencies

Confirm the folder is named diamond_butcherjob and that oxmysql, ox_lib, ESX, ox_inventory, and ox_target are already started. Check for “could not find dependency” messages.

Notifications throw an export error

Config

The default is notifier. Change it to ox_lib unless the Notifier resource is installed and named exactly Notifier.

Players are denied at every station

Job

Verify the framework job name is exactly the same as Config.RequiredJobName. The default is butcher. Restart after changing framework job definitions.

The item exists but the station says it is missing

Inventory

Confirm ox_inventory is the active inventory and the item key matches character-for-character. Labels do not matter; keys do.

The conveyor says no belt was found

Map

The client searches for model p_beefsplitter_s within the configured search radius. Check the MLO/map, coordinates, model, and searchRadius.

Item icons are blank in the sell menu

Images

Copy the supplied PNG files into ox_inventory/web/images, keep the lowercase filenames unchanged, then restart ox_inventory or the server.

Players have no raw meat or chicken source

Gameplay

Install or configure a hunting/farming resource, or add the inputs to a shop. The butcher resource does not generate raw materials.

A prop remains attached

Cleanup

Run /propfix. If this happens regularly, collect the station name, cancellation method, and client console error for support.

Support-ticket checklist

  • Diamond Butcher Job version and folder name.
  • Framework version and exact job name.
  • ox_inventory, ox_target, ox_lib, and oxmysql versions.
  • Selected notification provider.
  • Full client F8 and server-console errors.
  • Station, item, and exact reproduction steps.
  • Any edits made to config.lua, locale.lua, or the manifest.
Maintenance

Updates and File Map

Editable files

FilePurpose
config.luaFramework bridge, job access, inventory wrappers, all stations, yields, selling, and notifications.
locale.luaEnglish strings and translation helper.
fxmanifest.luaVersion, scripts, dependencies, and resource metadata.
client/client.luaTargets, animations, props, menus, dialogs, and local command.
server/server.luaJob callback, processing, item sales, and server command code.
install/ox_inventory.txtProvided item definitions.
install/images/*.pngProvided inventory images.

Safe update procedure

  1. Back up the entire resource and your edited config.lua and locale.lua.
  2. Compare the new manifest, config structure, item keys, and event/API notes.
  3. Do not overwrite custom coordinates or economy values blindly.
  4. Restart in a test environment and run both complete processing chains.
  5. Confirm external resources still use supported events or exports for the installed version.
Version-specific documentation
This page applies to version 1.0.0. Future patches may add formal exports, change dependencies, or harden internal events. Publish documentation that matches the resource build customers actually receive.
Need more help?

Still stuck after following the guide?

Open a support request with the resource version, framework, inventory, relevant configuration, full console error, and the exact steps needed to reproduce the issue.