Agency-Notify: уведомления должны быть как в iOS, а не из FiveM 2014 года
Мы создали Agency-Notify, потому что уведомления на большинстве серверов FiveM до сих пор выглядят так, будто застряли в прошлом десятилетии.
Agency Scripts
Основатель и ведущий разработчик Agency Scripts
Гетто уведомлений
Уведомления на большинстве серверов FiveM до сих пор выглядят как стандартные ESX 2019 года. Простая цветная полоса вверху, возможно иконка, одна строка текста. Игроки научились их игнорировать. Это огромный потерянный канал для передачи важной информации.
Как выглядят современные уведомления
Agency-Notify включает уведомления в виде всплывающих карточек, которые аккуратно располагаются друг над другом, поддерживают расширенное содержимое (иконки, изображения, текст в несколько строк, кнопки действий) и имеют понятные уровни важности с различным оформлением. Для успеха, предупреждения, ошибки и информации предусмотрены отдельные анимации, цвета и начертания шрифта.
Группировка, предотвращающая спам
Если три похожих уведомления появляются подряд, Agency-Notify объединяет их в одно групповое уведомление. Больше не будет трёх одинаковых всплывающих сообщений "Вы получили $500", блокирующих экран. Такое поведение ожидают игроки от любого современного приложения, и теперь оно есть в FiveM.
API, удобный для программистов
Один вызов функции для отправки уведомления из любого скрипта: exports['agency-notify']:Show({title, body, icon, level, duration, actions}). Возвращает ID, который вы можете использовать для обновления или скрытия уведомления позже. Вот и всё. Нет привязки к фреймворку, нет магических глобальных переменных.
Standalone не случайно
Agency-Notify , это независимый от фреймворка строительный блок. Ваши скрипты QBCore, ESX и пользовательский код standalone используют один и тот же API. Так можно поддерживать единый визуальный стиль сервера в десятках скриптов от разных авторов.
Установка & настройка
Настройка Agency-Notify занимает менее десяти минут. Скачайте ресурс из вашей библиотеки Tebex, перетащите agency-notify папка в директорию ресурсов вашего сервера и добавьте ensure agency-notify для вашего server.cfg. Ресурс не зависит от базы данных, все состояния уведомлений обрабатываются на клиенте в памяти.
После запуска любой скрипт на вашем сервере может сразу вызвать API exports. Не требуется дополнительная настройка после установки для начала отправки уведомлений; настройки по умолчанию разумны из коробки.
Параметры конфигурации
Открыто config.lua настраивать визуальные и поведенческие значения по умолчанию:
- Позиция", закрепление в правом верхнем (по умолчанию), левом верхнем, правом нижнем или левом нижнем углу.
- Максимальное видимое , сколько уведомлений накапливается перед удалением старых. По умолчанию: 5.
- Длительность по умолчанию", миллисекунды до автоматического закрытия. Отдельные уведомления могут переопределять это.",
- Стиль анимации , slide-in-right (по умолчанию), fade или scale. Применяется ко всем уведомлениям глобально.
- Окно группы , временное окно в миллисекундах, в течение которого идентичные уведомления объединяются.
- Звук включен", переключить тихий звуковой сигнал уведомления по уровню важности.
Все настройки находятся в одной плоской таблице конфигурации, без вложенных структур, нет отдельных конфигов для клиента и сервера.
Совместимость с фреймворками
Agency-Notify полностью standalone. В нём нет импортов фреймворков, зависимостей от QBCore или ESX. Это означает:
- Работает на любом сервере FiveM независимо от базового фреймворка.
- Смена фреймворков позже не нарушит ваши вызовы уведомлений.
- Каждый скрипт от любого автора может отправлять уведомления через один и тот же API, не зная, какой фреймворк вы используете.
Если вы заменяете существующую систему уведомлений (ox_lib notify, QBCore QBNotify и т.п.), просто обновите вызов экспорта в своих скриптах. Сигнатура достаточно близка к общим паттернам, чтобы поиск и замена справились с миграцией.
Почему это важно для ролевой игры
Уведомления являются основным каналом обратной связи между системами сервера и игроками. Когда завершается сделка с наркотиками, когда в вашу территорию входит враждебная банда, когда администратор должен оповестить всех о событии , все это проходит через уведомления. Если этот канал выглядит устаревшим или игнорируется, критически важная коммуникация сервера молча проваливается.
Игроки, которые доверяют своей системе уведомлений, обращают на неё внимание. Игроки, привыкшие игнорировать спам и уродливую панель уведомлений, пропускают важное и чувствуют себя вне игры. Система группировки Agency-Notify специально решает проблему спама: если сервер отправляет три быстрых уведомления во время ограбления, игроки видят одно сгруппированное сообщение вместо трёх всплывающих окон, конкурирующих за внимание.
Уровни серьёзности (успех, предупреждение, ошибка, информация) добавляют второй уровень сигнала. Игроки быстро учатся, что зелёный , хорошо, красный , действуй немедленно. Такая цветовая грамотность снижает когнитивную нагрузку в напряжённых ситуациях.
Часто задаваемые вопросы
Могу ли я обновлять или отклонять уведомление после его показа?
Да. Show() export возвращает ID. Передайте этот ID в exports['agency-notify']:Update(id, {body, level}) изменять содержимое или exports['agency-notify']:Dismiss(id) для раннего удаления. Это полезно для уведомлений в стиле прогресса, которые меняют состояние (например, "Обработка…" → "Готово").
Заменяет ли это уведомления ox_lib?
Может. Agency-Notify покрывает те же сценарии использования с другим визуальным стилем. Если вы хотите эстетику glassmorphism, соответствующую другим скриптам Agency, замена проста. Если ваш сервер сильно интегрирован с ox_lib и вас устраивает этот вид, оставлять ox_lib для уведомлений можно, конфликтов нет.
Могут ли игроки настраивать позицию уведомлений?
Не из коробки, позиция , это настройка на уровне сервера. Это сделано намеренно: владельцы серверов контролируют визуальный язык, а не отдельные игроки. Если нужны предпочтения для каждого игрока, их выбор нужно сохранять в базе данных и передавать через данные игрока при входе.
Есть ли ограничение скорости, чтобы предотвратить спам уведомлений от скриптов?
Система группировки автоматически обрабатывает удаление дубликатов. Для жесткого ограничения частоты установите Config.RateLimit = true и Config.RateLimitWindow = 1000 (мс) в config.lua. Это ограничивает, сколько уникальных уведомлений может отправить любой отдельный скрипт за это время.
Требования
- Сервер FiveM (любой фреймворк или standalone)
- аккаунт cfx.re с действующим лицензионным ключом Agency-Notify в вашем keymaster
- Нет зависимости от базы данных
- Нет внешних зависимостей ресурсов
Сравнение Agency-Notify с альтернативами
Экосистема уведомлений FiveM предлагает несколько вариантов: уведомления ox_lib, встроенные уведомления QBCore и различные standalone скрипты. Вот где каждый из них имеет смысл:
Уведомления ox_lib компетентны и хорошо поддерживаются, но стилистически привязаны к визуальному языку ox_lib. Если ваш сервер уже полностью использует ox_lib, визуальная согласованность может перевесить необходимость обновления. Если вы строите стек с приоритетом на Agency, эстетика Agency-Notify будет более подходящей.
QBNotify в QBCore функционален, но минимален: нет группировки, нет API обновлений, нет кнопок действий. Он подходит для базовых случаев и не требует дополнительных затрат, если вы уже используете QBCore. Если вам нужно что-то большее, он вам не подойдет.
Agency-Notify предназначен для серверов, которые считают систему уведомлений важной частью продукта, а не мелочью, о которой вспоминают в последний момент. Если вы когда-нибудь думали: «У нас некрасивые уведомления, и игроки их игнорируют», этот скрипт решает именно эту проблему.