Skip to content

Типизированные события

Опишите событие один раз и подключите декларацию в отдельные server/client TypeScript-проекты. Так payload проверяется на обеих сторонах, а конфликтующие глобальные объявления vimp не смешиваются.

Сервер:

ts
vimp.on('garage:spawn', (player, payload) => {
  const vehicle = vimp.vehicles.create(
    vimp.hash(payload.model),
    94.5,
    -1940.2,
    20.7,
    307,
    { numberPlate: 'VIMP', engineOn: true },
  )

  if (vehicle) {
    player.emit('garage:spawned', { vehicleId: vehicle.id })
  }
})

Клиент:

ts
vimp.on('garage:spawned', ({ vehicleId }) => {
  vimp.notify(`Vehicle #${vehicleId} is ready`)
})

vimp.emitServer('profile:ready', { nickname: 'ViceRider' })

Контракты событий хранятся рядом с соответствующим контекстом примера и проверяются отдельными tsconfig.

VIMP developer documentation