# CyberM.events — client runtime

Runs inside the game process. Reads and presentation are local; anything that changes shared state has to go through the server.

3 functions.

## emit

```lua
CyberM.events.emit(event, [payload])
```

`SHARED` — Available without a live game instance.

Fires a local event.

Emits an event on the resource-local client bus and invokes matching local handlers. It never sends a packet; use the network event API for server communication.

| Parameter | Type | Required | Default |
|---|---|---|---|
| `event` | `string` | required | — |
| `payload` | `table` | optional | — |

Returns: `boolean`

Registered in `ResourceHost.cpp` (line 6558) as `LuaTriggerEvent`.

## off

```lua
CyberM.events.off(event, handler)
```

`SHARED` — Available without a live game instance.

Removes a handler registered with `on`.

Unregisters a local event handler id previously returned by `on`/`AddEventHandler`. Handler ids are owned by a resource generation and cannot remove another resource's callback.

| Parameter | Type | Required | Default |
|---|---|---|---|
| `event` | `string` | required | — |
| `handler` | `function` | required | — |

Returns: `boolean`

Registered in `ResourceHost.cpp` (line 6557) as `LuaRemoveEventHandler`.

## on

```lua
CyberM.events.on(event, handler)
```

`SHARED` — Available without a live game instance.

Listens for a local event.

Same as the `AddEventHandler` global. Events emitted by the plugin — `cyberm:pauseKey`, `cyberm:inspector:on` — arrive here.

| Parameter | Type | Required | Default |
|---|---|---|---|
| `event` | `string` | required | — |
| `handler` | `function` | required | — |

Returns: `handler id`

Registered in `ResourceHost.cpp` (line 6556) as `LuaAddEventHandler`.

