add doc/en/console.md

This commit is contained in:
MihailRis 2024-06-13 20:27:55 +03:00
parent 14b0ec08f7
commit 561f6f0ea7
2 changed files with 111 additions and 2 deletions

109
doc/en/console.md Normal file
View File

@ -0,0 +1,109 @@
# Console
To work with the command interpreter, use the **console** library.
## Commands creation
To create a console command, use the following function:
```python
console.add_command(scheme: str, executor: function)
```
Scheme has the following syntax:
```
name positional arguments {keyword arguments}
```
Name may contain:
- latin letters
- digits (except the first character)
- `.`, `_`, `-`
Positional arguments are separated by spaces and have the following syntax:
```
name:type (option 1)
name:type=default (option 2)
name:type~origin (option 3)
name:type=default~origin (option 4)
```
Available types:
- **int** - integer
- **num** - floating-point number
- **str** - string
- **sel** - selector (object id represented by an integer)
- **enum** - enumeration
Options 3 and 4 show the `~` operator that allows you to use relative values. *Origin* - the value relative to which the user will be specified. For example, the player's position.
The relative operator only works with numbers (num or int)
Variables assigned via **console.set** can be specified as origin values.
Example:
```python
x:num~pos.x
```
Variables may be specified as default values using the `$` prefix:
```python
t:int=$time
```
Enumerations are declared the following way:
```python
mode:[replace|destruct|none]
```
Or with a variable:
```python
mode:enum $modes
```
Selectors are specified with the `@` prefix. At the moment they are unused due to the lack of an object model. Should be made optional and use variables:
```python
obj:sel=$obj.id # obj.id - player id
```
Keyword arguments are specified in a special block, delimited by curly braces `{ }`, following the same pattern as positional arguments.
Example:
```python
eval name:str="World" {greeting:str='Hello'}
```
## Command scheme examples
Schemes of standard commands can be found in the file `res/script/stdcmd.lua`.
Example - command **tp**:
```python
tp obj:sel=$obj.id x:num~pos.x y:num~pos.y z:num~pos.z
```
Full lua code of the command creation:
```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
)
```
- Checked values of positional arguments are passed to **args**.
- A table of keyword argument values is passed to **kwargs**.
The command interpreter performs type checking and casting automatically.

View File

@ -1,6 +1,6 @@
# Консоль
Для работы с командным интерпретатором предоставляется библиотека **console**
Для работы с командным интерпретатором предоставляется библиотека **console**.
## Создание команд
@ -83,7 +83,7 @@ eval name:str="World" {greeting:str='Hello'}
## Примеры схем команд
Схемы существующих команд можно найти в файле `res/script/stdcmd.lua`.
Схемы стандартных команд можно найти в файле `res/script/stdcmd.lua`.
Пример - команда **tp**: