Commands and Keys#
Miner Job is played from the world and the job panel, so it registers a single command — the admin panel. Everything else is a key press.
Command / key | Who | Description |
|---|---|---|
| Admins | Opens the admin panel: every setting, plus starting and stopping rich veins and tournaments. Needs the ace in |
| Everyone | Talk to the manager, swing at a rock, deposit or drop the carried rock, open the furnace. |
| Miners | Move the pickaxe between hand and belt. |
There are no commands for rich veins or tournaments on purpose — they are started from the Events tab of
/mineradmin, or by their own timers.
Client Exports#
For opening the job's windows from your own NPC manager, a radial menu, a phone app or a job-management resource.
openSellMenu — the shop on its own
Opens the shop — buying pickaxes and selling ore and jewellery — without the job panel around it. Use it for a separate seller ped.
exports['qs-minerjob']:openSellMenu()
-- or, from a resource that fires events instead
TriggerEvent('qs-miner:sellMenu')openLeaderboard — the rankings
Opens the daily, season and all-time leaderboards with their timers, prizes and last winners.
exports['qs-minerjob']:openLeaderboard()
-- or
TriggerEvent('qs-miner:openLeaderboard')ExitJob — take the player off the job
Ends whatever the player is doing exactly as the panel's Abandon button does: leaves the crew on the server, removes the tracker and the pickaxe, and puts their own clothes back on. Does nothing if they are not working.
exports['qs-minerjob']:ExitJob()togglePickaxe — used by the inventory
The client export the pickaxe items point at (client = { export = 'qs-minerjob.togglePickaxe' }). Using a pickaxe takes it out or puts it away. You do not call it yourself — keep it in the item definitions from Inventory Items.
Server Exports#
For other scripts that need to know who is mining — a job counter on a HUD, a police alert that skips people at work, a payroll script.
IsPlayerOnMission — is this player on a mission?
Answered from the server's own record of who started which mission, so a client cannot fake it. This is the one to use.
local working = exports['qs-minerjob']:IsPlayerOnMission(source) -- true / falsegetOnDutyCount · isPlayerOnDuty — the outfit state
How many players are in the miner outfit right now, and whether one given player is. Kept for older scripts; the state is reported by the client, so prefer IsPlayerOnMission for anything that pays or punishes.
local miners = exports['qs-minerjob']:getOnDutyCount() -- number
local onDuty = exports['qs-minerjob']:isPlayerOnDuty(source) -- true / falseWhat Stays on the Server#
Nothing that pays can be driven from a client. Worth knowing before you build on top of the job:
The ore type of every rock, the loot roll, the drop bonuses and the pickaxe wear are decided on the server.
A rock only pays a player who was assigned it, is standing at it and has spent long enough swinging.
Shop prices, recipe outputs and mission rewards are read from the config on the server; the panel only sends names and amounts.
A craft has to come from someone standing at that furnace, no faster than the minigame allows.
Crews are built from invitations the server itself sent, and every member's level is checked again when the mission starts.



