> ## 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.

> Консольные команды модуля: lua_reload, lua_check, lua_list, lua_hooks, lua_perms, lua_precache и диагностика вывода.

# Console

# Консольные команды

Серверная консоль и rcon.

## Управление

| команда               |                                                                                |
| --------------------- | ------------------------------------------------------------------------------ |
| `lua_reload`          | пересоздать Lua-состояние и перечитать все плагины                             |
| `lua_reload <plugin>` | перезагрузить один плагин, остальных не трогая                                 |
| `lua_check <plugin>`  | прогнать только `manifest.lua` плагина, не запуская его                        |
| `lua_list`            | плагины, счётчики хендлеров, таймеров и открытых баз                           |
| `lua_hooks [событие]` | кто на что подписан, в порядке вызова                                          |
| `lua_exports`         | кто что публикует через `export()`                                             |
| `lua_profile`         | какой обработчик ест кадр; `lua_profile reset` обнуляет                        |
| `lua_precache`        | занятые и свободные слоты прекеша                                              |
| `lua_perms <что>`     | `groups`, `list`, `users`, `who`, `check`, `grant`, `revoke`, `save`, `reload` |

`lua_reload <plugin>` снимает хендлеры, таймеры, команды и базы плагина,
выполняет [`plugin.on_unload`](plugin/on_unload.md) и запускает `manifest.lua`,
затем `init.lua` заново с чистым кешем `require`.

<Note>
  После правок в `core/` и `lib/` нужна полная перезагрузка: их разделяют
  все плагины.
</Note>

`lua_check <plugin>` выполняет только `manifest.lua` — `plugin{}`, права,
конфиг — в отдельном одноразовом слоте, который не попадает в список
работающих плагинов и убирается сразу после проверки. `init.lua` не
запускается вовсе. Так ловится битый `plugin{}`, отсутствующий `require` или
синтаксическая ошибка в `manifest.lua` до того, как `lua_reload` реально
остановит плагин.

```
lua_check shop
manifest.lua OK: 'Shop' v1.0 by kotyarakryt, requires: class
```

## Порядок загрузки

`addons/lua/load_order.txt` задаёт, какие плагины грузятся первыми и в каком
порядке. Обработчики событий вызываются в том же порядке, поэтому файл решает,
кто выигрывает на отменяемом событии.

```
# одно имя в строке — папка плагина
godmode
damager
stats
```

Всё, чего в файле нет, идёт после по алфавиту — список не обязан быть полным.
Имя, которому не нашлось плагина, отмечается в консоли при старте: файл,
который врёт про порядок, хуже отсутствующего.

`lua_list` показывает итоговый порядок и сколько мест задано вручную.

`lua_list` показывает по каждому плагину, сколько он держит обработчиков (`h`),
таймеров (`t`) и открытых баз (`db`) — общая цифра говорит, что что-то течёт,
эта колонка говорит, кто именно.

## Профилировка

Единственный ответ на «какой плагин лагает». Выключена по умолчанию: чтение
часов на обработчик дёшево, но не бесплатно.

```
cslua_profile 1
// поиграть раунд
lua_profile
cslua_profile 0
```

```
2 handler(s) measured, 5.0 ms total:
      5.00 ms      21 calls    0.238 ms/call  ptest:ptest.custom (ptest.tick)
      0.00 ms       1 calls    0.000 ms/call  hello:hello.go (round_freeze_end)
```

Сортировка по суммарному времени, но смотреть надо на `ms/call`: обработчик
`weapon_fire` вызывается тысячи раз и обязан быть дешёвым, а обработчик
`round_start` может позволить себе больше.

## Диагностика вывода

| команда                    |                                                       |
| -------------------------- | ----------------------------------------------------- |
| `lua_chat <текст>`         | всем в чат, теги цвета работают                       |
| `lua_chat_as <id> <текст>` | то же от имени игрока: видно, как красит `{team}`     |
| `lua_hud <текст>`          | то же в HUD                                           |
| `lua_dhud <текст>`         | то же в DHUD                                          |
| `lua_test_ru`              | «Привет» в UTF-8 и CP1251 — какой вариант читается    |
| `lua_debug`                | id user messages, кеш игроков, 4 пробные строки в чат |

Вывод идёт всем подключённым — это способ увидеть сообщение глазами игрока.

## Cvar'ы модуля

| cvar                  | по умолчанию |                                                              |
| --------------------- | ------------ | ------------------------------------------------------------ |
| `cslua_cp1251`        | `0`          | конвертировать UTF-8 в CP1251 для старых клиентов            |
| `cslua_db_timeout_ms` | `200`        | дольше — запрос прерывается ошибкой; `0` снимает ограничение |
| `cslua_db_warn_ms`    | `25`         | дольше — предупреждение в консоль с именем плагина           |
| `cslua_profile`       | `0`          | замерять время обработчиков для `lua_profile`                |
