Stream-synced metadata
Stream-synced metadata добавляет к server entities значения gamemode. Значение получают игроки, которые сейчас stream entity, а также будущие stream-in snapshot.
const vehicle = vimp.vehicles.create(
vimp.hash('adder'),
94.5,
-1940.2,
20.7,
307,
{ dimension: 0 },
)
if (vehicle) {
vehicle.setStreamSyncedMeta('fuel', 65)
vehicle.setStreamSyncedMeta('owner', null)
}Клиент читает replicated values, не изменяя авторитетное хранилище.
vimp.on('streamSyncedMetaChange', (change) => {
if (
change.entityType === vimp.entities.ENTITY_TYPE.Vehicle &&
change.key === 'fuel'
) {
console.log(`Vehicle #${change.entityId} fuel:`, change.newValue)
}
})
vimp.on('vehicleStreamIn', (vehicle) => {
if (!vehicle) return
if (vehicle.remoteId === null) return
const fuel = vimp.entities.getStreamSyncedMeta<number>(
vimp.entities.ENTITY_TYPE.Vehicle,
vehicle.remoteId,
'fuel',
)
console.log(`Vehicle #${vehicle.remoteId} streamed in with fuel ${fuel}`)
})Значения должны проходить JSON serialization. Используйте records, строки, числа, booleans, arrays и null. Не передавайте функции, class instances, циклические структуры или undefined. Для удаления вызывайте deleteStreamSyncedMeta(key).
Client event streamSyncedMetaChange вызывается и для initial snapshot. oldValue равен undefined при первом наблюдении, newValue — при удалении. Выход из streaming range очищает local store без delete events.
Metadata подходит для компактного presentation state: owner label, fuel, faction или interaction flags. Большие и приватные данные храните на сервере.