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