Работа с баттнмапами¶
Описание таблицы ButtonMap¶
pos- Положение баттнмапы относительно координат вагонаang- Угол поворота баттнмапы относительно вагонаwidth- Ширина баттнмапыheight- Высота баттнмапыscale- Коэффицент размера баттнмапыsensor- Является ли данная баттнмапа плоскостью, которая будет передавать координаты нажатий в системуsystemsystem- см.sensorhide- если данное значение задано, то оно будет использованно как коэффицент для дальности прорисовки.hideseat- если данное значение задано, то оно будет использованно как коэффицент для дальности прорисовки, но только если человек сидит в сиденье, не пренадлежащем данному вагонуbuttons: таблица с описанием кнопокID- ID кнопкиx- x координата кнопки относительно баттнмапыy- y координата кнопки относительно баттнмапыradius- радиус зоны взаимодействия, используется еслиwилиhне заданыw- ширина зоны взаимодействияh- высота зоны взаимодействияtooltip- подпись для кнопки.model: таблица с описанием модели кнопкиname- имя модели кнопки. Стандартное значение - ID кнопкиmodel- путь до модели кнопки. Стандартное значение -models/metrostroi/81-717/button07.mdlpos- позиция модели кнопки относительно позиции кнопки.ang- угол поворота кнопки относительно баттнмапы.color- цвет модели кнопкиcolora- цвет модели кнопки с альфа-каналом. Имеет больший приоритет, чем простойcolorskin- скин модели кнопкиhide- если данное значение задано, то оно будет использованно как коэффицент для дальности прорисовки.hideseat- если данное значение задано, то оно будет использованно как коэффицент для дальности прорисовки, но только если человек сидит в сиденье, не пренадлежащем данному вагонуscale- масштаб модели кнопкиbscale- масштаб кости с id=0. Подробнее можно узнать из методаEntity:ManipulateBoneScalevmin- минимальное значение для активации анимацииvmax- максимальное значение для активации анимацииmin- значение начала анимацииmax- значение конца анимацииspeed- скорость анимацииdamping- демпфирование анимацииstickyness- "прилипчивость" анимацииvar- сетевая переменная, которая будет использована для активации данной анимацииgetfunc- функция, используемая для получения состояния аниамации. Получает энтити вагона, vmin, vmax, var. Возвращает booldisable- если эта кнопка будет включена, тогда кнопка с этим именем будет спрятана. Полезно для крышек.disableinv- тоже самое, что иdisable, но инвертированноеdisableoffиdisableon- если текущая кнопка выключена, тогда кнопка с именемdisableoffбудет спрятана. Если текущая кнопка включена, тогда кнопка с именемdisableonбудет спрятана.disablevar- если эта сетевая переменная будет равнаtrue, тогда эта кнопка будет скрытаsndid- ID звука. По умолчанию равен ID кнопкиsndvol- громкость звука. По умолчанию равна 1sndpitch- высота звука. По умолчанию равна 1sndmin- минимальная дистанция, от которого данный звук будет проигран. По умолчанию равен 100sndmax- максимальная дистанция, до которого данный звук будет проигран. По умолчанию равен 1000sndang- угол, под которым данный звук будет проигран. По умолчанию равенAngle(0, 0, 0)snd- функция. Получает булево значение сетевой переменной (выражениеvar > 0) и сырую переменную. Должна вернуть ID звука, который необходимо проиграть.plomb: таблица, описывающия пломбу- все переменные, описывающие модель (pos, z, x, y, ang, color, skin, hide, hideseat, bscale, scale) как в таблице model И
var- сетевая переменная, которая будет переключать данную пломбу
lamp: таблица, описывающая лампочку- все переменные, описывающие модель (pos, z, x, y, ang, color, skin, hide, hideseat, bscale, scale) как в таблице model И
anim- флаг, обозначающий то, нужно ли анимировать данную лампочку ровно также, как и модель кнопкиvar- сетевая переменная, управляющая анимайцией данной лампочкиmin- значение начала анимацииmax- значение конца анимацииspeed- скорость анимацииgetfunc- функция, используемая для получения состояния аниамации. Получает энтити вагона, vmin, vmax, var. Возвращает boolhidden- ¯\(ツ)/¯
lamps: таблица с множеством объектов, описывающих лампы. Имеют формат как таблицаlamp.labels: таблица с множеством объектов, описывающих "подписи". Объекты содержат все переменные описывающие модель (pos, z, x, y, ang, color, skin, hide, hideseat, bscale, scale) как в таблице model. Позволяет добавить статичные модели (модели, которые не будут зависимы от какой либо сетевой переменной)
Изменение существующих баттнмап¶
MEL.MoveButtonMap - передвинуть баттнмапу¶
MEL.MoveButtonMap(ent, buttonmap_name, new_pos, new_ang) - передвигает баттнмапу и пересоздает её клиентские пропы
(scope: Client)
ent- энтити вагонаbuttonmap_name- имя баттнмапы[new_pos]- новое положение баттнмапы[new_ang]- новый поворот баттнмапы
Пример использования:
| Lua | |
|---|---|
1 2 3 4 5 6 7 8 9 10 | |
MEL.MoveButtonMapButton - передвинуть кнопку в баттнмапе¶
MEL.MoveButtonMapButton(ent, buttonmap_name, button_name, x, y) - передвигает отдельную кнопку в баттнмапе
(scope: Client)
ent- энтити вагонаbuttonmap_name- имя баттнмапыbuttonmap_name- имя (ID) баттнмапы[x]- новое положение по координате X[y]- новый положение по координате Y
Пример использования:
| Lua | |
|---|---|
1 2 3 4 5 6 7 8 | |
MEL.ModifyButtonMap - контекст для изменения баттнмапы и её кнопок¶
MEL.ModifyButtonMap(ent, buttonmap_name, buttonmap_callback, button_callback) - позволяет изменить любой параметр в самой баттнмапе и каждой отдельной кнопке
(scope: Client)
ent- энтити вагонаbuttonmap_name- имя баттнмапы[buttonmap_callback]- функция, которая должна изменить баттнмапу. Принимает ссылку на таблицу баттнмапы[button_callback]- функция, которая должна изменить отдельные кнопки. Принимает ссылку на таблицу кнопки. Вызывается на каждую кнопку
Пример использования:
| Lua | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 | |
MEL.NewButtonMapButton - добавить кнопку в существующую баттнмапу¶
MEL.NewButtonMapButton(ent, buttonmap_name, button_data) - добавляет новую кнопку в уже существующую баттнмапу
(scope: Client)
ent- энтити вагонаbuttonmap_name- имя баттнмапыbutton_data- описание кнопки
Пример использования:
| Lua | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
MEL.OverrideHidePanel - перезаписать логику HidePanel для баттнмапы¶
Tip
Данную функцию стоит использовать, если вам необходимо изменить поведение ранее вызванной функции HidePanel (допустим, если она вызывается в стандартном Think метростроя)
MEL.OverrideHidePanel(ent, buttonmap_name, value_callback) - позволяет изменить логику для функции HidePanel, которую уже вызывали до этого в коде для этой баттнмапы
(scope: Client)
ent- энтити вагонаbuttonmap_name- имя баттнмапыvalue_callback- функция, принимающая энтити вагона, которая должна возврашать true или false в зависимости от того, необходимо ли скрывать данную баттнмапу
Пример использования:
| Lua | |
|---|---|
1 2 3 4 5 6 7 8 9 | |
MEL.NewButtonMap - создать новую баттнмапу¶
MEL.NewButtonMap(ent, buttonmap_name, buttonmap_data, do_not_override) - создает новую баттнмапу
(scope: Client)
ent- энтити вагонаbuttonmap_name- имя баттнамапыbuttonmap_data- описание баттнмапы[do_not_override]- вызывать ли ошибку если баттнмапа с таким названием уже создана?
Пример использования:
| Lua | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | |
MEL.AddToSyncTable - добавить сетевую переменную в таблицу синхронизации¶
MEL.AddToSyncTable(ent, sync_key) - добавляет сетевую переменную в таблицу синхронизации
(scope: SERVER)
ent- энтити вагонаsync_key- имя сетевой переменной
Пример использования:
| Lua | |
|---|---|
1 | |