Skip to content

Retro Goldpanning

Place the resource folder inside your serverโ€™s resources directory:

resources/[retro]/rs_goldpanning

Add it to server.cfg after your framework and inventory:

ensure rs_goldpanning

OneSync must be enabled.

Automatic detection is enabled by default:

Config.Framework = 'auto'
Config.Inventory = 'auto'

If automatic detection selects the wrong resource, set them manually.

Example:

Config.Framework = 'qb'
Config.Inventory = 'ox'

JSON storage is enabled by default:

Config.Storage = 'json'

No database dependency is required in this mode.

For MySQL:

Config.Storage = 'mysql'

Make sure oxmysql starts before rs_goldpanning.

The required database tables are created automatically.

Default item names:

gold_pan
gold_nugget
silver_nugget
garnet_nugget
copper_nugget
pyrite
river_rock
gold_highbanker
gold_pump
gold_bucket
gold_worklight

river_rock is only required when Config.RockReward.enabled = true.

A fuel item is only required when the highbanker fuel system is enabled.

Add the following to ox_inventory/data/items.lua:

['gold_pan'] = {
label = 'Gold Pan',
weight = 800,
stack = false,
close = true,
consume = 0,
description = 'Find a river, kneel down and start panning.',
},
['gold_nugget'] = {
label = 'Gold Nugget',
weight = 20,
},
['silver_nugget'] = {
label = 'Silver Nugget',
weight = 20,
},
['garnet_nugget'] = {
label = 'Garnet',
weight = 15,
},
['copper_nugget'] = {
label = 'Copper Nugget',
weight = 20,
},
['pyrite'] = {
label = 'Pyrite',
weight = 30,
},
['river_rock'] = {
label = 'River Rock',
weight = 150,
},
['gold_highbanker'] = {
label = 'Highbanker',
weight = 25000,
stack = false,
close = true,
consume = 0,
},
['gold_pump'] = {
label = 'Water Pump',
weight = 18000,
stack = false,
close = true,
consume = 0,
},
['gold_bucket'] = {
label = 'Bucket',
weight = 1000,
stack = false,
close = true,
consume = 0,
},
['gold_worklight'] = {
label = 'Work Light',
weight = 6000,
stack = false,
close = true,
consume = 0,
},

When using ox_inventory without ESX, QBCore or QBox, add the appropriate server export to usable items:

gold_pan -> rs_goldpanning.usePan
gold_highbanker -> rs_goldpanning.useMachine
gold_pump -> rs_goldpanning.usePump
gold_bucket -> rs_goldpanning.useBucket
gold_worklight -> rs_goldpanning.useLight

Example:

server = {
export = 'rs_goldpanning.usePan'
}

Add the items to your shared items file:

gold_pan = {
name = 'gold_pan',
label = 'Gold Pan',
weight = 800,
type = 'item',
image = 'gold_pan.png',
unique = true,
useable = true,
shouldClose = true,
description = 'Find a river, kneel down and start panning.'
},
gold_nugget = {
name = 'gold_nugget',
label = 'Gold Nugget',
weight = 20,
type = 'item',
image = 'gold_nugget.png',
unique = false,
useable = false,
shouldClose = false
},
silver_nugget = {
name = 'silver_nugget',
label = 'Silver Nugget',
weight = 20,
type = 'item',
image = 'silver_nugget.png',
unique = false,
useable = false,
shouldClose = false
},
garnet_nugget = {
name = 'garnet_nugget',
label = 'Garnet',
weight = 15,
type = 'item',
image = 'garnet_nugget.png',
unique = false,
useable = false,
shouldClose = false
},
copper_nugget = {
name = 'copper_nugget',
label = 'Copper Nugget',
weight = 20,
type = 'item',
image = 'copper_nugget.png',
unique = false,
useable = false,
shouldClose = false
},
pyrite = {
name = 'pyrite',
label = 'Pyrite',
weight = 30,
type = 'item',
image = 'pyrite.png',
unique = false,
useable = false,
shouldClose = false
},
river_rock = {
name = 'river_rock',
label = 'River Rock',
weight = 150,
type = 'item',
image = 'river_rock.png',
unique = false,
useable = false,
shouldClose = false
},
gold_highbanker = {
name = 'gold_highbanker',
label = 'Highbanker',
weight = 25000,
type = 'item',
image = 'gold_highbanker.png',
unique = true,
useable = true,
shouldClose = true
},
gold_pump = {
name = 'gold_pump',
label = 'Water Pump',
weight = 18000,
type = 'item',
image = 'gold_pump.png',
unique = true,
useable = true,
shouldClose = true
},
gold_bucket = {
name = 'gold_bucket',
label = 'Bucket',
weight = 1000,
type = 'item',
image = 'gold_bucket.png',
unique = true,
useable = true,
shouldClose = true
},
gold_worklight = {
name = 'gold_worklight',
label = 'Work Light',
weight = 6000,
type = 'item',
image = 'gold_worklight.png',
unique = true,
useable = true,
shouldClose = true
},

Example SQL:

INSERT INTO `items` (`name`, `label`, `weight`, `rare`, `can_remove`) VALUES
('gold_pan', 'Gold Pan', 1, 0, 1),
('gold_nugget', 'Gold Nugget', 1, 0, 1),
('silver_nugget', 'Silver Nugget', 1, 0, 1),
('garnet_nugget', 'Garnet', 1, 0, 1),
('copper_nugget', 'Copper Nugget', 1, 0, 1),
('pyrite', 'Pyrite', 1, 0, 1),
('river_rock', 'River Rock', 1, 0, 1),
('gold_highbanker', 'Highbanker', 1, 0, 1),
('gold_pump', 'Water Pump', 1, 0, 1),
('gold_bucket', 'Bucket', 1, 0, 1),
('gold_worklight', 'Work Light', 1, 0, 1);

For other supported inventories, add the same item names using the format required by your inventory resource.

Inventory icons are included in:

rs_goldpanning/install/images/

Copy them to your inventoryโ€™s image folder.

Example for qb-inventory:

qb-inventory/html/images/

The default interaction mode requires no target resource:

Config.Interaction = 'dui'

To use a target resource:

Config.Interaction = 'target'
Config.Target = 'auto'

Automatic target detection checks supported target resources.

By default, framework admin groups are enabled.

You can also enable ACE:

Config.Admin.ace = 'rs_goldpanning.admin'

Then add:

add_ace group.admin rs_goldpanning.admin allow

Discord IDs can be enabled with:

Config.Admin.discord = true

Add the IDs in:

Editable.AdminDiscordIds

inside editable/server.lua.

Join the server with admin permissions and run:

/goldzones

Create a new zone, draw at least three points, configure its multiplier and pools, then save it.

Players can only pan inside enabled gold zones.

Restart the resource:

restart rs_goldpanning

Test the following before opening the server:

  • Gold Pan usable item
  • Water detection
  • Zone detection
  • Panning and item rewards
  • Buyer interaction
  • Highbanker placement
  • Pump placement and hose connection
  • Bucket filling and processing
  • Work light placement
  • Admin commands
  • Persistence after restart