96 lines
3.8 KiB
Markdown
96 lines
3.8 KiB
Markdown
# Скриптинг
|
||
|
||
В качестве языка сценариев используется LuaJIT
|
||
|
||
Подразделы:
|
||
- [События движка](scripting/events.md)
|
||
- [Пользовательский ввод](scripting/user-input.md)
|
||
- [Файловая система и сериализация](scripting/filesystem.md)
|
||
- [Свойства и методы UI элементов](scripting/ui.md)
|
||
- [Сущности и компоненты](scripting/ecs.md)
|
||
- [Библиотеки](#)
|
||
- [block](scripting/builtins/libblock.md)
|
||
- [cameras](scripting/builtins/libcameras.md)
|
||
- [entities](scripting/builtins/libentities.md)
|
||
- [hud](scripting/builtins/libhud.md)
|
||
- [inventory](scripting/builtins/libinventory.md)
|
||
- [item](scripting/builtins/libitem.md)
|
||
- [mat4](scripting/builtins/libmat4.md)
|
||
- [pack](scripting/builtins/libpack.md)
|
||
- [player](scripting/builtins/libplayer.md)
|
||
- [quat](scripting/builtins/libquat.md)
|
||
- [vec2, vec3, vec4](scripting/builtins/libvecn.md)
|
||
- [world](scripting/builtins/libworld.md)
|
||
- [Модуль core:bit_converter](scripting/modules/core_bit_converter.md)
|
||
- [Модуль core:data_buffer](scripting/modules/core_data_buffer.md)
|
||
- [Модули core:vector2, core:vector3](scripting/modules/core_vector2_vector3.md)
|
||
|
||
## Аннотации типов данных
|
||
|
||
В документации к Lua библиотекам используются аннотации типов,
|
||
не являющиеся частью синтаксиса Lua.
|
||
|
||
- vector - массив из трех или четырех чисел
|
||
- vec2 - массив из двух чисел
|
||
- vec3 - массив из трех чисел
|
||
- vec4 - массив из четырех чисел
|
||
- quat - массив из четырех чисел - кватернион
|
||
- matrix - массив из 16 чисел - матрица
|
||
|
||
```lua
|
||
require "контентпак:имя_модуля" -- загружает lua модуль из папки modules (расширение не указывается)
|
||
```
|
||
|
||
## Библиотека *gui*
|
||
|
||
Библиотека содержит функции для доступа к свойствам UI элементов. Вместо gui следует использовать объектную обертку, предоставляющую доступ к свойствам через мета-методы __index, __newindex:
|
||
|
||
```lua
|
||
print(document.some_button.text) -- где 'some_button' - id элемета
|
||
document.some_button.text = "новый текст"
|
||
```
|
||
|
||
В скрипте макета `layouts/файл_макета.xml` - `layouts/файл_макета.xml.lua` уже доступна переменная **document** содержащая объект класса Document
|
||
|
||
```python
|
||
gui.str(text: str, context: str) -> str
|
||
```
|
||
|
||
Возращает переведенный текст.
|
||
|
||
```python
|
||
gui.get_viewport() -> {int, int}
|
||
```
|
||
|
||
Возвращает размер главного контейнера (окна).
|
||
|
||
```python
|
||
gui.get_env(document: str) -> table
|
||
```
|
||
|
||
Возвращает окружение (таблица глобальных переменных) указанного документа.
|
||
|
||
```python
|
||
get_locales_info() -> таблица таблиц где
|
||
ключ - id локали в формате isolangcode_ISOCOUNTRYCODE
|
||
значение - таблица {
|
||
name: str # название локали на её языке
|
||
}
|
||
```
|
||
|
||
Возвращает информацию о всех загруженных локалях (res/texts/\*).
|
||
|
||
## Библиотека time
|
||
|
||
```python
|
||
time.uptime() -> float
|
||
```
|
||
|
||
Возвращает время с момента запуска движка в секундах.
|
||
|
||
```python
|
||
time.delta() -> float
|
||
```
|
||
|
||
Возвращает дельту времени (время прошедшее с предыдущего кадра)
|