![图片[1]fivem资源网-fivem插件网-fivem脚本-fivem技术-fivem分享r3_servicesmanager-与框架无关的服务管理器fivem资源网-fivem插件网-fivem脚本-fivem技术-fivem分享FIVEM资源网](https://forum-cfx-re.akamaized.net/optimized/5X/2/1/9/8/21981d7c303a4d91693be2366d19d6d33e0208b0_2_1024x428.jpeg)
- 文档
- Discord 的中文翻译是“不和谐”或“纷争”。
摘要
CitizenFX平台的服务经理。它跟踪各种提供商,所有提供商都注册了特定的服务。脚本可以检索实现特定接口的注册提供者,并在不知道提供者本身实现的情况下使用它。
为什么选择r3_servicesmanager?
如果你曾经想为FiveM制作一个资源并发布它,你可能会遇到支持<在此处插入任何框架>的问题。如果你曾经制作过一台服务器并在上面安装了大量资源,你可能会遇到类似“桥接”的资源,这些资源处理了与框架的兼容性。
r3_servicesmanger为此提供了一种解决方案。它为开发人员提供了一种支持许多不同框架(和其他脚本)的方法,而无需为每个框架编程支持。资源可以简单地注册自己,只要它们实现了定义的接口,就可以与使用r3_servicesmanger作为其依赖项的每个脚本兼容。
服务管理器的一些功能:
- 您不再需要为每个要兼容的框架创建许多if语句,只需检索提供者并调用所需的方法即可。
- 无需确定您需要哪个供应商。服务管理器始终为您提供启动所需资源的具有最高优先级的注册提供商。
- 任何资源都可以使自己兼容,无需更新脚本以添加支持。这也意味着,当<插入任何资源>有更新时,您不需要更新您的资源,只需更新提供程序,它就会再次兼容!
- 服务器所有者可以选择使用什么!由于提供者是基于优先级返回的,因此您可以提高首选<framework、progressbar等>的优先级,并且它将在每个使用它的脚本中使用。你也可以交换资源(只要它们与此兼容),例如,如果你想切换服务器中的通知样式,你可以删除旧的通知脚本,并放入一个新的脚本,然后使用它。
- 运行时间为0.00毫秒。
支持什么?
几乎任何东西都可以在服务密钥下注册自己,但为了清楚起见,我为公共服务(通知、作业、框架等)定义了一些接口。这些都可以在服务文档页面Lua和TypeScript中的类型定义可以在存储库中找到。如果你需要一个API为一个没有定义的服务,请随时在这里要求它或在上创建一个问题!如果它是常用的,我会检查是否可以定义它。
此资源中包含一些提供程序,用于ESX、QBOX和ox_lib等流行资源。这些可以在提供商存储库的文件夹。如果您需要任何其他提供商,欢迎您在此处询问或创建问题。
您还可以定义自己的“服务”,并在自己的资源中使用它。只需在未被占用的服务密钥下注册它,最好是永远不会被占用的密钥,即包括您的用户名,您就可以在您的资源中检索它。
用法
注册服务提供商
您可以使用注册服务提供商注册出口:
exports.r3_servicesmanager:注册(服务、提供者、优先级、资源)
这将为您的提供商注册具有给定优先级的给定服务。
参数:
- 服务:
字符串注册服务。 - 供应商:
桌子实现服务定义接口的函数表。 - 优先:
服务优先级提供者的优先级,建议使用优先级2并使其可供服务器所有者配置。 - 资源:
字符串此提供程序为其提供服务的资源。如果此资源停止,提供程序将自动注销。通常你应该把GetCurrentResource Name()在这里。
退货:
无
正在加载服务提供商
您可以使用检索服务提供商负载出口:
本地服务提供者=导出.r3_servicesmanager:加载(服务)
如果提供者已注册,则直接加载提供者。
参数:
- 服务:
字符串加载提供程序的服务。
退货:
桌子当前注册的具有最高优先级的服务提供商。无如果没有注册该服务的提供商。
检索注册
如果您需要有关提供者的更多信息,可以使用get注册出口:
本地注册提供者=exports.r3_servicesmanager:getRegistration(service)
通过这种方式,您可以检查哪个提供程序当前处于活动状态,并检查它是哪个资源以及它具有什么优先级。
参数:
- 服务:
字符串获取注册的服务。
退货:
已注册提供者当前注册的具有最高优先级的服务提供商的完整注册。无如果没有注册该服务的提供商。
检索服务的所有注册
您还可以使用以下工具检索特定服务的所有注册获取服务注册出口:
本地注册提供者=exports.r3_servicesmanager:获取服务注册(service)
参数:
- 服务:
字符串获取注册的服务。
退货:
已注册提供者[]服务的注册提供商列表。
检索资源的所有注册
您还可以使用以下命令检索特定资源的所有注册获取资源注册出口:
本地注册提供者=exports.r3_servicesmanager:获取资源注册
参数:
- 资源:
字符串获取注册的资源。
退货:
已注册提供者[]资源的已注册提供程序列表。
获取所有已知服务
要检索所有已知服务,您可以使用getKnownServices出口:
本地knownServices=exports.r3_servicesmanager:getKnownServices()
退货:
string[]服务管理器已知的服务列表,这意味着它们当前有一个注册的提供商,或者以前至少有一个提供商。
检查是否有服务提供商
要检查当前是否有已注册服务的提供商,您可以使用是为出口:
exports.r3_servicesmanager:is ProvidedFor(服务)
参数:
- 服务:
字符串检查是否有已注册的提供商的服务。
事件
当提供者注册或注销时,会触发事件。以下事件被触发:
r3_服务管理员:提供者已注册r3_服务管理器:提供者未注册
这两个事件都提供了已注册提供者作为一个论点。
类型
以下类型用于提供的导出:
服务优先级
服务提供商的优先级。
领域:
- 最低:0
- 低:1
- 正常:2
- 高:3
- 最高:4
已注册提供者
服务提供商的注册。
方法:
- getService():
字符串提供商提供的服务。 - Getprovider.fr):
桌子提供者对象。 - getPriority():
服务优先级提供者的优先级。 - 获取资源():
字符串提供程序注册的资源。 - 获取调用资源():
字符串注册提供程序的资源。
当前定义的服务
这是对每种服务可用方法的快速概述。有关每项服务的完整详细信息,请访问相应的文档这里。每种服务的提供商都包含在流行的开源资源中,目前这些资源包括来自esx、qb core、qbox和overextended的资源。更多的供应商正在计划中(欢迎提出先做什么的建议!)。这个资源也应该与RedM兼容,所以我很快也会为此制作一些提供者。
银行业
银行提供商提供允许资源与银行账户交互的服务。
服务器
本地银行提供者=exports.r3_servicesmanager:加载(“银行”)
bankingProvider.getAccountBalance(账户)
bankingProvider.addAccountBalance(账户、金额)
bankingProvider.remove账户余额(账户、金额)
bankingProvider.accountHasBalance(账户、金额)
回调
回调提供者提供了一种服务,允许资源注册和触发回调。
客户
本地callbackProvider=exports.r3_servicesmanager:加载(“回调”)
callbackProvider.trigger服务器回调(名称、cb、…)
本地结果=callback提供者.await服务器回调(名称,…)
服务器
本地callbackProvider=exports.r3_servicesmanager:加载(“回调”)
callback提供者.register服务器回调(名称,cb)
上下文菜单
上下文菜单提供者提供了一种服务,允许资源向玩家显示上下文菜单。
客户
本地contextMenuProvider=exports.r3_servicesmanager:加载(“contextMenu”)
contextMenuProvider.openMenu(contextMenuOptions)
contextMenuProvider.closeMenu()
经济
经济提供者提供了一种服务,允许资源与经济互动,特别是玩家的钱。
服务器
本地经济提供者=出口。r3_服务管理员:加载(“经济”)
economyProvider.getPlayerBalance(playerId,帐户)
economyProvider.setPlayerBalance(玩家ID、账户、金额)
economy.addPlayerBalance(玩家ID、账户、金额)
economy.provider.removePlayerBalance(玩家ID、账户、金额)
经济提供者playerHasBalance(玩家ID、账户、金额)
就业
就业提供者提供了一种服务,允许资源与玩家的工作互动。
客户
本地就业提供者=出口。r3_服务管理员:加载(“就业”)
employeeProvider.getPlayerJob()
employmentProvider.playerHasJob(jobName,jobGrade)
employmentProvider.onPlayerJobChanged(回调)
服务器
本地就业提供者=出口。r3_服务管理员:加载(“就业”)
employeeProvider.getJob(jobName)
employmentProvider.jobExists(jobName,jobGrade)
employeeProvider.getOnlineJobCount(jobName)
employeeProvider.getPlayerJob(playerId)
employeeProvider.setPlayerJob(playerId、jobName、jobGrade)
employeeProvider.playerHasJob(playerId、jobName、jobGrade)
身份
身份提供者提供允许资源检索玩家的识别信息的服务。
服务器
local identityProvider=exports.r3_servicesmanager:加载(“identity”)
identityProvider.getPlayerIdentity(playerId)
identityProvider.getPlayerName(playerId)
库存
库存提供者提供允许资源与玩家库存交互的服务。
服务器
本地库存提供者=导出.r3_servicesmanager:加载(“库存”)
inventoryProvider.addItem(播放器ID、项目名称、金额)
investory.removeItem(播放器ID、项目名称、金额)
inventoryProvider.gettemunt(playerId,itemName)
inventoryProvider.hasItem(玩家ID、物品名称、金额)
元数据
元数据提供者提供了一种服务,允许资源存储特定于玩家的元数据。
服务器
本地元数据提供者=导出.r3_servicesmanager:加载(“元数据”)
元数据提供者.getPlayerMetadata(playerId,key)
playerDataProvider.setPlayerMetadata(playerId、键、值)
通知
通知提供者提供了一种服务,允许资源向玩家发送通知。
客户
本地通知提供者=导出.r3_servicesmanager:加载(“通知”)
notificationProvider.show通知(消息,通知选项)
服务器
本地通知提供者=导出.r3_servicesmanager:加载(“通知”)
notificationProvider.show通知(播放器ID、消息、通知选项)
玩家状态
玩家状态提供者提供了一种服务,允许资源检查玩家是否已满负荷。
客户
本地playerStateProvider=导出.r3_servicesmanager:加载(“playerState”)
playerStateProvider.isPlayerLoaded()
playerStateProvider.onPlayerLoaded(回调)
进展
进度提供者提供了一种服务,允许资源向玩家显示进度条。
客户
本地进度Provider=exports.r3_servicesmanager:加载(“进度”)
progressProvider.startProgress(标签、持续时间、进度选项)
progress提供者cancelProgress()
隐藏
藏匿提供者提供了一种服务,允许资源与物品库存(即藏匿处、车辆)进行交互。
服务器
本地stashProvider=exports.r3_servicesmanager:加载(“stash”)
stashProvider.addItem(库存参考、项目名称、金额)
stashProvider.remove项目(库存参考、项目名称、金额)
stashProvider.gettemCount(库存参考,项目名称)
stashProvider.hasItem(库存参考、项目名称、金额)
目标
目标提供者提供了一种服务,允许资源创建可定向的交互。
客户
local targetProvider=exports.r3_servicesmanager:加载(“target”)
targetProvider.enableTargeting(bool)
targetProvider.addGlobalObject(选项)
targetProvider.removeGlobalObject(选项名称)
targetProvider.addGlobalPlayer(选项)
targetProvider.removeGlobalPlayer(选项名称)
targetProvider.addGlobalVehicle(选项)
targetProvider.removeGlobalVehicle(选项名称)
targetProvider.addModel(模型、选项)
targetProvider.removeModel(型号、选项名称)
targetProvider.addEntity(netId,选项)
targetProvider.removeEntity(netId、optionNames)
targetProvider.addLocalEntity(实体、选项)
targetProvider.removeLocalEntity(实体、选项名称)
targetProvider.addSphereZone(参数)
targetProvider.addBoxZone(参数)
targetProvider.addPolyZone(参数)
targetProvider.removeZone(名称)
文本用户界面
文本UI提供者提供了一种服务,允许资源向玩家显示文本UI。
客户
本地textUIProvider=exports.r3_servicesmanager:加载(“textUI”)
textUIProvider.showTextUI(文本)
textUIProvider.hide TextUI()
![[ESX] Poud Mine – 适用于 Fivem 服务器的采矿扩展模块。fivem资源网-fivem插件网-fivem脚本-fivem技术-fivem分享FIVEM资源网](https://forum-cfx-re.akamaized.net/original/5X/3/2/1/8/32187f638d9dc2d57e79a381eafb06ea782fbd02.jpeg)
![[esx/qbcore]记分牌4种风格fivem资源网-fivem插件网-fivem脚本-fivem技术-fivem分享FIVEM资源网](https://forum-cfx-re.akamaized.net/optimized/5X/9/d/2/0/9d20e03f5c6b162c3cf2efd1e1045d24d657c757_2_1024x682.jpeg)
![[免费] MG Garages — FiveM 车库系统 | ESX & QBCorefivem资源网-fivem插件网-fivem脚本-fivem技术-fivem分享FIVEM资源网](https://forum-cfx-re.akamaized.net/original/5X/f/a/9/b/fa9bf93ce1386e1d8a503fe4e7beb6142ac40d16.jpeg)

![[免费] PUB YELLOW JACK | MLO [免费]fivem资源网-fivem插件网-fivem脚本-fivem技术-fivem分享FIVEM资源网](https://forum-cfx-re.akamaized.net/original/5X/0/0/b/a/00baa7001127e878383f160ac60a47bed82bdcd1.jpeg)
![[免费] 🎬 HKN Works | 欢迎界面fivem资源网-fivem插件网-fivem脚本-fivem技术-fivem分享FIVEM资源网](https://forum.cfx.re/images/emoji/twitter/clapper_board.png?v=15)





- 最新
- 最热
只看作者