Agency-Seatbelt: Почему скрипт размером 20 КБ сильнее всего влияет на ощущения от вождения
Кода в Agency-Seatbelt мало, но влияние на игру огромное. Вот почему реалистичные ремни безопасности важнее, чем кажется.
Agency Scripts
Основатель и ведущий разработчик Agency Scripts
Маленькие скрипты, большой эффект
Agency-Seatbelt , один из самых маленьких наших скриптов, но по отзывам он стабильно входит в число самых любимых. Это хороший урок: RP складывается из небольших механик, которые делают мир последовательным, а не из громоздких наборов функций.
Вознаграждение за реализм
Когда игроки должны физически пристёгиваться ремнём перед поездкой, меняются три вещи. Погоня становится опаснее, так как пристёгивание во время погони занимает время. Полицейские получают новый повод для штрафа. Пассажиры испытывают реальные последствия халатности водителя. Каждое из этих изменений , маленький RP-хук, добавляющий глубину без увеличения когнитивной нагрузки.
Детали анимации и аудио
Мы потратили больше времени на анимацию пристегивания/отстегивания ремня, чем на основную логику. Двухсекундная анимация, тонкий звук щелчка и отдельный индикатор ремня на HUD , это те детали полировки, которые показывают игрокам, что "этот сервер относится к себе серьёзно". Когда всё остальное работает тихо, эти маленькие моменты выделяются.
Интеграция с скриптами транспортных средств
Agency-Seatbelt легко интегрируется с любым скриптом повреждения транспорта благодаря простому клиентскому событию `agency-seatbelt:isBuckled`, которое могут проверять другие скрипты. Ваш скрипт эвакуатора сможет отклонять вызовы от игроков, которые только что вылетели через лобовое стекло. Скрипт больницы сможет применять реалистичные модификаторы травм. Скрипт достаточно небольшой, чтобы не создавать сложностей, и достаточно гибкий, чтобы взаимодействовать с другими системами.
Бесплатно, потому что так должно быть
Agency-Seatbelt навсегда останется бесплатным, цена , €0. Простая механика безопасности не должна быть платной. Пользуйтесь, создавайте форки, изменяйте как угодно, мы не против. Каждый сервер, использующий наши бесплатные скрипты, однажды может купить наши платные продукты, и мы рассчитываем на долгосрочную перспективу.
Установка & настройка
Agency-Seatbelt бесплатный и не имеет зависимостей. Скачайте его с GitHub или из бесплатного раздела Tebex, поместите папку в каталог ресурсов и добавьте ensure agency-seatbelt в server.cfg. Ресурс начинает работать сразу после следующего перезапуска сервера. Не требуется база данных, фреймворк или настройка.
Если вы хотите настроить привязку клавиш, интеграцию тикетов или поведение индикатора HUD, откройте config.lua. Значения по умолчанию разумны для большинства серверов, многие владельцы серверов используют Agency-Seatbelt месяцами, не трогая конфигурацию.
Параметры конфигурации
Параметр config.lua охватывает настройки взаимодействия и последствий:
- Привязка клавиши ремня безопасности , клавиша, которую игроки нажимают для пристёгивания и отстёгивания. По умолчанию: B (так же, как во многих старых скриптах ремней безопасности для привычной моторной памяти).
- Порог выброса", скорость транспортного средства, при которой непристёгнутый игрок выбрасывается при столкновении. По умолчанию: 50 км/ч.
- Сила выброса , насколько далеко игрок выбрасывается при эвакуации. Большие значения , более драматичные; меньшие , более реалистичные.
- Урон при выбросе , здоровье и броня снимаются, если игрок выбрасывается без ремня безопасности. Настраивается отдельно от силы выброса.
- Индикатор HUD", отображать ли маленький значок ремня на HUD при непристёгнутом состоянии в транспортном средстве. Требует Agency-Hud или экспортирует событие позиции для кастомных HUD.
- Команда полиции , включить
/checkbeltдля полиции, чтобы проверить состояние ремней безопасности у пассажиров ближайшего автомобиля. - Контроль пассажиров", выбрасывать ли пассажиров, а не только водителей, при непристёгнутом состоянии. По умолчанию: включено.
Совместимость с фреймворками
Agency-Seatbelt не зависит от фреймворков. Логика выбрасывания из машины и получения урона использует нативные функции FiveM для управления транспортом и персонажами, которые одинаково работают на любом сервере. Для необязательной команды полиции используется простая проверка прав, реализуйте Config.IsPolice(src) для любой кастомной системы работы или полностью отключите команду, если она не нужна.
Почему это важно для ролевой игры
Философия дизайна Agency-Seatbelt заключается в том, что самые мелкие механические детали складываются в характер сервера. Сервер с ремнями безопасности, сидением, кастомными уведомлениями и отполированным HUD ощущается принципиально иначе, чем без них, даже если игрок не может точно объяснить почему. Ремни безопасности , это одна из тех тихих деталей, которые говорят: "этот сервер заботится о мелочах."
Угол правоохранительных органов , это то место, где этот скрипт создает наибольшую ценность для активной ролевой игры. Персонажи полиции на серверах с Agency-Seatbelt получают новый мягкий инструмент для контроля дорожного движения. Остановка с фразой "Я заметил, что ваш пассажир не пристегнут" , лучшее начало ролевой игры, чем предлог, который все знают как вымышленный. Эта мелочь дает офицерам реалистичную причину для взаимодействия с гражданскими, что открывает сценарии, которые иначе не произошли бы.
Сцены погони меняются существенно, когда водители знают, что столкновения на высокой скорости имеют реальные последствия. Вопрос "рискну ли я столкновение, чтобы их потерять?" становится интереснее, когда один из исходов , полёт через лобовое стекло. Такое напряжение именно то, что делает погони больше, чем просто сравнение скорости двух автомобилей.
Пассажиры в автомобиле начинают реагировать на поведение водителя. Пассажир, который знает, что водитель понесёт последствия за опасное вождение, попросит снизить скорость, поспорит о маршруте или выйдет, чтобы не рисковать поездкой. Это микромоменты ролевой игры, которые просто не существуют без системы последствий, создаваемой ремнём безопасности.
Часто задаваемые вопросы
Работает ли выброс из машины во всех типах транспортных средств?
Выброс работает в автомобилях, грузовиках и фургонах. Мотоциклы и велосипеды используют отдельную (уменьшенную) силу выброса, так как физика ведёт себя иначе. Вертолёты и самолёты по умолчанию отключают проверки ремней безопасности, так как выброс из самолёта создаёт больше проблем, чем RP-ценности. Вы можете включить проверки для авиации в config.lua, если на вашем сервере есть специфические RP-требования к авиации.
Можем ли мы выписывать штрафы за нарушение ремней безопасности?
Да. Agency-Seatbelt вызывает серверное событие agency-seatbelt:violation с ID игрока и сетевым ID транспортного средства, когда полицейская проверка выявляет непристёгнутого пассажира. Ваш полицейский или штрафной скрипт слушает это событие и применяет систему штрафов, используемую на сервере. Скрипт ремня безопасности отвечает за обнаружение; ваш штрафной скрипт , за экономические последствия.
Взаимодействует ли механика выброса с скриптами deathscreen?
Agency-Seatbelt fires agency-seatbelt:onEjection до нанесения урона. Скрипты экрана смерти, которые отслеживают изменения здоровья, естественным образом фиксируют урон. Для более тесной интеграции (пользовательские типы травм, данные о преступлениях на месте) слушайте событие выброса напрямую и добавляйте свою логику там.
Можно ли отключить выброс из транспорта в определённых зонах (например, на гоночных трассах)?
Да. Используйте exports['agency-seatbelt']:DisableInZone(coords, radius) из любого серверного скрипта. Выбрасывание подавляется для всех игроков в этом радиусе. Вызывайте во время настройки события и удаляйте зону после. Это предотвращает вмешательство механики ремней безопасности в гоночные события или другие сценарии, где ожидаются аварии без последствий.
Требования
- Сервер FiveM (любой фреймворк или standalone)
- Бесплатно, лицензия Tebex не требуется
- Нет зависимости от базы данных
- Нет внешних зависимостей ресурсов