Understanding the DataStore Pattern
Mythic Framework uses a DataStore pattern for managing player and character state:GetData(key)- Retrieve dataSetData(key, value)- Update dataDeleteStore()- Remove DataStore
Player Access Methods
Source
Get player DataStore by server source ID. Parameters:
Returns:
Example:
PlayerData
Find player by arbitrary data field. Parameters:
Returns:
Example:
All
Get all online players. Returns:
Example:
Count
Get count of online players. Returns:
Example:
Character Access Methods
These methods are added by the Characters resource and extend the base Fetch component.
CharacterData
Find player by character data field. Parameters:
Returns:
Example:
SID
Find player by character State ID. Parameters:
Returns:
Example:
ID
Find player by character document ID. Parameters:
Returns:
Example:
Next
Get next player in iteration (for loops). Parameters:
Returns:
Example:
CountCharacters
Get count of online characters (players with selected character). Returns:
Example:
GetOfflineData
Get specific data from offline character (database query). Parameters:
Returns:
Example:
DataStore Object Methods
Once you have a DataStore object (player or character), you can use these methods:GetData
Retrieve data from the DataStore. Parameters:
Returns:
Example:
SetData
Update data in the DataStore. Parameters:
Example:
Character SetData automatically syncs to client with
Characters:Client:SetData event.Complete Usage Examples
Getting Character in Event Handler
Finding Character by Phone Number
Giving Cash to Online Player
Iterating All Characters for Server-Wide Event
Common Patterns
Safe Character Access
Always check if player and character exist:Getting Player Source from Character SID
Checking if Character is Online
Important Notes
DataStore vs Database
DataStore vs Database
DataStore: In-memory state for online players/characters (fast)
Database: Persistent storage (slower, for offline access)
- Use Fetch methods for online players (instant)
- Use Database queries for offline players (requires callback)
Player vs Character
Player vs Character
Player: Account-level data (AccountID, Identifier, Name)
Character: In-game character (SID, First, Last, Cash, Jobs, Phone, DOB)Players can have multiple characters. Always get Character from Player:
SetData Persistence
SetData Persistence
SetData updates in-memory DataStore only. Characters auto-save to database every ~10 minutes.For critical data, manually save:Performance
Performance
Fetch methods are very fast (in-memory lookup). Use them liberally:
Next Steps
Characters API
Character-specific methods
DataStore Pattern
Deep dive into DataStore architecture
Core - Database
Database queries for offline data
Player State
Understanding player state management