techage_modpack_ru_upd/ta4_addons/manual_RU.md

117 lines
7.5 KiB
Markdown
Raw Permalink Normal View History

2024-10-24 17:00:53 +03:00
# Дополнения к TA4
В настоящее время доступны следующие расширения для TA4:
- Сенсорный экран
## Сенсорный экран
[ta4_addons_touchscreen|image]
Сенсорный экран может использоваться как обычный дисплей TA4.
Кроме того, он поддерживает следующие команды, которые позволяют создавать форму, открываемую щелчком правой кнопкой мыши по сенсорному экрану:
- add_content: Пытается добавить элемент в форму сенсорного экрана. Принимает определение элемента в качестве полезной нагрузки. При успешном выполнении возвращает ID только что созданного элемента.
- update_content: Пытается изменить уже существующий элемент формы сенсорного экрана. Принимает определение элемента с дополнительным полем id, которое можно использовать для выбора элемента, который нужно обновить. При успешном выполнении возвращает true.
- remove_content: Пытается удалить существующий элемент из формы сенсорного экрана. Принимает хранилище в качестве полезной нагрузки. Единственным полем в этом хранилище должно быть поле id. При успешном выполнении возвращает true.
- private: Делает сенсорный экран частным. Форму могут отправлять только игроки с доступом к защите.
- public: Делает сенсорный экран общедоступным. Все игроки могут отправлять форму.
Определение элемента представляет собой структуру данных хранилища. Вы можете установить тип элемента в поле "type" этого хранилища.
Вы можете устанавливать свойства элемента в качестве дополнительных полей в этом хранилище.
Всегда предоставляются более или менее разумные значения по умолчанию для этих дополнительных свойств,
но настоятельно рекомендуется всегда предоставлять значения самостоятельно, поскольку значения по умолчанию не задокументированы и могут измениться.
При отправке формы в контроллер возвращается хранилище в качестве сообщения.
Поля, доступные в обратных вызовах Minetest on_receive_fields, устанавливаются в этом хранилище.
Поле "_sent_by" содержит имя отправителя.
Вы можете получить доступ к этому хранилищу, используя функцию $get_msg(true) контроллера Lua.
Пожалуйста, не забудьте о "true" в качестве первого параметра; в противном случае вы получите доступ только к строковому представлению сообщения.
Форма отображается с использованием формы версии 3 (включены реальные координаты), поэтому используйте последнюю версию клиента Minetest.
Когда кто-то открывает сенсорный экран, сообщение будет отправлено контроллеру.
Это сообщение содержит хранилище, в котором поле "_touchscreen_opened_by" устанавливается в соответствующее имя игрока.
### Поддерживаемые элементы и их свойства
[ta4_addons_touchscreen|image]
Обратите внимание: Этот список может быть изменен.
button: x, y, w, h, name, label
label: x, y, label
image: x, y, w, h, texture_name
animated_image: x, y, w, h, name, texture_name, frame_count, frame_duration, frame_start
item_image: x, y, w, h, item_name
pwdfield: x, y, w, h, name, label
field: x, y, w, h, name, label, default
field_close_on_enter: name, close_on_enter
textarea: x, y, w, h, name, label, default
image_button: x, y, w, h, texture_name, name, label
item_image_button: x, y, w, h, item_name, name, label
button_exit: x, y, w, h, name, label
image_button_exit: x, y, w, h, texture_name, name, label
box: x, y, w, h, color
checkbox: x, y, name, label, selected
Для получения дополнительной информации о значении этих элементов рекомендуется обратиться к файлу lua_api.txt в документации Minetest.
### Пример
[ta4_addons_touchscreen|image]
**Init:**
```lua
$events(true)
$loopcycle(0)
TOUCHSCREEN_NUM = 338
counter = 1
$send_cmnd(TOUCHSCREEN_NUM, "remove_content")
res = $send_cmnd(TOUCHSCREEN_NUM, "add_content", Store("type", "button", "w", 5, "label", counter))
res2 = $send_cmnd(TOUCHSCREEN_NUM, "add_content", Store("type", "button", "w", 5, "y", 2, "label", counter))
$print("ID: "..res)
```
**Loop:**
```lua
local num,msg = $get_msg(true)
if num == tostring(TOUCHSCREEN_NUM) and msg.next then
for k,v in msg.next() do
if k == "button" then
counter = counter + 1
$print(res)
$send_cmnd(TOUCHSCREEN_NUM, "update_content", Store("type", "button", "w", "5", "label", counter, "id", res))
if counter > 10 then
$send_cmnd(TOUCHSCREEN_NUM, "remove_content", Store("id", res2))
else
$send_cmnd(TOUCHSCREEN_NUM, "update_content", Store("type", "button", "w", "5", "y", 2, "label", counter, "id", res2))
end
end
$print(k..": "..v)
$display(TOUCHSCREEN_NUM, 0, k)
$display(TOUCHSCREEN_NUM, 0, v)
end
end
```
## Матричный экран
[ta4_addons_matrix_screen|image]
Экран Matrix имеет разрешение 16x16 пикселей.
Доступны различные палитры с 64 цветами каждая.
Для программирования экрана вы можете отправить строку, закодированную в формате base64, в качестве данных для команды "pixels".
Эта строка должна содержать 256 символов. Каждый символ соответствует одному пикселю, построчно от верхнего левого угла до нижнего правого угла.
Рекомендуется использовать программу TA4 Matrix Screen Programmer для удобного создания таких строк.
Палитру цветов можно изменить с помощью команды "palette".