added doc/ru/Консоль.md
This commit is contained in:
parent
fd93994030
commit
5e4dab1b6b
109
doc/ru/Консоль.md
Normal file
109
doc/ru/Консоль.md
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
# Консоль
|
||||||
|
|
||||||
|
Для работы с командным интерпретатором предоставляется библиотека **console**
|
||||||
|
|
||||||
|
## Создание команд
|
||||||
|
|
||||||
|
Для создания команды консоли используется следующая функция:
|
||||||
|
|
||||||
|
```python
|
||||||
|
console.add_command(схема: str, исполнитель: function)
|
||||||
|
```
|
||||||
|
|
||||||
|
Схема имеет следующий синтаксис:
|
||||||
|
|
||||||
|
```
|
||||||
|
название позиционные параметры {именованные параметры}
|
||||||
|
```
|
||||||
|
|
||||||
|
Название может содержать:
|
||||||
|
- латинницу
|
||||||
|
- цифры (кроме первого символа)
|
||||||
|
- `.`, `_`, `-`
|
||||||
|
|
||||||
|
Позиционные параметры разделяются пробелами и имеют следующий синтаксис:
|
||||||
|
|
||||||
|
```
|
||||||
|
название:тип (вариант 1)
|
||||||
|
название:тип=по-умолчанию (вариант 2)
|
||||||
|
название:тип~центральное-значение (вариант 3)
|
||||||
|
название:тип=по-умолчанию~центральное-значение (вариант 4)
|
||||||
|
```
|
||||||
|
|
||||||
|
Доступные типы:
|
||||||
|
- **int** - целое число
|
||||||
|
- **num** - дробное число
|
||||||
|
- **str** - строка
|
||||||
|
- **sel** - селектор (id объекта представленный целым числом)
|
||||||
|
- **enum** - перечисление
|
||||||
|
|
||||||
|
На вариантах 3 и 4 показан оператор `~` позволяющий использовать относительные значения. *Центральное значение* - значение, относительно которого будет указываться пользовательское. Например позиция игрока.
|
||||||
|
|
||||||
|
Относительный оператор работает только с числами (num или int)
|
||||||
|
|
||||||
|
В качестве центральных значений могут указываться переменные, назначаемые через **console.set**.
|
||||||
|
|
||||||
|
Пример:
|
||||||
|
|
||||||
|
```python
|
||||||
|
x:num~pos.x
|
||||||
|
```
|
||||||
|
|
||||||
|
Переменные можно указывать и в качестве значений по-умолчанию, при использовании префикса `$`:
|
||||||
|
|
||||||
|
```python
|
||||||
|
t:int=$time
|
||||||
|
```
|
||||||
|
|
||||||
|
Перечисления указывазываются в формате:
|
||||||
|
|
||||||
|
```python
|
||||||
|
mode:[replace|destruct|none]
|
||||||
|
```
|
||||||
|
|
||||||
|
Либо через переменную:
|
||||||
|
|
||||||
|
```python
|
||||||
|
mode:enum $modes
|
||||||
|
```
|
||||||
|
|
||||||
|
Селекторы указываются с префиксом `@`. На данный момент являются заглушкой, по причине отсутствия объектной модели. Следует делать опциональными и использовать переменные:
|
||||||
|
|
||||||
|
```python
|
||||||
|
obj:sel=$obj.id # obj.id - id игрока
|
||||||
|
```
|
||||||
|
|
||||||
|
Именованные аргументы указываются в специальном блоке, ограниченном фигурными скобками `{ }` по той же схеме.
|
||||||
|
|
||||||
|
Пример:
|
||||||
|
|
||||||
|
```python
|
||||||
|
eval name:str="World" {greeting:str='Hello'}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Примеры схем команд
|
||||||
|
|
||||||
|
Схемы существующих команд можно найти в файле `res/script/stdcmd.lua`.
|
||||||
|
|
||||||
|
Пример - команда **tp**:
|
||||||
|
|
||||||
|
```python
|
||||||
|
tp obj:sel=$obj.id x:num~pos.x y:num~pos.y z:num~pos.z
|
||||||
|
```
|
||||||
|
|
||||||
|
Полный lua код создания команды:
|
||||||
|
|
||||||
|
```lua
|
||||||
|
console.add_command(
|
||||||
|
"tp obj:sel=$obj.id x:num~pos.x y:num~pos.y z:num~pos.z",
|
||||||
|
"Teleport object",
|
||||||
|
function (args, kwargs)
|
||||||
|
player.set_pos(unpack(args))
|
||||||
|
end
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
- В args передаются готовые значения позиционных аргументов.
|
||||||
|
- В kwargs передается таблица значений именованных аргументов.
|
||||||
|
|
||||||
|
Проверку и приведение типов интерпретатор команд производит автоматически.
|
||||||
Loading…
x
Reference in New Issue
Block a user