> ## Documentation Index
> Fetch the complete documentation index at: https://cs-lua.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# hook — Раунд и бомба

> Одна система на движковые события и на свои

# Раунд и бомба

<h2 id="round_start">
  round:start
</h2>

Раунд начался.

```lua theme={null}
hook.add("round:start", id, function(e)
	...
end)
```

<h3 id="round_start-поля-события">
  Поля события
</h3>

| поле | тип |                   |
| ---- | --- | ----------------- |
| `—`  | —   | событие без полей |

<Warning>
  Событие приходит из ReGameDLL. На ванильном `mp.dll` оно не
  срабатывает никогда.
</Warning>

<h2 id="round_end">
  round:end
</h2>

Раунд закончился.

```lua theme={null}
hook.add("round:end", id, function(e)
	...
end)
```

<h3 id="round_end-поля-события">
  Поля события
</h3>

| поле       | тип    |                                |
| ---------- | ------ | ------------------------------ |
| `e.winner` | number | `1` — CT, `2` — T, `3` — ничья |

<Warning>
  Событие приходит из ReGameDLL. На ванильном `mp.dll` оно не
  срабатывает никогда.
</Warning>

<h2 id="round_freeze_end">
  round:freeze\_end
</h2>

Заморозка кончилась, игроки могут двигаться.

```lua theme={null}
hook.add("round:freeze_end", id, function(e)
	...
end)
```

<h3 id="round_freeze_end-поля-события">
  Поля события
</h3>

| поле | тип |                   |
| ---- | --- | ----------------- |
| `—`  | —   | событие без полей |

<Warning>
  Событие приходит из ReGameDLL. На ванильном `mp.dll` оно не
  срабатывает никогда.
</Warning>

<h2 id="round_balance_teams">
  round:balance\_teams
</h2>

Автобаланс только что раскидал игроков по командам.

```lua theme={null}
hook.add("round:balance_teams", id, function(e)
	...
end)
```

<h3 id="round_balance_teams-поля-события">
  Поля события
</h3>

| поле | тип |                   |
| ---- | --- | ----------------- |
| `—`  | —   | событие без полей |

Приходит уже после перемещения — кого именно перекинули, событие не говорит; команду каждого игрока смотри через `p:team()` или лови `player:team_change`.

<Warning>
  Событие приходит из ReGameDLL. На ванильном `mp.dll` оно не
  срабатывает никогда.
</Warning>

### Смотри также

