Всё, что можно менять, находится в двух местах: config.lua для поведения и папка bridge/ для того, как верёвка взаимодействует с вашим фреймворком, таргетом и текстовым интерфейсом. Оба открыты (перечислены в escrow_ignore); client/client.lua и server.lua зашифрованы (escrow).
| Файл | За что отвечает |
|---|
config.lua | Фреймворк, название предмета, система взаимодействия, подписи, клавиши, расстояния, длина и физика верёвки, маркер, кулдаун, ограничение по времени |
bridge/server_bridge.lua | Получение фреймворка, регистрация предмета rope как используемого, проверка наличия его у игрока |
bridge/client_bridge.lua | 3D-текст и маркер в режиме drawtext, а также клиентское событие, достающее верёвку |
bridge/target.lua | Опции ox_target и qb-target и переключение на drawtext |
bridge/README.md | Короткие заметки по bridge (на испанском) |
inventory/ | Готовые определения предметов для ox_inventory, QBCore и ESX |
stream/ | Модель и текстура пропа верёвки |
Папки locales/ нет. Единственный текст, который видят игроки, — подписи в Config.Labels.
| Параметр | Что делает | По умолчанию |
|---|
Config.Framework | esx или qbcore. На QBox используйте qbcore — QBox запускает ресурсы QBCore через слой совместимости. Любое другое значение останавливает ресурс при запуске | esx |
Config.Item | Предмет инвентаря, который является верёвкой | rope |
| Параметр | Что делает | По умолчанию |
|---|
Config.InteractionSystem | ox_target, qb-target или drawtext. Незапущенный таргет откатывается на drawtext, пока не запустится | ox_target |
Config.Labels | Текст каждого действия: grab (Тащить на верёвке), release (Отпустить игрока), attach (Привязать к транспорту), detach (Отвязать от транспорта) | Английский |
Config.KeyLabels | Названия клавиш, показываемые в режиме drawtext: Attach и Vehicle | E, Y |
Config.ShowInteractionMarkers | Рисовать маркер над игроком или транспортом, с которым можно взаимодействовать. Только режим drawtext | true |
Что делает каждое действие:
| Действие | Кто может выполнить | Что происходит |
|---|
| Тащить на верёвке | Вы, с верёвкой в руке, рядом с игроком, стоящим на ногах | Этот игрок привязывается к вашей руке |
| Отпустить игрока | Тот, кто тащит | Верёвка снимается, и игрок встаёт |
| Привязать к транспорту | Тот, кто тащит, рядом с транспортом | Верёвка переходит из вашей руки к задней части транспорта |
| Отвязать от транспорта | Тот, кто привязал | Верёвка возвращается в вашу руку, игрок остаётся привязанным |
| Отпустить игрока (на транспорте) | Тот, кто привязал | Игрок отпускается с транспорта |
Клавиши — это номера контролов FiveM. Стрелки работают во всех режимах; E и Y важны только в режиме drawtext (при использовании таргета вы выбираете действие в меню).
| Параметр | Что делает | По умолчанию |
|---|
Config.AttachKey | Схватить или отпустить игрока | 38 (E) |
Config.AttachToVehicleKey | Привязать к транспорту или отвязать | 246 (Y) |
Config.AdjustLengthUpKey | Удерживайте, чтобы удлинить верёвку | 172 (стрелка вверх) |
Config.AdjustLengthDownKey | Удерживайте, чтобы укоротить верёвку | 173 (стрелка вниз) |
Если вы меняете AttachKey или AttachToVehicleKey, измените и Config.KeyLabels, иначе в подсказке останется старая клавиша.
| Параметр | Что делает | По умолчанию |
|---|
Config.MaxDetectionDistance | Насколько близко (м) должен быть игрок, чтобы его можно было схватить. Также дистанция таргета для игроков | 2.0 |
Config.MaxVehicleAttachDistance | Насколько близко (м) должен быть транспорт, чтобы привязать к нему верёвку. Также дистанция таргета для транспорта | 5.0 |
Config.MarkerVisibilityDistance | Всё ещё есть в config.lua, но текущая версия его не читает — подсказка показывается всем, кто находится в пределах двух расстояний выше | 20.0 |
| Параметр | Что делает | По умолчанию |
|---|
Config.InitialRopeLength | Длина (м) в начале буксировки | 3.0 |
Config.MinRopeLength | Минимальная длина, до которой можно укоротить стрелками | 1.0 |
Config.MaxRopeLength | Максимальная длина, до которой можно удлинить стрелками | 100.0 |
Config.RopeType | Тип верёвки в игре | 1 |
Config.RopeSlack | Всё ещё есть в config.lua, но текущая версия его не читает — провисание верёвки определяется её длиной | 0.5 |
Config.RopePropModel | Проп в руке игрока. Стандартный стримится из stream/ | prop_stag_do_rope |
| Параметр | Что делает | По умолчанию |
|---|
Config.MarkerType | Тип маркера в игре | 2 |
Config.MarkerHeightOffset | Высота (м) над игроком, на которой находятся подсказка и маркер | 1.0 |
Config.MarkerScale | Размер маркера | 0.3 |
Config.MarkerColor | Цвет маркера: красный, зелёный, синий и альфа | красный, альфа 150 |
| Параметр | Что делает | По умолчанию |
|---|
Config.DragCooldown | Миллисекунды между двумя действиями с верёвкой | 1000 |
Config.DisableControls | Блокировать все контролы буксируемого игрока. Если выключено, он сможет пользоваться управлением, находясь в рэгдолле | true |
Config.EnableMaxDragTime | Рвать верёвку самостоятельно по истечении MaxDragTime | false |
Config.MaxDragTime | Секунды до разрыва верёвки, когда включён параметр выше | 100 |
Config.NeedItemToRelease | Чтобы отпустить игрока на земле, верёвка должна быть в руке. Владелец всегда может отпустить игрока, привязанного к транспорту | true |
Буксируемый игрок падает в рэгдолл, не может стрелять и неуязвим, пока верёвка не снята.
Файла локали нет. Переведите четыре строки в Config.Labels и Config.KeyLabels, если ваши игроки используют другие названия клавиш.
Папка bridge/ открыта, чтобы вы могли подогнать верёвку под неизвестную ей конфигурацию. Физика верёвки и сетевые события остаются в зашифрованных файлах, и менять их не нужно.
server_bridge.lua — фреймворк и инвентарь. Получает ESX или QBCore, регистрирует Config.Item как используемый предмет и отвечает на вопрос «есть ли у этого игрока верёвка?» при начале буксировки. Для собственного фреймворка или инвентаря со своим API перепишите Bridge.GetPlayer, Bridge.HasRope и Bridge.RegisterRopeItem. Регистрируйте предмет только в одном месте — если две интеграции регистрируют один предмет, он сработает дважды.
client_bridge.lua — текст и маркер. Bridge.DrawText и Bridge.DrawMarker рисуют подсказку drawtext в каждом кадре, пока она видна. Замените их, чтобы использовать свой 3D-текст или ресурс TextUI. Он также слушает клиентское событие mic_drag:useRope, которое достаёт или убирает верёвку — вызывайте его из колбэка использования вашего инвентаря, если вы не используете предметы фреймворка.
target.lua — меню таргета. Добавляет и удаляет глобальные опции игроков и транспорта для ox_target и qb-target и переключается на drawtext, когда таргет останавливается. Другой ресурс таргета нужно добавлять здесь.
| Экспорт (клиент) | Возвращает |
|---|
GetInteractionState | Таблицу: mode (используемое взаимодействие), hasRope (верёвка в руке), targetServerId (кого вы тащите), vehicle (транспорт, к которому привязана верёвка), beingDragged, busy |
Только для чтения: полезно для HUD или чтобы другой скрипт знал, что не нужно действовать на игрока, находящегося на верёвке.