Before You Begin#
Before installing Miner Job, make sure your server meets the requirements. Three resources are mandatory and a framework is needed for money and jobs; everything else is optional and detected on its own.
Requirement | Status | Notes |
|---|---|---|
| Required | Database access. The schema installs itself. |
| Required | Callbacks, nearby-player lookups and shared helpers. |
| Required | Ships with the script. Streams the ore rocks, the furnace and the pickaxe models. |
Framework | Required |
|
Inventory | Auto |
|
Target | Optional |
|
| Optional | Draws the 3D "press E" prompts when it is running. Otherwise the script draws its own. |
| Optional | A real party becomes the mission crew, and mission pay goes through the job's management account. |
The resource looks at what is already running and picks the right bridge on its own:
Layer | How it is chosen |
|---|---|
Framework |
|
Inventory |
|
Target | Set by hand: |
Text UI · Party · Job money | Used whenever |
Every optional integration degrades silently — a missing resource simply stands that feature down. Integrations has the details.
GitHubReleases · overextended/oxmysqlMySQL resource for FXServer.Downloading Miner Job#
After purchasing Miner Job, the resource is automatically linked to your CFX Portal account.
Sign in to the CFX Portal with the same account used during checkout, open Granted Assets and download both packages: Miner Job [main] and Miner Job [props].
After extracting them you should have:
qs-minerjob/
├── config/ -- config.lua, clothing.lua, translations.lua (what you may edit)
├── client/ -- client logic and framework bridges
├── server/ -- server logic, framework and inventory bridges
└── fxmanifest.lua
miner_props/ -- the streamed ore, furnace and pickaxe models
[items]/ -- item lists for ox_inventory, qs-inventory, QBCore and ESX
[sql]/ -- qs-minerjob.sql, optional (see The Database)Installing the Resource#
Move qs-minerjob and miner_props into your resources directory — a category folder such as [qs] is fine. Then open server.cfg and make sure every dependency starts before the job:
ensure oxmysql
ensure ox_lib
# Framework
ensure es_extended
# ensure qb-core
# ensure qbx_core
# Inventory and target
ensure ox_inventory
# ensure qs-inventory
ensure ox_target
# Optional
# ensure qs-textui
# ensure qs-party
# ensure qs-job-management
ensure miner_props
ensure qs-minerjobThe order matters. The framework, the inventory and the optional resources are detected from what is already started, so anything that starts after qs-minerjob may not be found.
The Database#
There is no SQL to import. Miner Job creates its tables on the first start, all prefixed qs_miner, adds any column an older install is missing, and aligns its identifier columns to your framework's collation so the leaderboard can join them.
Table | Holds |
|---|---|
| Each miner's level and experience, plus total, season and daily experience and earnings for the leaderboards. |
| When the daily and season rankings last reset, and who won them. |
| Leaderboard prizes banked for a winner who was offline at the reset, paid on their next login. |
| How much of each mineral a miner has brought up, and every other tally: missions, smelted pieces, clean smelting streaks. |
| Unlocked and collected achievements, and each miner's tournament wins. |
| Every setting saved from the admin panel, one row per setting. |
The
[sql]/qs-minerjob.sqlfile is only for preparing a database by hand. Every statement in it isIF NOT EXISTSorINSERT IGNORE, so running it does no harm — and skipping it changes nothing. Avoid XAMPP and similar non-optimised local MySQL servers; they cause connection errors.
Registering the Job#
By default only players holding a job listed in Config.MinerJob can mine — miner out of the box. The job panel itself, with its shop and leaderboard, is open to everyone.
Automatic. On every start each job in Config.MinerJob that is missing from jobs is inserted with a grade 0 called Novice, and the console prints:
[qs-minerjob] Registered the ESX job "miner"QBCore keeps its jobs in a file, so add the job to qb-core/shared/jobs.lua:
['miner'] = {
label = 'Miner',
defaultDuty = true,
offDutyPay = false,
grades = {
['0'] = { name = 'Novice', payment = 10 },
},
},Add the job to qbx_core/shared/jobs.lua. Qbox is detected as QBCore, so nothing else changes.
['miner'] = {
label = 'Miner',
defaultDuty = true,
offDutyPay = false,
grades = {
[0] = { name = 'Novice', payment = 10 },
},
},To let more than one job mine, add each one to Config.MinerJob. To let anyone mine without a job at all, set Config.RequireJob = false.
Config.RequireJob = true
Config.MinerJob = {
['miner'] = true,
-- ['quarry'] = true,
}Adding the Items#
Every ore, every piece of jewellery and — when Config.InventoryPickaxe is true — every pickaxe has to exist in your inventory's item list. An item the inventory does not know is refused, and the miner is told it does not exist. Copy the block for your inventory from Inventory Items.
Configuring the Resource#
The files you edit all live in config/:
File | Contents |
|---|---|
| Everything: job, interaction, locations, mine tiers, minerals and prices, levels, missions, pickaxes, furnaces, leaderboard, achievements, rich veins, tournaments, admin panel, marker, debug and webhooks. |
| The male and female miner outfit put on while a mission is running. |
|
|
| The admin panel's help text for each setting. Generated from the comments in config.lua — leave it alone. |
The values worth reviewing first:
Config.RequireJob = true -- false lets anyone mine
Config.Target = false -- true = third eye, false = press E
Config.TargetScript = "ox" -- "ox" or "qb"
Config.InventoryPickaxe = true -- pickaxe as a real inventory item
Config.InventoryPickaxeScript = "qs" -- "ox" or "qs"
Config.Clothing = true -- miner outfit during missions
Config.InstantOreCollection = false -- true = no carrying to the conveyor
Config.MissionPayout = 'members' -- or 'split'
-- config/translations.lua
Config.Language = "en" -- en, es, fr, de, pt, it, ru, tr, nl, cnconfig.lua is the defaults. A setting changed from
/mineradminis stored in the database and wins over the file, so editing that setting in config.lua afterwards does nothing until you reset it in the panel. See The Admin Panel.
Updating an Older Version#
Levels and experience carry over. The new version reads the same qs_miner table and fills in whatever an older install is missing.
Back up and stop
Take a database backup and stop the server. Keep a copy of your old
config/folder to copy your values from.Replace both folders
Delete the old
qs-minerjobandminer_propsand drop in the new ones. Copy your prices, coordinates and rewards into the new config.lua rather than reusing the old file — it has new sections the script expects.Start and read the console
The first start creates the new tables and prints a line for each column it adds:
bash [qs-minerjob] Added missing column qs_miner.total_experience [qs-minerjob] aligned 2 identifier column(s) to utf8mb4_uca1400_ai_ci, matching users.identifier.Point your NPC manager at the exports
The separate seller and leaderboard peds and the pickaxe box are gone. Pickaxes are bought in the panel's Shop tab, and an NPC manager opens the shop and the leaderboard through
openSellMenuandopenLeaderboard— see Commands and Exports.
Verifying the Installation#
Restart the server and read the console. A clean start says nothing alarming; on ESX you will see the job registered, and once the admin panel has been used, how many saved settings were applied:
[qs-minerjob] Registered the ESX job "miner"
[qs-minerjob] 3 saved setting(s) applied over config.lua.Then give yourself the job and work through the first loop:
Talk to the job manager
Follow the Mining Zone blip to the quarry. The manager stands under a floating blue marker; press
E(or use your target) and the camera cuts to him with the job panel open.Buy a pickaxe and take a mission
Buy the Rusty Pickaxe from the Shop tab, then start Beginner's Excavation from Missions. Your outfit changes and the mission tracker appears.
Mine and deliver
Press
Zto take the pickaxe out,Eat a coal rock to swing, and carry the rock to the conveyor. Three coal completes the mission and pays you. From here, Usage covers everything else.