* [player:team\_change](gameplay.md#player_team_change)

<h2 id="round_intermission">
  round:intermission
</h2>

Карта закончилась, сервер вот-вот покажет табло перед сменой карты.

```lua theme={null}
hook.add("round:intermission", id, function(e)
	...
end)
```

<h3 id="round_intermission-поля-события">
  Поля события
</h3>

| поле | тип |                   |
| ---- | --- | ----------------- |
| `—`  | —   | событие без полей |

Раньше, чем `server:map_change`: мир ещё цел, сущности ещё на месте. Последняя точка для финального сохранения статистики перед сменой карты.

<Warning>
  Событие приходит из ReGameDLL. На ванильном `mp.dll` оно не
  срабатывает никогда.
</Warning>

### Смотри также

* [server:map\_change](lifecycle.md#map_change)

<h2 id="bomb_planted">
  bomb:planted
</h2>

Бомба заложена.

```lua theme={null}
hook.add("bomb:planted", id, function(e)
	...
end)
```

<h3 id="bomb_planted-поля-события">
  Поля события
</h3>

| поле       | тип           |                                                       |
| ---------- | ------------- | ----------------------------------------------------- |
| `e.player` | player \| nil | кто заложил; `nil`, если игрока установить не удалось |

<Warning>
  Событие приходит из ReGameDLL. На ванильном `mp.dll` оно не
  срабатывает никогда.
</Warning>

<h2 id="bomb_defuse_start">
  bomb:defusing
</h2>

Игрок начал разминирование.

```lua theme={null}
hook.add("bomb:defusing", id, function(e)
	...
end)
```

<h3 id="bomb_defuse_start-поля-события">
  Поля события
</h3>

| поле        | тип     |                                                          |
| ----------- | ------- | -------------------------------------------------------- |
| `e.player`  | player  | кто начал разминировать                                  |
| `e.defuser` | boolean | с набором для разминирования (быстрее) или голыми руками |

Не путать с `bomb:defused` — то приходит один раз в конце, успешно или нет; это — в момент начала попытки.

<Warning>
  Событие приходит из ReGameDLL. На ванильном `mp.dll` оно не
  срабатывает никогда.
</Warning>

### Смотри также

* [bomb:defused](round.md#bomb_defused)

<h2 id="bomb_defused">
  bomb:defused
</h2>

Попытка разминирования завершилась.

```lua theme={null}
hook.add("bomb:defused", id, function(e)
	...
end)
```

<h3 id="bomb_defused-поля-события">
  Поля события
</h3>

| поле        | тип           |                  |
| ----------- | ------------- | ---------------- |
| `e.player`  | player \| nil | кто разминировал |
| `e.success` | boolean       | успел ли         |

Событие приходит и при неудаче — проверяй `e.success`.

<Warning>
  Событие приходит из ReGameDLL. На ванильном `mp.dll` оно не
  срабатывает никогда.
</Warning>

<h2 id="bomb_exploded">
  bomb:exploded
</h2>

Бомба взорвалась.

```lua theme={null}
hook.add("bomb:exploded", id, function(e)
	...
end)
```

<h3 id="bomb_exploded-поля-события">
  Поля события
</h3>

| поле            | тип    |                   |
| --------------- | ------ | ----------------- |
| `e.x, e.y, e.z` | number | координаты взрыва |

Игрока в событии нет: запоминай заложившего в `bomb:planted`, если он нужен.

<Warning>
  Событие приходит из ReGameDLL. На ванильном `mp.dll` оно не
  срабатывает никогда.
</Warning>

<h2 id="bomb_carrier">
  bomb:carrier
</h2>

Игра только что выбрала, кому достанется бомба в этом раунде.

```lua theme={null}
hook.add("bomb:carrier", id, function(e)
	...
end)
```

<h3 id="bomb_carrier-поля-события">
  Поля события
</h3>

| поле       | тип           |                                                     |
| ---------- | ------------- | --------------------------------------------------- |
| `e.player` | player \| nil | кто несёт бомбу; `nil`, если игра никого не выбрала |

Не отменяемое: кто несёт бомбу, событие не меняет, только сообщает.

<Warning>
  Событие приходит из ReGameDLL. На ванильном `mp.dll` оно не
  срабатывает никогда.
</Warning>

### Смотри также

* [bomb:planted](round.md#bomb_planted)

<h2 id="round_remove_guns">
  round:remove\_guns
</h2>

У всех игроков вот-вот заберут оружие.

```lua theme={null}
hook.add("round:remove_guns", id, function(e)
	...
end)
```

<h3 id="round_remove_guns-поля-события">
  Поля события
</h3>

| поле | тип |                   |
| ---- | --- | ----------------- |
| `—`  | —   | событие без полей |

<Warning>
  Событие приходит из ReGameDLL. На ванильном `mp.dll` оно не
  срабатывает никогда.
</Warning>

<h2 id="round_dead_weapons">
  round:dead\_weapons
</h2>

Игра только что решила, что делать с оружием погибшего.

```lua theme={null}
hook.add("round:dead_weapons", id, function(e)
	...
end)
```

<h3 id="round_dead_weapons-поля-события">
  Поля события
</h3>

| поле       | тип    |                                                                                         |
| ---------- | ------ | --------------------------------------------------------------------------------------- |
| `e.player` | player | кого касается событие                                                                   |
| `e.mode`   | number | запись: `GR_PLR_DROP_GUN_ALL`, `GR_PLR_DROP_GUN_ACTIVE` или `GR_PLR_DROP_GUN_NO` из SDK |

Не про разрешить/запретить — про выбор одного из вариантов, поэтому `e:cancel()` тут нет: меняй `e.mode` напрямую.

<Warning>
  Событие приходит из ReGameDLL. На ванильном `mp.dll` оно не
  срабатывает никогда.
</Warning>

<h2 id="round_cleanup">
  round:cleanup
</h2>

Карта вот-вот сбросит мир между раундами.

```lua theme={null}
hook.add("round:cleanup", id, function(e)
	...
end)
```

<h3 id="round_cleanup-поля-события">
  Поля события
</h3>

| поле | тип |                   |
| ---- | --- | ----------------- |
| `—`  | —   | событие без полей |

<Warning>
  Событие приходит из ReGameDLL. На ванильном `mp.dll` оно не
  срабатывает никогда.
</Warning>
