返回博客
Scripts1 分钟阅读

Agency-Notify:通知应像 iOS 一样,而非 2014 年的 FiveM

为什么构建 Agency-Notify:因为大多数 FiveM 服务器上的通知用户体验看起来仍像十年前的样子。

Agency Scripts

Agency Scripts 创始人兼首席开发者

通知贫民区

大多数FiveM服务器上的通知仍然像2019年的默认ESX。顶部基本的彩色条,可能有图标,一行文本。玩家已经习惯忽略它们。这是一个巨大的浪费渠道,无法有效传达重要信息。

现代通知的样子

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,您可以稍后用它来更新或关闭通知。就是这样。无框架绑定,无魔法全局变量。

独立版的原因

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。无需安装后配置即可开始发送通知;默认设置开箱即用且合理。

配置选项

打开 config.lua 自定义视觉和行为默认值:

  • 位置,右上角(默认)、左上角、右下角或左下角锚点。
  • 最大可见数,通知堆叠数量上限,超过则旧通知被清除。默认5条。
  • 默认持续时间,自动关闭前的毫秒数。单个通知可覆盖此设置。
  • 动画风格,右滑入(默认)、淡入或缩放。全局应用于所有通知。
  • 组窗口,毫秒内的时间窗口,重复通知将被合并。
  • 启用声音,按严重级别切换细微通知提示音开关。

所有设置均存放在单一扁平配置表中,无需查找嵌套结构,无需区分客户端和服务器配置。

框架兼容性

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的分组系统专门解决垃圾信息问题:如果服务器在抢劫期间快速发送三条通知,玩家看到的是一条分组消息,而非三条争夺注意力的弹窗。

严重性等级(success, warning, error, info)增加了第二层信号。玩家很快就会学会绿色代表良好,红色代表立即行动。这种颜色识别减少了高强度操作情况下的认知负担。

常见问题

我可以在通知显示后更新或关闭它吗?

是的。 Show() export返回一个ID。将该ID传递给 exports['agency-notify']:Update(id, {body, level}) 更改内容,或 exports['agency-notify']:Dismiss(id) 提前移除它。这对状态变化的进度式通知(例如“处理中…”→“完成”)很有用。

是否替换 ox_lib 通知?

可以。Agency-Notify 覆盖相同的使用场景,但视觉风格不同。如果您想要与其他 Agency 脚本一致的玻璃拟态美学,替换非常简单。如果您的服务器深度集成了 ox_lib 并且您满意这种外观,继续使用 ox_lib 进行通知也没问题,没有冲突。

玩家可以自定义通知位置吗?

默认不支持,位置由服务器级配置决定。这是有意为之:服务器所有者控制视觉语言,而非单个玩家。如需每玩家偏好,需将选择保存至数据库,并在玩家加入时通过玩家数据传递。

是否有防止脚本通知垃圾信息的速率限制?

分组系统自动处理去重。对于严格速率限制,设置 Config.RateLimit = trueConfig.RateLimitWindow = 1000 (毫秒)在 config.lua 中。此设置限制任何单个脚本在该时间窗口内触发的唯一通知数量。

需求

  • FiveM 服务器(任意框架或独立)
  • 拥有带有效 Agency-Notify 许可证密钥的 cfx.re 账户
  • 无数据库依赖
  • 无外部资源依赖

比较 Agency-Notify 与替代方案

FiveM通知生态有多种选择:ox_lib通知,QBCore内置通知,以及各种standalone脚本。以下是各自适用场景:

ox_lib 通知功能完善且维护良好,但其风格与 ox_lib 视觉语言紧密绑定。如果你的服务器已全面运行 ox_lib,视觉一致性可能比升级更重要。如果你构建的是以 Agency 为核心的堆栈,Agency-Notify 的匹配美学更合适。

QBCore 的 QBNotify 功能实用但极简,没有分组、没有更新 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 获取支持、更新以及新功能预告。