Overview
Multi-Character
Support for multiple characters per player
DataStore Pattern
In-memory state management with GetData/SetData
Auto-Save
MongoDB persistence with periodic saves
Fetch Component
Primary API for character access
Accessing Characters
Getting Active Character
The primary way to access character data is through the Fetch component. Pattern:Character Data Access Methods
Once you have a character DataStore object, use these methods:GetData
Retrieve character data. Signature:
Common Character Fields:
SID(number) - State ID (primary key)First(string) - First nameLast(string) - Last nameDOB(string) - Date of birthGender(number) - Gender codePhone(string) - Phone numberJobs(table) - Array of job objects (each withId,WorkplaceId,GradeId,GradeLevel)Cash(number) - Cash on handMetaData(table) - Additional character data
SetData
Update character data. Signature:Character SetData automatically syncs to client with
Characters:Client:SetData event.Finding Characters
By Server Source
Get character by player server ID (most common). Example:By State ID (SID)
Find player by character State ID. Example:By Character Data Field
Find player by any character field (phone, name, etc). Example:Offline Character Data
Get specific data from offline character (database query). Example:Common Patterns
Safe Character Access
Always validate player and character exist:Cash Management
Adding/Removing Cash:Bank balances are managed through the Banking component (
Banking.Balance:Get/Deposit/Withdraw/Charge), not through character SetData. See the Banking API for bank operations.Iterating All Online Characters
Getting Player Source from SID
Character Management Events
These events are triggered internally by the Characters system. You can listen to them but should not trigger them directly.
Character Selection
Event:Characters:Server:PlayerLoggedIn
Triggered when player selects a character and spawns.
Parameters:
source(number) - Player server ID
Character Logout
Event:Characters:Server:PlayerDropped
Triggered when player disconnects.
Parameters:
source(number) - Player server ID
Best Practices
Always Use Fetch Component
Always Use Fetch Component
✅ Correct:❌ Wrong:
Use SID for Database Operations
Use SID for Database Operations
Character SID is the primary key for database queries:
DataStore Pattern
DataStore Pattern
Use GetData/SetData methods, not direct table access:
Check if Character is Online
Check if Character is Online
Validate Before Modifying Cash
Validate Before Modifying Cash
Complete Examples
Job Payment System
Shop Purchase System
Next Steps
Core - Fetch
Complete Fetch component documentation
Characters - Events
Character-related events
Characters - Data Structure
Character data schema
Inventory API
Inventory management