Работа с баттнмапами¶
Описание таблицы ButtonMap¶
pos
- Положение баттнмапы относительно координат вагонаang
- Угол поворота баттнмапы относительно вагонаwidth
- Ширина баттнмапыheight
- Высота баттнмапыscale
- Коэффицент размера баттнмапыsensor
- Является ли данная баттнмапа плоскостью, которая будет передавать координаты нажатий в системуsystem
system
- см.sensor
hide
- если данное значение задано, то оно будет использованно как коэффицент для дальности прорисовки.hideseat
- если данное значение задано, то оно будет использованно как коэффицент для дальности прорисовки, но только если человек сидит в сиденье, не пренадлежащем данному вагонуbuttons
: таблица с описанием кнопокID
- ID кнопкиx
- x координата кнопки относительно баттнмапыy
- y координата кнопки относительно баттнмапыradius
- радиус зоны взаимодействия, используется еслиw
илиh
не заданыw
- ширина зоны взаимодействияh
- высота зоны взаимодействияtooltip
- подпись для кнопки.model
: таблица с описанием модели кнопкиname
- имя модели кнопки. Стандартное значение - ID кнопкиmodel
- путь до модели кнопки. Стандартное значение -models/metrostroi/81-717/button07.mdl
pos
- позиция модели кнопки относительно позиции кнопки.ang
- угол поворота кнопки относительно баттнмапы.color
- цвет модели кнопкиcolora
- цвет модели кнопки с альфа-каналом. Имеет больший приоритет, чем простойcolor
skin
- скин модели кнопкиhide
- если данное значение задано, то оно будет использованно как коэффицент для дальности прорисовки.hideseat
- если данное значение задано, то оно будет использованно как коэффицент для дальности прорисовки, но только если человек сидит в сиденье, не пренадлежащем данному вагонуscale
- масштаб модели кнопкиbscale
- масштаб кости с id=0. Подробнее можно узнать из методаEntity:ManipulateBoneScale
vmin
- минимальное значение для активации анимации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 |
|