Skip to Content

Config

All Prism Scripts contain various editable and unobscured files containing, exports, client
and server functions, configuration methods and more.

The config file is located at shared/config.lua. All values shown below are defaults — adjust them to suit your server.

General Settings

OptionTypeDefaultDescription
Config.DebugbooleanfalseEnable debug prints to the console
Config.Frameworkstring'qbx'Framework to use: 'qb', 'qbx', or 'esx'
Config.InteractionTypestring'ox_target'Interaction system: 'ox_target', 'qb-target', 'textui', or '3dtext'
Config.InteractionDistancenumber2.5Distance at which interactions become available
Config.InteractionKeynumber38Key code for textui/3dtext interactions (38 = E)
Config.ProfileTypestring'discord'Avatar source for leaderboard: 'discord' or 'steam'
Config.RequiredJobstring/booleanfalseSet to a job name string to restrict mining, or false for no restriction
Config.CurrencySymbolstring'$'Currency symbol shown in the UI
Config.SellShopEnabledbooleantrueEnable or disable the sell shop
Config.DefaultToolstring'basic_pickaxe'Tool given to new miners by default
Config.PayoutAccountstring'bank'Account for payouts: 'bank' or 'cash'

External Systems

OptionTypeDefaultDescription
Config.FuelSystemstring'ox_fuel'Fuel resource used for mining vehicles
Config.VehicleKeysstring'qb-vehiclekeys'Vehicle keys resource

Vehicle Selling

OptionTypeDefaultDescription
Config.SellVehicle.enabledbooleantrueAllow players to sell vehicles back
Config.SellVehicle.sellValuenumber0.7Sell-back ratio (0.7 = 70% of purchase price)

Leveling and Progression

OptionTypeDefaultDescription
Config.MaxLevelnumber500Maximum mining level
Config.SkillPointIntervalnumber5Levels between each skill point reward
Config.XPFormulafunction100 + (level * 50)XP required per level — takes level as input

Reputation Tiers

TierMinimum Level
Bronze1
Silver15
Gold35
Platinum60
Diamond100

Sell Prices

Prices for processed items sold at the sell shop:

ItemPrice
iron_ingot$150
copper_ingot$250
gold_ingot$500
ruby_fragment$400
emerald_fragment$600
diamond_fragment$1200

Payout Bonuses

OptionDefaultDescription
levelBonusPerLevel0.005Bonus percentage added per player level
levelBonusMax0.50Maximum level bonus cap (50%)

Skills

Players earn skill points every Config.SkillPointInterval levels and can invest them into the following skills:

IDNameMax LevelCostBonus per LevelType
mining_speedMining Speed101+5%mining_speed
rock_yieldRock Yield101+3%mining_yield
ore_chanceOre Chance102+4%washing_chance
smelting_speedSmelting Speed102+5%smelting_speed
gem_qualityGem Cut Quality103+3%gem_yield
rare_findRare Find103+2%rare_chance

Minigame Settings

Mining Minigame

OptionDefaultDescription
progressGain15Progress gained per successful hit
progressSlip8Progress lost on a miss
basePeriod1200Base oscillation period (ms)
fastPeriod900Fast oscillation period (ms)
greenZoneStartWidth30Starting width of the green zone
greenZoneEndWidth18Final width of the green zone (gets harder)
completionDelay800Delay after completion (ms)

Washing Minigame

OptionDefaultDescription
duration3000Duration of washing minigame (ms)

Smelting Minigame

OptionDefaultDescription
duration8000Total smelting duration (ms)
heatDecayRate15Rate at which heat decreases
heatPumpAmount18Heat added per pump action
optimalZoneMin55Lower bound of optimal temperature zone
optimalZoneMax80Upper bound of optimal temperature zone
burnEnabledtrueWhether burn events can occur
burnChance15Chance of a burn event (percentage)
burnDuration1000Duration of burn penalty (ms)

Gem Cutting Minigame

