Economy Calculator
Calculate optimal economy settings, job payouts, item prices, and server financial balance for a healthy QBCore economy.
Overview
The Economy Calculator helps server administrators design balanced economic systems by analyzing job payouts, item prices, business profits, and player spending patterns. Create sustainable economies that encourage gameplay while maintaining server balance.
Economy Calculator
Design balanced economic systems for your QBCore server
Job Wages Configuration
Job | Hourly Pay | Per Payout | Difficulty | Demand | Actions |
---|---|---|---|---|---|
Unemployed | $0 | 1/10 | unlimited | ||
Police Officer | $75 | 7/10 | high | ||
EMS | $70 | 6/10 | high | ||
Mechanic | $60 | 5/10 | medium | ||
Taxi Driver | $40 | 3/10 | medium | ||
Garbage Collector | $45 | 4/10 | low | ||
Trucker | $55 | 5/10 | medium | ||
Lawyer | $100 | 8/10 | low |
$111
Lawyer
8
Economy Design Principles
Balanced Money Flow
- Money In: Job payouts, business profits, mission rewards
- Money Out: Item purchases, vehicle costs, housing, services
- Net Balance: Slight positive flow to allow for growth and inflation
Job Hierarchy Design
-- Example job payment structure
Config.Jobs = {
['unemployed'] = { payment = 0 },
['garbage'] = { payment = 15 }, -- Entry level
['taxi'] = { payment = 20 }, -- Service industry
['mechanic'] = { payment = 25 }, -- Skilled trade
['police'] = { payment = 30 }, -- High responsibility
['ambulance'] = { payment = 30 }, -- High responsibility
['lawyer'] = { payment = 40 }, -- Professional
['judge'] = { payment = 50 } -- Leadership
}
Item Pricing Strategy
-- Price tiers for different item categories
Config.ItemPrices = {
-- Basic needs (high volume, low margin)
food = { multiplier = 1.0, markup = 10 },
-- Tools and equipment (medium volume, medium margin)
tools = { multiplier = 1.5, markup = 25 },
-- Luxury items (low volume, high margin)
luxury = { multiplier = 3.0, markup = 50 },
-- Illegal items (risk premium)
contraband = { multiplier = 5.0, markup = 100 }
}
Money Sink Strategies
Effective Money Sinks
- Vehicle Maintenance: Regular repair and fuel costs
- Housing Costs: Rent, utilities, property taxes
- License Fees: Renewal costs for various permits
- Insurance: Vehicle and property insurance premiums
- Luxury Services: High-end shops and entertainment
Implementation Examples
-- Vehicle maintenance system
RegisterNetEvent('garage:maintainVehicle', function(vehicleId)
local cost = CalculateMaintenanceCost(vehicleId)
local player = QBCore.Functions.GetPlayer(source)
if player.Functions.RemoveMoney('bank', cost) then
-- Apply maintenance
TriggerClientEvent('garage:vehicleMaintained', source, vehicleId)
end
end)
-- Housing utility bills
CreateThread(function()
while true do
Wait(3600000) -- Every hour
for _, player in pairs(QBCore.Functions.GetPlayers()) do
local bills = CalculateUtilityBills(player.PlayerData.citizenid)
if bills > 0 then
player.Functions.RemoveMoney('bank', bills)
TriggerClientEvent('phone:notification', player.PlayerData.source, {
title = 'Utility Bill',
text = 'You have been charged $' .. bills
})
end
end
end
end)
Economic Balance Formulas
Inflation Control
-- Calculate healthy money supply growth
local function CalculateInflationRate()
local totalMoney = GetTotalServerMoney()
local playerCount = GetPlayerCount()
local averageMoney = totalMoney / playerCount
-- Target: 2-3% monthly inflation
local targetGrowth = 0.025 / 30 -- Daily rate
local currentGrowth = GetDailyMoneyGrowth()
if currentGrowth > targetGrowth * 1.5 then
-- Increase money sinks
AdjustPrices(1.1)
AddTaxes(0.05)
elseif currentGrowth < targetGrowth * 0.5 then
-- Increase money sources
AdjustJobPayouts(1.1)
ReduceTaxes(0.02)
end
end
Dynamic Pricing
-- Adjust prices based on supply and demand
local function UpdateItemPrices()
for itemName, data in pairs(Config.Items) do
local demand = GetItemDemand(itemName)
local supply = GetItemSupply(itemName)
local priceMultiplier = 1.0
if demand > supply * 1.5 then
priceMultiplier = 1.2 -- Increase price when demand is high
elseif supply > demand * 1.5 then
priceMultiplier = 0.8 -- Decrease price when supply is high
end
data.price = math.floor(data.basePrice * priceMultiplier)
end
end
Server Configuration Examples
Conservative Economy
Config.Economy = {
type = 'conservative',
startingMoney = { cash = 200, bank = 2000 },
jobMultiplier = 0.8,
itemMarkup = 35,
taxRate = 0.15,
inflationTarget = 0.015 -- 1.5% monthly
}
Balanced Economy
Config.Economy = {
type = 'balanced',
startingMoney = { cash = 500, bank = 5000 },
jobMultiplier = 1.0,
itemMarkup = 25,
taxRate = 0.10,
inflationTarget = 0.025 -- 2.5% monthly
}
Liberal Economy
Config.Economy = {
type = 'liberal',
startingMoney = { cash = 1000, bank = 10000 },
jobMultiplier = 1.3,
itemMarkup = 15,
taxRate = 0.05,
inflationTarget = 0.035 -- 3.5% monthly
}
Monitoring & Analytics
Economic Health Indicators
-- Track key economic metrics
local function GetEconomicHealth()
return {
averagePlayerMoney = GetAveragePlayerMoney(),
unemploymentRate = GetUnemploymentRate(),
priceInflation = GetInflationRate(),
moneyVelocity = GetMoneyVelocity(),
giniCoefficient = GetWealthInequality()
}
end
-- Alert system for economic issues
local function CheckEconomicAlerts()
local health = GetEconomicHealth()
if health.unemploymentRate > 0.3 then
SendAdminAlert('High unemployment rate: ' .. (health.unemploymentRate * 100) .. '%')
end
if health.priceInflation > 0.1 then
SendAdminAlert('High inflation rate: ' .. (health.priceInflation * 100) .. '%')
end
if health.giniCoefficient > 0.7 then
SendAdminAlert('High wealth inequality detected')
end
end
Data Export for Analysis
-- Export economic data for external analysis
RegisterCommand('economy:export', function(source, args)
if not QBCore.Functions.HasPermission(source, 'admin') then return end
local data = {
timestamp = os.time(),
players = GetAllPlayerEconomicData(),
jobs = GetJobStatistics(),
items = GetItemStatistics(),
businesses = GetBusinessStatistics()
}
TriggerClientEvent('economy:downloadData', source, json.encode(data))
end, true)
Best Practices
Regular Monitoring
- Track daily money flow ratios
- Monitor player wealth distribution
- Watch for economic bottlenecks
- Analyze job participation rates
Gradual Adjustments
- Make small incremental changes
- Test changes on development server first
- Gather player feedback on economic changes
- Allow time for markets to adjust
Emergency Interventions
- Have plans for economic crises
- Know how to inject or remove money quickly
- Prepare communication for major changes
- Monitor player reactions and adapt accordingly
Pro Tip: Start with conservative settings and gradually increase rewards based on player feedback and economic data. It’s easier to give players more money than to take it away once the economy is established.
Need help balancing your server economy? Check our economy guide or consult with experienced server administrators in our community forums.