RSG Framework
Core

Configuration (config.lua)

Complete reference for configuring RSG Core via config.lua.

The rsg-core/config.lua file contains all the core configuration options for your server. This file controls player defaults, the money system, server settings, and more.

Location: resources/[framework]/rsg-core/config.lua

General settings

Max players

RSGConfig.MaxPlayers = GetConvarInt('sv_maxclients', 48)
  • Reads the maximum players from your server.cfg.
  • Default: 48 players. Set in server.cfg with sv_maxclients 48.

Default spawn

RSGConfig.DefaultSpawn = vector4(-1035.71, -2731.87, 12.86, 0.0)
  • The default spawn location for new players, in vector4(x, y, z, heading) format.
  • Used when a player has no saved position.

Update interval

RSGConfig.UpdateInterval = 5
  • How often (in minutes) player data is automatically saved to the database. Default: 5.
  • Lower values mean more frequent saves but more database load.

Hide player names

RSGConfig.HidePlayerNames = true
  • true hides names above players' heads (more immersive RP), false shows them.

Reveal map

RSGConfig.Player.RevealMap = true
  • true fully reveals the map, false enables fog of war.

Money system

Money types

RSGConfig.Money.MoneyTypes = {
    cash = 50,          -- Starting cash
    gold = 0,           -- Gold currency
    bank = 0,           -- DEPRECATED - kept at 0
    valbank = 0,        -- Valentine Bank
    rhobank = 0,        -- Rhodes Bank
    blkbank = 0,        -- Blackwater Bank
    armbank = 0,        -- Armadillo Bank
    bloodmoney = 0      -- Illegal money
}
  • cash: Physical money in the player's pocket (can be dropped/stolen).
  • gold: Gold currency — works exactly like cash and shares the same API. Can optionally be a physical item (see Money System → Gold currency).
  • bank: DEPRECATED — legacy account, kept at 0. Use location-specific banks.
  • valbank / rhobank / blkbank / armbank: Town-specific bank accounts.
  • bloodmoney: Illegal money for criminal activities.

The bank money type is deprecated. Always use location-specific banks (valbank, rhobank, blkbank, armbank) instead.

When EnableMoneyItems = true, cash and bloodmoney become physical inventory items that can be dropped, traded, or stolen.

Why multiple banks? Realism (players travel to towns to access accounts), gameplay (bank robberies and escorts), and risk (carrying cash is dangerous).

Don't allow minus

RSGConfig.Money.DontAllowMinus = { 'cash', 'bloodmoney' }

Money types that cannot go below $0. Transactions fail if the player doesn't have enough.

Minus limit

RSGConfig.Money.MinusLimit = -5000

The maximum debt bank accounts can reach (only affects types not in DontAllowMinus).

Paycheck timeout

RSGConfig.Money.PayCheckTimeOut = 10

How often (in minutes) players receive their job paycheck. Amounts are defined in shared/jobs.lua.

Paycheck from society

RSGConfig.Money.PayCheckSociety = false
  • true: paychecks come from the society/business account (requires rsg-banking).
  • false: paychecks are generated (money printer).

Enable money items

RSGConfig.Money.EnableMoneyItems = true
  • true: cash and bloodmoney are physical inventory items.
  • false: cash and bloodmoney are virtual (like GTA Online).

Physical money makes the economy more realistic, as players must physically carry cash.

Player configuration

Blood types

RSGConfig.Player.Bloodtypes = {
    'A+', 'A-', 'B+', 'B-', 'AB+', 'AB-', 'O+', 'O-',
}

Randomly assigned on character creation — useful for medical RP.

Player defaults

The RSGConfig.Player.PlayerDefaults table defines all default values for new characters.

Character info

charinfo = {
    firstname = 'Firstname',
    lastname = 'Lastname',
    birthdate = '00-00-0000',
    gender = 0,               -- 0 = Male, 1 = Female
    nationality = 'USA',
    account = function() return RSGCore.Functions.CreateAccountNumber() end
}

Job defaults

job = {
    name = 'unemployed',
    label = 'Civilian',
    payment = 10,
    type = 'none',
    onduty = false,
    isboss = false,
    grade = {
        name = 'Freelancer',
        level = 0
    }
}

Gang defaults

gang = {
    name = 'none',
    label = 'No Gang Affiliation',
    isboss = false,
    grade = {
        name = 'none',
        level = 0
    }
}

