Skip to content

Транспорт

Создавайте сетевой транспорт на сервере. Manager возвращает null, если исчерпан max_vehicles.

ts
vimp.on('playerConnected', (player) => {
  const vehicle = vimp.vehicles.create(
    vimp.hash('adder'),
    94.5,
    -1940.2,
    20.7,
    307,
    {
      primaryColor: 27,
      secondaryColor: 111,
      numberPlate: 'VIMP',
      lockState: 1,
      engineOn: true,
      dimension: player.dimension,
    },
  )

  if (vehicle) {
    vehicle.setStreamSyncedMeta('ownerId', player.id)
    player.putIntoVehicle(vehicle.id, -1)
  }
})

Изменяемые position, rotation, paint, plate, dirt, livery, lock state, health, engine state и dimension обновляют авторитетное состояние и отправляются клиентам, которые stream машину.

Ownership

VIMP не навязывает gameplay-модель владения. Компактный owner key можно хранить в stream-synced metadata для отображения, а авторитетную запись — в server application state или database.

Перед изменением проверяйте:

  • имеет ли sender доступ к машине;
  • существует ли entity;
  • находится ли игрок достаточно близко и в том же dimension;
  • разрешено ли запрошенное значение правилами gamemode.

Client vehicle содержит локальный id, nullable remoteId и GTA handle. Generic metadata API использует remoteId, natives — handle. Вне streaming range wrapper может существовать с handle === 0.

Явно удаляйте временный транспорт после завершения его gameplay scope.

VIMP developer documentation