OptionDefaultDescription
facetsRequired5Number of facets to complete
sequenceLength4Length of the QTE key sequence
timeLimit2500Time limit per sequence (ms)
facetProgressBonus20Progress bonus per successful facet
missPenalty5Progress penalty per miss

Session Settings

OptionDefaultDescription
travelDistance100.0Distance threshold for travel phase
mineCompletionAutotrueAuto-complete mining when all rocks are mined
sessionTimeout1800Session timeout in seconds (30 minutes)
heartbeatInterval30Heartbeat check interval in seconds
leaderAdvanceOnlytrueOnly the session leader can advance phases
rockSeedOffset1000Seed offset for rock placement randomization

Quick Jobs

OptionDefaultDescription
Config.QuickJobsDisplayCount3Number of quick jobs shown at once
Config.QuickJobsCooldownRefresh10Cooldown refresh interval in seconds

Quests

OptionDefaultDescription
Config.DailyQuestCount3Number of daily quests available
Config.WeeklyQuestCount2Number of weekly quests available

Full Config Reference

Below is the complete config.lua for reference. Sections like Config.WashingStations, Config.WashingRecipes, Config.SmeltingStations, Config.SmeltingRecipes, Config.GemCuttingStations, Config.GemCuttingRecipes, and Config.Quests are abbreviated — see your config file for the full station coordinates, recipes, and quest definitions.