Metadata defaults

metadata = {
    health = 600,
    hunger = 100,
    thirst = 100,
    cleanliness = 100,
    stress = 0,
    isdead = false,
    armor = 0,
    ishandcuffed = false,
    injail = 0,
    jailitems = {},
    status = {},
    rep = {},
    callsign = 'NO CALLSIGN',
    bloodtype = function() return RSGConfig.Player.Bloodtypes[math.random(1, #RSGConfig.Player.Bloodtypes)] end,
    fingerprint = function() return RSGCore.Player.CreateFingerId() end,
    walletid = function() return RSGCore.Player.CreateWalletId() end,
    criminalrecord = {
        hasRecord = false,
        date = nil
    },
}

Hunger, thirst, cleanliness scale from 0–100 (100 = full/clean). Health in RedM uses a 0–600 scale, not 0–100 like GTA.

Inventory defaults

weight = 35000,  -- Player default weight (35kg)
slots = 25,      -- Player default slots

These are starting values for new players. The actual inventory system limits are configured in rsg-inventory/shared/config.lua (MaxWeight = 120000, MaxSlots = 40).

You can also modify inventory space per player at runtime:

local Player = RSGCore.Functions.GetPlayer(source)
Player.Functions.SetPlayerData('weight', 50000)  -- Up to 50kg (under 120kg max)
Player.Functions.SetPlayerData('slots', 35)       -- Up to 35 slots (under 40 max)

Server configuration

Server closed

RSGConfig.Server.Closed = false
RSGConfig.Server.ClosedReason = 'Server Closed'

When Closed = true, only players with admin permission can join. Useful for maintenance.

Whitelist

RSGConfig.Server.Whitelist = false
RSGConfig.Server.WhitelistPermission = 'admin'

When Whitelist = true, only players with WhitelistPermission can join.

PVP settings

RSGConfig.Server.PVP = true
RSGConfig.EnablePVP = true

Controls whether players can damage each other.

RSGConfig.Server.Discord = ''

Your Discord invite link, shown in kick messages.

Check duplicate license

RSGConfig.Server.CheckDuplicateLicense = true

Prevents players connecting with duplicate Rockstar licenses (multi-boxing). Recommended to keep true.

Permissions

RSGConfig.Server.Permissions = { 'god', 'admin', 'mod' }

Available permission levels. You can add custom levels (e.g. 'helper', 'vip') and grant them via ace permissions in server.cfg. See Setting Permissions.

Commands configuration

OOC color

RSGConfig.Commands.OOCColor = { 255, 151, 133 }

RGB color for Out-Of-Character (OOC) chat messages, as { Red, Green, Blue }.

Prompt distance

RSGConfig.PromptDistance = 1.5

Default interaction distance for prompts (in meters). See Prompts.

Example: custom configuration

-- Increase player capacity
RSGConfig.MaxPlayers = GetConvarInt('sv_maxclients', 64)

-- Change default spawn to Valentine
RSGConfig.DefaultSpawn = vector4(-175.89, 627.01, 114.09, 180.0)

-- Give players more starting money
RSGConfig.Money.MoneyTypes = {
    cash = 250, bank = 0, valbank = 500,
    rhobank = 0, blkbank = 0, armbank = 0, bloodmoney = 0
}

-- Enable whitelist
RSGConfig.Server.Whitelist = true
RSGConfig.Server.WhitelistPermission = 'whitelist'

-- Disable PVP for RP server
RSGConfig.Server.PVP = false
RSGConfig.EnablePVP = false

-- Faster paychecks
RSGConfig.Money.PayCheckTimeOut = 5

-- More inventory space
RSGConfig.Player.PlayerDefaults.weight = 50000
RSGConfig.Player.PlayerDefaults.slots = 30

Tips & best practices

Tip

Always back up your config.lua before making changes.

Changes to config.lua require a full server restart to take effect.

Test all config changes on a development server before applying to production.

Performance considerations

  • UpdateInterval: 5 minutes is a good balance. Don't go below 3 minutes on busy servers.
  • PayCheckTimeOut: 10 minutes is standard. More frequent paychecks increase economy velocity.

Roleplay considerations

  • Most RP servers keep EnableMoneyItems true for realism.
  • Set HidePlayerNames to true for immersion.
  • Many RP servers disable PVP except in specific zones.
  • A whitelist is recommended for serious RP communities.

On this page