add doc/ru/scripting/builtins/librules.md

This commit is contained in:
MihailRis 2024-11-06 21:31:16 +03:00
parent d27179b6c3
commit d0545f36b2

View File

@ -0,0 +1,72 @@
# Библиотека *rules*
```lua
rules.create(
-- имя правила
name: str,
-- значение по-умолчанию
default: bool,
-- функция-обработчик изменения значения
[опционально] handler: function
) -> int
```
Создаёт правило. Если указан обработчик, возвращает id для возможности удаления.
> [!NOTE]
> Созданием правила считается вызов rules.create с назначением значения по-умолчанию.
> Не созданные правила могут быть использованы, но сброс через rules.reset приведёт
> к установке значения nil.
```lua
rules.listen(
-- имя правила
name: str,
-- функция-обработчик изменения значения
handler: function
) -> int
```
Добавляет обработчик изменения значения правила.
Возвращает id для возможности удаления.
Также позволяет подписаться на правило до его создания.
```lua
rules.unlisten(name: str, id: int)
```
Удаляет обработчик правила по id, если он существует.
```lua
rules.get(name: str) -> bool | nil
```
Возвращает значение правила или nil, если оно ещё не было создано.
```lua
rules.set(name: str, value: bool)
```
Устанавливает значение правила, вызывая обработчики. Может использоваться и
до создания правила.
```lua
rules.reset(name: str)
```
Сбрасывает значение правила к значению по-умолчанию.
## Стандартные правила
| Имя | Описание | По-умолчанию |
| -------------------- | --------------------------------------------------------------- | ------------ |
| cheat-commands | Разрешить команды, имена которых есть в массиве console.chears. | true |
| show-content-access | Разрешить панель доступа к контенту. | true |
| allow-flight | Разрешить полёт | true |
| allow-noclip | Разрешить включение noclip. | true |
| allow-attack | Разрешить атаковать сущности. | true |
| allow-destroy | Разрешить разрушение блоков. | true |
| allow-cheat-movement | Разрешить специальные клавиши быстрого перемещения. | true |
| allow-debug-cheats | Разрешить нечестные элементы управления на дебаг-панели. | true |