Zum Inhalt

Statebag

Wrapper um FiveM-Statebags für spielerseitigen State-Austausch zwischen Server und Client.


Übersicht

  • Server: setzt und liest per Spieler-ID
  • Client: liest per Server-ID oder lokalen Player; kann auch Entity-Bags lesen

Statebags werden automatisch an alle Clients repliziert (replicated = true).


Server-API

-- Setzen
cv.setPlayerState(playerId, key, value)

-- Lesen
cv.getPlayerState(playerId, key)         -- → value | nil

-- Löschen
cv.removePlayerState(playerId, key)

-- Alle Keys
cv.getAllPlayerStates(playerId)           -- → table

Beispiel

-- Faction-Status setzen (wird intern z.B. von factions.lua genutzt)
cv.setPlayerState(source, 'faction', 'lspd')
cv.setPlayerState(source, 'factionRank', 3)
cv.setPlayerState(source, 'factionDuty', true)

-- Lesen auf dem Server
local faction = cv.getPlayerState(source, 'faction')
local duty    = cv.getPlayerState(source, 'factionDuty')

-- Löschen beim Charakter-Wechsel
cv.removePlayerState(source, 'instanceName')

Cleanup

Beim playerDropped-Event werden alle States des Spielers automatisch geleert.


Client-API

-- Lokalen Spieler lesen
cv.getLocalPlayerState(key)              -- → value

-- Lokalen Spieler setzen (repliziert an Server)
cv.setLocalPlayerState(key, value)

-- Anderen Spieler lesen (via Server-ID)
cv.getPlayerState(serverId, key)         -- serverId = -1 → lokaler Spieler

-- Alle States eines Spielers
cv.getAllPlayerStates(serverId)          -- → Player(n).state object

-- Entity-Statebag lesen
cv.statebag.fromEntity(entity)          -- → Entity(n).state
cv.statebag.fromLocalPlayer(key)        -- → LocalPlayer.state[key]

Beispiel

-- Faction-Status des lokalen Spielers lesen
local faction = cv.getLocalPlayerState('faction')
local duty    = cv.getLocalPlayerState('factionDuty')

-- Anderen Spieler (Server-ID 42) lesen
local rank = cv.getPlayerState(42, 'factionRank')

-- Fahrzeug-Entity State lesen
local bag = cv.statebag.fromEntity(vehicle)
local vehId = bag.persistentVehicleId

Interne Standard-Keys

Diese Keys werden vom Framework intern gesetzt und können gelesen werden:

Key Typ Gesetzt von
faction string factions
factionRank number factions
factionDuty boolean factions
jobDuty boolean jobs
bucketId number buckets
instanceName string instance
instanceType string instance
instanceKey string instance
metadata string (JSON) player