Назад к блогу
Scripts5 мин чтения

Agency-Notify: Уведомления должны ощущаться как iOS, а не как FiveM 2014 года

Почему был создан Agency-Notify: потому что UX уведомлений на большинстве серверов FiveM до сих пор выглядит так, будто он из прошлого десятилетия.

Agency Scripts

Основатель и ведущий разработчик Agency Scripts

Гетто уведомлений

Уведомления на большинстве серверов FiveM до сих пор выглядят как стандартные ESX 2019 года. Простая цветная полоса вверху, возможно иконка, одна строка текста. Игроки научились их игнорировать. Это огромный потерянный канал для передачи важной информации.

Как выглядят современные уведомления

Agency-Notify ships toast-style notifications that stack cleanly, support rich content (icons, images, multi-line text, action buttons), and have clear severity levels with distinct visual treatments. Success, warning, error, info, each has its own animation, color, and typography weight.

Группировка, предотвращающая спам

Если три похожих уведомления появляются подряд, Agency-Notify объединяет их в одно групповое уведомление. Больше не будет трёх одинаковых всплывающих сообщений "Вы получили $500", блокирующих экран. Такое поведение ожидают игроки от любого современного приложения, и теперь оно есть в FiveM.

API, удобный для программистов

Один вызов функции для отправки уведомления из любого скрипта: exports['agency-notify']:Show({title, body, icon, level, duration, actions}). Возвращает ID, который вы можете использовать для обновления или скрытия уведомления позже. Вот и всё. Нет привязки к фреймворку, нет магических глобальных переменных.

Standalone не случайно

Agency-Notify is a framework-independent building block. Your QBCore scripts, ESX scripts, and standalone custom code all call the same API. This is how you keep a server's visual language consistent across dozens of scripts from different authors.

Установка & настройка

Настройка Agency-Notify занимает менее десяти минут. Скачайте ресурс из вашей библиотеки Tebex, перетащите agency-notify папка в директорию ресурсов вашего сервера и добавьте ensure agency-notify для вашего server.cfg. Ресурс не зависит от базы данных, все состояния уведомлений обрабатываются на клиенте в памяти.

После запуска любой скрипт на вашем сервере может сразу вызвать API exports. Не требуется дополнительная настройка после установки для начала отправки уведомлений; настройки по умолчанию разумны из коробки.

Параметры конфигурации

Открыто config.lua настраивать визуальные и поведенческие значения по умолчанию:

  • Позиция", закрепление в правом верхнем (по умолчанию), левом верхнем, правом нижнем или левом нижнем углу.
  • Максимальное видимое , сколько уведомлений накапливается перед удалением старых. По умолчанию: 5.
  • Длительность по умолчанию", миллисекунды до автоматического закрытия. Отдельные уведомления могут переопределять это.",
  • Стиль анимации , slide-in-right (по умолчанию), fade или scale. Применяется ко всем уведомлениям глобально.
  • Окно группы , временное окно в миллисекундах, в течение которого идентичные уведомления объединяются.
  • Звук включен", переключить тихий звуковой сигнал уведомления по уровню важности.

Все настройки находятся в одной плоской таблице конфигурации, без вложенных структур, нет отдельных конфигов для клиента и сервера.

Совместимость с фреймворками

Agency-Notify is 100% standalone. It has no framework imports, no QBCore dependency, no ESX dependency. This means:

  • Работает на любом сервере 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 targets servers that care about the notification experience as a product detail rather than an afterthought. If you've ever thought "our notifications look bad and players ignore them," that's the problem this script exists to solve.

Готовы начать?

Возьмите скрипты в нашем магазине или заходите в Discord за поддержкой, обновлениями и анонсами.