Skip to content

Стриминг сущностей

Сервер создаёт объект, а клиент реагирует, когда объект входит в локальный streaming range.

Сервер:

ts
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)
}

Клиент:

ts
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}`)
})

Не храните GTA handle как постоянный идентификатор: при выходе сущности из стрима локальный handle перестаёт быть действительным.

VIMP developer documentation