Garry's Mod

Garry's Mod

Metrostroi Binds
28 Comments
DECS Babanch1k 31 Jan @ 11:57am 
на серверах можно использовать?
Рамирез 22 Nov, 2024 @ 6:09pm 
Вот бы еще можно было KV на скролл мыши забиндить, вообще бы сказка была
хакед я 12 Jun, 2023 @ 9:54am 
Не работает :(
art_men88 5 Mar, 2023 @ 4:07am 
Уменя перестала работать правая кнопка мышки при спавне состава лицом (т.е. не получается развернуть его вперед фарами
Snufingi123 27 Nov, 2022 @ 12:37pm 
I dont understand
Agent Smith 14 Oct, 2022 @ 1:37pm 
gans1341 , ограничений нет, кроме количества кнопок на клавиатуре :)
с помощью этого аддона можно назначать что угодно и куда угодно, однако, хук "Metrostroi.Binds.CustomBinds" нужно использовать только в том случае, если добавляется новый бинд, которого нет в исходной таблице биндов (такая имеется у каждого вагона)
GodOfTube 14 Oct, 2022 @ 1:27pm 
Спасибо большое Агент Смит. Вроде разобрался. А какие то ограничения по количеству назначаемых кнопок есть или можно повесить на клавиатуру всё? И имеются ли какие то наработки или идеи по выводу данных из Метростроя. Интересует каким образом можно вывести состояние сигнальных ламп. P. S. Это все делается под самодельный пульт машиниста. Вообще если есть конкретные идеи как это можно реализовать, был бы премного благодарен, естественно не за "спасибо". Потому что мой максимум это скетчи в ардуино. Логику Метростроя я пока слабовато понимаю.
Agent Smith 14 Oct, 2022 @ 9:34am 
gans1341 , для примера: можно создать новый файл на сервере в папке garrysmod\lua\autorun и назвать его binds.lua
далее - в этот файл прописать код:

hook.Add("Metrostroi.Binds.CustomBinds", "Example", function(addBind)
addBind("gmod_subway_81-717_mvm", "driver", "ARSToggle", KEY_O)
addBind("gmod_subway_81-717_mvm", "driver", "ALSToggle", KEY_P)
end)

таким образом будет добавлен бинд на тумблера АЛС и АРС по кнопкам О и Р (английским, разумеется)
GodOfTube 14 Oct, 2022 @ 6:46am 
Расскажите пожалуйста мне как начинающему куда прописывать эти строки?
hook.Add("Metrostroi.Binds.CustomBinds", "Example", function(addBind)
addBind("gmod_subway_81-717_mvm", "driver", "L_4Toggle", KEY_H)
addBind("gmod_subway_81-717_mvm", "driver", "VUSToggle", {KEY_LSHIFT, KEY_H})
end)

И можно назначать любые тумблеры или какие то конкретные? Хотел бы к примеру назначить включение АРС и АЛС на кнопки
Эхо Кубек Альфа 102 14 Mar, 2022 @ 11:26pm 
По легенде аддон может настраивать бинды на аснп, но может сломать метрострой.
Agent Smith 30 Nov, 2021 @ 12:09am 
туда же
[ulib] lua/metrostroi/binds/cl_binds.lua:134: bad argument #1 to 'WriteUInt' (number expected, got nil)
1. WriteUInt - [C]:-1
2. ButtonEvent - lua/metrostroi/binds/cl_binds.lua:134
3. fn - lua/metrostroi/binds/cl_binds.lua:152
4. unknown - addons/ulib/lua/ulib/shared/hook.lua:109
Agent Smith 30 Nov, 2021 @ 12:07am 
при спавне игрока на сервере в консоли идут ошибки
[ulib] lua/metrostroi/binds/cl_binds.lua:134: bad argument #1 to 'WriteUInt' (number expected, got nil)
1. WriteUInt - [C]:-1
2. ButtonEvent - lua/metrostroi/binds/cl_binds.lua:134
3. fn - lua/metrostroi/binds/cl_binds.lua:152
4. unknown - addons/ulib/lua/ulib/shared/hook.lua:109
HellReach  [author] 16 Aug, 2021 @ 7:55am 
SimModer, исправил
SimModer 16 Aug, 2021 @ 7:48am 
при открытии меню выдаёт ошибку:
[Metrostroi Binds [Experimental]] lua/metrostroi/binds/cl_binds_menu.lua:81: attempt to call upvalue 'T' (a nil value)
1. OpenMenu - lua/metrostroi/binds/cl_binds_menu.lua:81
2. fn - lua/metrostroi/binds/cl_binds_cmds.lua:40
3. unknown - lua/ulib/shared/hook.lua:109
HellReach  [author] 16 Aug, 2021 @ 6:13am 
Загрузил обновление с переводом некоторых действий с поиском фраз из самого метростроя.

Но не все действия прописаны в языковых файлах, придется вручную прописывать для перевода, чем я пока не хочу заниматься.
Agent Smith 16 Aug, 2021 @ 5:12am 
А планируется ли локализация ?
Было бы крайне полезно
Не каждый разберётся, что за кнопка такая L4_Toggle, например
HellReach  [author] 16 Aug, 2021 @ 2:40am 
Agent Smith, исправил
HellReach  [author] 16 Aug, 2021 @ 2:37am 
Без участия сервера - никак.
Сервер регулирует разрешенные действия.
ЛиАЗ_6212 16 Aug, 2021 @ 2:29am 
А как на клиенте, для собственного удобства, добавить клавиши, которых нет в меню привязки? Или это сервер решает, какие кнопки/выключатели можно привязать к клавише, а какие нельня?
Agent Smith 15 Aug, 2021 @ 2:40pm 
Команда загрузки выдает ошибку на клиенте:
metrostroi_binds_load

[Metrostroi Binds] lua/metrostroi/binds/sh_binds_file.lua:85: attempt to call field 'CollectActions' (a nil value)
1. unknown - lua/metrostroi/binds/sh_binds_file.lua:85
2. unknown - lua/includes/modules/concommand.lua:54
HellReach  [author] 14 Aug, 2021 @ 11:00am 
Файл содержит оригинальные привязки, к которым игрок может вернуться.
Хук используется только для добавления новых привязок.

То есть можно добавить включение фар на клавишу через хук и игрок получит эти "добавления". Но нельзя изменить существующие привязки у игрока, сервер не может делать это принудительно.

Если игрок зайдет на другой сервер, имея какую-либо кастомную привязку, она будет отключена, если сервер не добавил ее.

Таким образом сервером регулируются разрешенные привязки, но не заставляет клиент изменять их без ведома игрока.
Agent Smith 14 Aug, 2021 @ 10:29am 
Ну, если я верно понял, то система привязок всё-таки отталкивается от сервера - поэтому было бы крайне логично отправлять игрокам серверные файлы, а уже затем дать возможность их менять.
В противном случае - для чего сделан хук, позволяющий добавлять новые клавиши? Выходит, что игроки не могут получить эти добавления ?
HellReach  [author] 14 Aug, 2021 @ 10:21am 
Но для чего? Игроки не получат измененный файл без нажатия "reset".
Agent Smith 14 Aug, 2021 @ 10:08am 
А будет ли корректно работать вся эта история, если мной на клиенте будут созданы и сохранены json'ы, а затем я перенесу их на сервер ?
HellReach  [author] 14 Aug, 2021 @ 9:06am 
Так как таблицу биндов невозможно получить с клиента, была реализована генерация на самом сервере и сохранение в виде json файлов, которые являются "исходными" для клиентов.

При нажатии на "Reset" клиент запросит этот файл с сервера и перезапишет локальный json файл.

На стороне сервера эти файлы не стоит редактировать, для этого был создан отдельный хук.
Agent Smith 14 Aug, 2021 @ 8:24am 
А что сервер ?
На сервере в папке data тоже есть json-файлы - они являются "исходными", к которым можно вернуться по кнопке reset ?
HellReach  [author] 14 Aug, 2021 @ 7:31am 
Игрок может просматривать и изменять привязки на клиенте через специально меню. Все изменения сохраняются в специальных файлах в папке /data/.

Сервер же может добавлять кастомные привязки, который нет в стандартном метрострое. (Хук Metrostroi.Binds.CustomBinds)
Agent Smith 14 Aug, 2021 @ 6:50am 
Спасибо за аддон! Очень классная штука !
Вопрос только один по его работе: доступно ли простым игрокам изменение и сохранение привязок с последующим сохранением на клиенте, или игроки могут только просматривать привязки без права как-либо влиять на них ?