config.lua
Config = {} Config.Debug = false Config.Framework = 'qbx' -- 'qb' | 'qbx' | 'esx' Config.InteractionType = 'ox_target' -- 'ox_target' | 'qb-target' | 'textui' | '3dtext' Config.InteractionDistance = 2.5 Config.InteractionKey = 38 -- 38 = E key (for textui/3dtext) Config.ProfileType = 'discord' -- 'discord' | 'steam' Config.RequiredJob = false -- false | 'jobName' Config.CurrencySymbol = '$' Config.SellShopEnabled = true Config.DefaultTool = 'basic_pickaxe' Config.PayoutAccount = 'bank' -- 'bank' | 'cash' Config.FuelSystem = 'ox_fuel' Config.VehicleKeys = 'qb-vehiclekeys' Config.SellVehicle = { enabled = true, sellValue = 0.7, -- 70% of purchase price } Config.XPFormula = function(level) return 100 + (level * 50) end Config.MaxLevel = 500 Config.SkillPointInterval = 5 Config.ReputationTiers = { { name = 'bronze', minLevel = 1 }, { name = 'silver', minLevel = 15 }, { name = 'gold', minLevel = 35 }, { name = 'platinum', minLevel = 60 }, { name = 'diamond', minLevel = 100 }, } Config.SellPrices = { iron_ingot = 150, copper_ingot = 250, gold_ingot = 500, ruby_fragment = 400, emerald_fragment = 600, diamond_fragment = 1200, } Config.PayoutBonuses = { levelBonusPerLevel = 0.005, levelBonusMax = 0.50, } Config.GarageMarker = { marker = 39, color = { r = 190, g = 238, b = 17, a = 150 }, } Config.DepotLocations = { { coords = vector4(2569.3008, 2720.4292, 42.9645, 216.4872), npcModel = 's_m_y_construct_01', npcScenario = 'WORLD_HUMAN_CLIPBOARD', label = 'Mining Foreman', spawnPoints = { vec4(2581.8545, 2729.2666, 42.6987, 181.0052), vec4(2582.7373, 2714.5637, 42.6611, 293.6299), }, blip = { sprite = 618, color = 2, scale = 0.8, label = 'Mining Depot' }, }, } Config.Vehicles = { { model = 'bison', label = 'Bison', type = 'Pickup', price = 50000, capacity = 1, minReputation = 'bronze', engineLabel = '6.0L V8', gearLabel = '5 Speed', hpLabel = '300 HP', image = 'bison.png', }, { model = 'rubble', label = 'Rubble', type = 'Truck', price = 80000, capacity = 2, minReputation = 'bronze', engineLabel = '7.0L V8', gearLabel = '6 Speed', hpLabel = '350 HP', image = 'rubble.png', }, { model = 'tiptruck', label = 'Tipper', type = 'Truck', price = 80000, capacity = 2, minReputation = 'bronze', engineLabel = '7.0L V8', gearLabel = '6 Speed', hpLabel = '350 HP', image = 'tiptruck.png', }, } Config.Tools = { { id = 'basic_pickaxe', name = 'Basic Pickaxe', type = 'Starter', price = 0, levelRequired = 1, stats = { speed = 1.0, yield = 1.0, durability = 1.0 }, image = 'nui://ox_inventory/web/images/stone_pickaxe.png', prop = 'prism_stone_pickaxe', sound = 'pickaxe', animation = { dict = 'melee@large_wpn@streamed_core', clip = 'ground_attack_on_spot_body' }, bone = 57005, offset = { x = 0.149, y = 0.188, z = 0.024, rx = -73.0, ry = -8.5, rz = -13.0 }, }, { id = 'iron_pickaxe', name = 'Iron Pickaxe', type = 'Upgrade', price = 2500, levelRequired = 5, stats = { speed = 1.3, yield = 1.2, durability = 1.4 }, image = 'nui://ox_inventory/web/images/iron_pickaxe.png', prop = 'prism_iron_pickaxe', sound = 'pickaxe', animation = { dict = 'melee@large_wpn@streamed_core', clip = 'ground_attack_on_spot_body' }, bone = 57005, offset = { x = 0.149, y = 0.188, z = 0.024, rx = -73.0, ry = -8.5, rz = -13.0 }, }, { id = 'steel_pickaxe', name = 'Steel Pickaxe', type = 'Upgrade', price = 7500, levelRequired = 10, stats = { speed = 1.5, yield = 1.4, durability = 1.6 }, image = 'nui://ox_inventory/web/images/steel_pickaxe.png', prop = 'prism_steel_pickaxe', sound = 'pickaxe', animation = { dict = 'melee@large_wpn@streamed_core', clip = 'ground_attack_on_spot_body' }, bone = 57005, offset = { x = 0.149, y = 0.188, z = 0.024, rx = -73.0, ry = -8.5, rz = -13.0 }, }, { id = 'mining_drill', name = 'Mining Drill', type = 'Advanced', price = 15000, levelRequired = 20, stats = { speed = 2.0, yield = 1.8, durability = 2.0 }, image = 'nui://ox_inventory/web/images/mining_drill.png', prop = 'prism_mining_drill', sound = 'drill', animation = { dict = 'anim@heists@fleeca_bank@drilling', clip = 'drill_right' }, bone = 57005, offset = { x = 0.435, y = -0.400, z = -0.090, rx = -82.5, ry = 53.5, rz = 37.5 }, }, } Config.Sounds = { pickaxe = { file = 'pickaxe.ogg', volume = 0.8, delay = 1000, refDistance = 3, maxDistance = 25, rolloffFactor = 1 }, drill = { file = 'drill.ogg', volume = 0.7, delay = 0, refDistance = 5, maxDistance = 35, rolloffFactor = 1 }, smelting = { file = 'smelting.mp3', volume = 0.6, delay = 0, refDistance = 3, maxDistance = 20, rolloffFactor = 1 }, lasercutter = { file = 'lasercutter.mp3', volume = 0.6, delay = 0, refDistance = 3, maxDistance = 20, rolloffFactor = 1 }, } Config.Skills = { { id = 'mining_speed', name = 'Mining Speed', description = 'Increase mining speed', maxLevel = 10, cost = 1, bonusPerLevel = 0.05, type = 'mining_speed', bonus = '+5% per level' }, { id = 'rock_yield', name = 'Rock Yield', description = 'More resources per rock', maxLevel = 10, cost = 1, bonusPerLevel = 0.03, type = 'mining_yield', bonus = '+3% per level' }, { id = 'ore_chance', name = 'Ore Chance', description = 'Higher chance of finding ore', maxLevel = 10, cost = 2, bonusPerLevel = 0.04, type = 'washing_chance', bonus = '+4% per level' }, { id = 'smelting_speed', name = 'Smelting Speed', description = 'Faster ore smelting', maxLevel = 10, cost = 2, bonusPerLevel = 0.05, type = 'smelting_speed', bonus = '+5% per level' }, { id = 'gem_quality', name = 'Gem Cut Quality', description = 'Better quality gem cuts', maxLevel = 10, cost = 3, bonusPerLevel = 0.03, type = 'gem_yield', bonus = '+3% per level' }, { id = 'rare_find', name = 'Rare Find', description = 'Chance to find rare gems', maxLevel = 10, cost = 3, bonusPerLevel = 0.02, type = 'rare_chance', bonus = '+2% per level' }, } Config.QuickJobs = { { id = 'iron_run', label = 'Iron Run', description = 'Mine iron deposits at the North Quarry.', coords = vector3(2964.87, 2756.52, 43.39), radius = 100.0, rockModels = { 'prism_ironore_main', 'prism_copperore_main' }, rockCount = 8, oreTypes = { 'Iron', 'Copper' }, tags = { 'beginner', 'iron' }, minReputation = 'bronze', minLevel = 1, basePay = 500, baseXP = 100, cooldown = 300, image = 'rubble.png', vehicle = 'rubble', dropoff = vector4(2430.9106, 4971.3848, 45.9270, 44.7611), }, -- Add more quick jobs here (gold_run, ruby_run, emerald_run, etc.) } Config.QuickJobsDisplayCount = 3 Config.QuickJobsCooldownRefresh = 10 Config.MiningZones = { { id = 'quarry_north', name = 'North Quarry', description = 'A beginner-friendly quarry with basic ore deposits.', coords = vector3(2964.87, 2756.52, 43.39), radius = 100.0, difficulty = 'easy', minLevel = 1, minReputation = 'bronze', rockCount = 15, respawnTime = 120, rockModels = { 'prism_rock_node_a', 'prism_rock_node_b', 'prism_rock_node_c' }, rewards = { { item = 'rock', min = 2, max = 5, chance = 100 }, { item = 'coal', min = 1, max = 2, chance = 30 }, }, rareDrops = { { item = 'raw_ruby', chance = 5 }, { item = 'raw_emerald', chance = 3 }, { item = 'raw_diamond', chance = 1 }, }, payout = 0, xp = 25, minPlayers = 1, maxPlayers = 4, oreTypes = { 'Iron', 'Copper', 'Gold' }, vehicle = 'flatbed', }, -- Add more mining zones here } Config.MiningMinigame = { progressGain = 15, progressSlip = 8, basePeriod = 1200, fastPeriod = 900, greenZoneStartWidth = 30, greenZoneEndWidth = 18, completionDelay = 800, } Config.WashingMinigame = { duration = 3000 } Config.SmeltingMinigame = { duration = 8000, heatDecayRate = 15, heatPumpAmount = 18, optimalZoneMin = 55, optimalZoneMax = 80, burnEnabled = true, burnChance = 15, burnDuration = 1000, } Config.GemCuttingMinigame = { facetsRequired = 5, sequenceLength = 4, timeLimit = 2500, facetProgressBonus = 20, missPenalty = 5, } Config.SessionSettings = { travelDistance = 100.0, mineCompletionAuto = true, sessionTimeout = 1800, heartbeatInterval = 30, leaderAdvanceOnly = true, rockSeedOffset = 1000, } Config.WashingStations = { ... } -- Washing stations with coords, props, blips Config.WashingRecipes = { ... } -- Input rocks to output ores/gems Config.SmeltingStations = { ... } -- Smelting furnaces with coords, props Config.SmeltingRecipes = { ... } -- Ore to ingots Config.GemCuttingStations = { ... } -- Gem cutting tables Config.GemCuttingRecipes = { ... } -- Raw gems to fragments Config.Quests = { daily = { ... }, weekly = { ... }, milestones = { ... }, } Config.DailyQuestCount = 3 Config.WeeklyQuestCount = 2
Last updated on