События
Built-in events сообщают об изменениях runtime и entities. Custom named events переносят JSON-совместимые данные конкретного gamemode.
Server handlers
Для built-in events vimp.on получает позиционные аргументы из declarations. Custom client event дополнительно передаёт отправившего его игрока.
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 })
}
})player.emit отправляет событие одному клиенту, vimp.emitAllClients — всем. Server vimp.emit выполняет синхронную локальную диспетчеризацию и ничего не отправляет по сети.
Client и UI
Client vimp.emitServer отправляет запрос серверу. CEF может вызвать emitClient или emitServer. События server-to-client и CEF-to-client приходят в client vimp.on.
Строгая типизация payload
Расширяйте пустые event maps через declaration merging в context-specific .d.ts, подключённом соответствующим tsconfig.
declare module '@vimp-mp/types/server' {
interface VimpServerEvents {
'inventory:use': { slot: number }
}
}TypeScript проверяет сборку, но не данные во время выполнения. Проверяйте любой client payload на сервере до изменения состояния.