RLS Studios
ProjectsPatreonCommunityDocsAbout
Join Patreon
BeamNG Modding Docs

Guides

Reference

server/commands - Camera & Input Commandsge_utils - Game Engine Utility Functionsmain.lua - GE Lua Entry Point & Game Loopmap.lua - Navigation Graph (AI Road Map)screenshot.lua - Screenshot Systemserver/server - Level Loading & Game ServerserverConnection - Client-Server Connection Manager`setSpawnpoint` - Default Spawn Point Persistence`simTimeAuthority` - Simulation Time & Bullet Time Control`spawn` - Vehicle Spawning & Safe Placement`suspensionFrequencyTester` - Suspension Natural Frequency Analysis
Career BranchesCareer System CoreCareer Save System
Career Computer MenuCareer Fuel SystemInspect VehicleVehicle InventoryLinear TutorialLoaner VehiclesCareer LogLogbookMarketplaceMission WrapperCareer Painting ModuleCareer Part Inventory ModuleCareer Part Shopping ModuleCareer Payment ModuleCareer Permissions ModuleCareer Playbook Writer ModuleCareer Player Abstract ModuleCareer Player Attributes ModuleCareer Player Driving ModuleCareer Quick Travel ModuleCareer Rentals ModuleCareer Reputation ModuleCareer Spawn Points ModuleCareer Speed Traps ModuleCareer Test Drive ModuleCareer Tether ModuleCareer Tuning ModuleCareer UI Utils ModuleCareer Unlock Flags ModuleCareer Value Calculator ModuleVehicle Class GroupingVehicle Deletion ServiceVehicle PerformanceVehicle Shopping

UI

Resources

BeamNG Game Engine Lua Cheat SheetGE Developer RecipesMCP Server Setup

// RLS.STUDIOS=true

Premium Mods for BeamNG.drive. Career systems, custom vehicles, and immersive gameplay experiences.

Index

HomeProjectsPatreon

Socials

DiscordPatreon (RLS)Patreon (Vehicles)

© 2026 RLS Studios. All rights reserved.

Modding since 2024

API ReferenceGE Extensionscareermodules

Career Player Attributes Module

M.dependencies = {'career_career'}

Dependencies

M.dependencies = {'career_career'}

Central attribute store for career mode. Tracks money, BeamXP, vouchers, and per-branch XP values. Every change is logged with reason/tags for the logbook financial and gameplay history views.


Internal State

FieldTypeDescription
M.logAttributeChangevariesAssigned as logAttributeChange

Public API

FunctionSignatureDescription
M.addAttributes(change, reason)Adds/subtracts attribute values with tagged reason; clamps to min/max
M.setAttributes(newValues, reason)Sets absolute values (internally computes delta and calls addAttributes)
M.getAttribute(attributeName) → tableReturns full attribute object {value, gains, losses, min, max}
M.getAttributeValue(attributeName) → numberReturns just the current numeric value (0 if missing)
M.getAllAttributes() → tableReturns entire attributes table
M.getAttributeLog() → tableReturns the full change history array

Lifecycle Hooks

HookPurpose
M.onExtensionLoadedLoads attributes + log from save; handles version migration
M.onSaveCurrentSaveSlotPersists playerAttributes.json and attributeLog.json
M.onCareerModulesActivatedCreates reputation attributes for all organizations
M.onLogbookGetEntriesGenerates Financial History and Rewards History logbook cards

Dependencies

  • career_career - active check, tutorial state
  • career_saveSystem - save slot paths
  • career_branches - branch definitions, attribute key ordering
  • career_modules_reputation - min/max reputation bounds
  • career_modules_log - internal log entries
  • freeroam_organizations - organization list for reputation attributes

Attribute Structure

attribute = {
  value  = 5000,             -- current value
  gains  = {all = 8000, gameplay = 3000, selling = 5000},
  losses = {all = -3000, buying = -3000},
  min    = nil,              -- optional floor (e.g. reputation)
  max    = nil,              -- optional ceiling
}

Reason Format

reason = {
  label = "Sold 3 Parts.",
  tags  = {"partsSold", "selling"},  -- converted to LUT internally
}

Built-in Attributes

AttributeDescription
moneyIn-game currency (starts at 10000, +3500 if tutorial disabled)
beamXPGeneral experience points
vouchersBonus stars for fast repairs
<branchId>XPPer-branch progression XP
<orgId>ReputationPer-organization reputation (clamped -50 to 700)

Usage Example

-- Award money + XP
career_modules_playerAttributes.addAttributes(
  {money = 500, beamXP = 50},
  {label = "Completed delivery", tags = {"gameplay", "delivery"}}
)

-- Check balance
local money = career_modules_playerAttributes.getAttributeValue("money")

Hooks Emitted

HookData
onPlayerAttributesChanged(change, reason) - notifies all systems of attribute mutations

See Also

  • payment - High-level pay/canPay wrappers
  • reputation - Reputation level calculations

Career Player Abstract Module

Provides the "Driver's Abstract" computer menu, which displays the player's insurance/driving record. Thin wrapper around the insurance system's abstract data.

Career Player Driving Module

M.dependencies = {'career_career'}

On this page

DependenciesInternal StatePublic APILifecycle HooksDependenciesAttribute StructureReason FormatBuilt-in AttributesUsage ExampleHooks EmittedSee Also