概述
在多个服务器上同步多组组和权限,并可自定义命令。这可以通过多种方式使用。如果在数据库中或以命令形式输入 SteamId,它会自动添加或移除所有使用该插件连接数据库的服务器上的用户。你还可以为每个配置使用ServerId,这样某些命令和权限只会应用到特定的服务器上。如果你为某条记录指定了ServerId,但同时存在全局记录,该特定记录会考虑并覆盖全局记录(例如,用户在所有服务器上都属于“Group1”,但ServerId的“Group2”是“server2”,那么在服务器2上只应用“Group2”。
这意味着你也可以从第三方应用,比如Discord机器人/网站等,填充数据库,这让应用场景非常多样化。
规则规定不能添加重复、无效的SteamId等。如果没有组,它会创建该组,动态添加配置中的权限,只处理移除/添加的 SteamId,以优化性能。
权限
这个插件使用权限系统。要分配权限,请使用 。要移除权限,请使用 。oxide.grant <user or group> <name or steam id> <permission>oxide.revoke <user or group> <name or steam id> <permission>- permissiongroupsync.admin- 允许使用指定的命令添加和移除SteamIds
- permissiongroupsync.<custompermission>- 每组组权限都有自己的权限(见下文)
服务器/控制台命令
- <customcommand> <add/remove> <steamid>- 可以在配置文件中为每个组权限组设置自定义命令
配置
设置和选项可以在目录下的文件中配置。建议使用编辑器和验证器以避免格式问题和语法错误。PermissionGroupSyncconfig默认配置:
JSON:
{
"ServerId": "yourid",
"PollIntervalSeconds": 300,
"DatabaseConfiguration": {
"Host": "",
"Port": 3306,
"Username": "username",
"Password": "password",
"Database": "PermissionGroupSync"
},
"GroupPermissions": [
{
"CommandName": "yourCommand1",
"GroupName": "PermissionGroupSync",
"ExtendedPermissionHandling": true,
"PermissionUse": true,
"ProtectedGroup": false,
"OverrideServerIdCheck": false,
"GroupsCheckExcludedSync": [
"admin",
"testgroup"
],
"GroupsRemove": [
"moderator"
],
"PermissionsRust": 0,
"PermissionsOxide": [
"plugin.permission1",
"plugin.permission2"
],
"AdditionalCommands": [
"writefg"
]
},
{
"CommandName": "yourCommand2",
"GroupName": "PermissionGroupSync2",
"ExtendedPermissionHandling": false,
"PermissionUse": false,
"ProtectedGroup": false,
"OverrideServerIdCheck": false,
"GroupsCheckExcludedSync": [
"admin",
"testgroup"
],
"GroupsRemove": [
"moderator"
],
"PermissionsRust": 0,
"PermissionsOxide": [
"plugin.permission1",
"plugin.permission2"
],
"AdditionalCommands": [
"writefg"
]
}
]
}
- ServerId- 为你的服务器输入一个简短且无空格的标识符。之后可以将组分配给该特定的 ServerId。
- PollIntervalSeconds- 与MySQL数据库的同步作业之间的秒数间隔
- DatabaseConfiguration- MySQL 数据库的连接参数(见下文结构)
- Host- 提供 MySQL 服务器的 IP 或 FQDN
- Port- 连接的TCP端口
- Username- 连接数据库的用户名
- Password- 连接数据库的密码
- Database- 数据库名称
- GroupPermissions- 每组 GroupPermissions 都有自己的命令、关联的 Group 和权限
- CommandName- 设置自定义聊天和控制台命令
- GroupName- 同步的氧化物组名称(如果不存在,将被创建)
- ExtendedPermissionHandling- 设置为 true,以使用 ProtectedGroup、GroupCheckExcludedSync、GroupsRemove 和 PermissionRust 等功能。如果设置为 false,所有这些选项和函数都会被忽略。
- PermissionUse- 设置为 true,使每个 GroupPermissions 集合都有自己的权限,并且会被检查(例如,如果有人使用 /yourCommand1 但没有权限权限、groupsync.yourCommand1,则会被阻止)。设置为false以忽略此权限
- ProtectedGroup- 设置为 true,以保护被下方 GroupsRemove 指定群组移除的成员。
- OverrideServerIdCheck- 设置为 true,该组的作始终影响所有服务器。设置为 false 以始终检查指定的 ServerId(也可以是 ALL)
- GroupsCheckExcludedSync- 指定在应用 GroupPermission 设置前需要检查的组。如果用户处于这些组之一,组设置将不会应用(例如管理员深度组)
- GroupsRemove- 指定一个组列表,如果用户被添加到该组,需要被移除。用于移除低层或高层群组,确保用户只在该组中,而非多个组
- PermissionsRust- 设置应授予的原生Rust认证级别权限(0 = 用户,1 = 版主,2 = 所有者)
- PermissionsOxide- 组应有权限列表(若稍后更改将进行调整)
- AdditionalCommands- 指定应执行的额外控制台命令。占位符{0}将被针对特定用户的SteamID替换
MySQL 设置
- 你需要一个搭建且能正常运行的MySQL服务器,拥有必要的凭证和权限,访问MySQL数据库。
- 插件如果还没有自己的表结构,会创建它自己的表结构。
- 该表将命名为“permissiongroupsync”。
本地化
JSON:
{
"ErrorConfig": "错误:无法读取配置项,或指定的配置项无效/为空。",
"ErrorDatabaseConnect": "错误:无法连接至数据库 {0}。请检查数据库连接状态和服务可用性。",
"ErrorDatabase": "错误:无法对数据库 {0} 执行读写操作:{1}",
"ErrorCommand": "错误:无法修改玩家 {0} 的群组权限。",
"ConnectedDatabase": "已成功连接至数据库 {0}。",
"NoPermissions": "你没有使用该指令的权限。",
"InvalidSyntax": "语法错误。正确用法:/{0} <添加 或 移除> <SteamID> <可选:服务器ID>。",
"InvalidSteamId": "未提供有效的SteamID。",
"GroupAdded": "已将 {0} 添加至群组 {1}(服务器ID:{2})",
"GroupRemoved": "已将 {0} 从群组 {1} 中移除(服务器ID:{2})",
"NoAction": "无需执行操作:{0} 已在目标群组中,或已被移除。",
"PermissionChanged": "你的游戏内权限已变更,请重新登录以生效。",
"NoLongerInDB": "因 {0} 已不存在于数据库中,将其从群组 {1} 中移除。",
"NotRemovedProtected": "无法将 {0} 从群组 {1} 中移除:该群组为受保护群组。",
"NotAddedGroup": "未能为群组添加权限,正在重试。",
"PermissionChangedLog": "已将用户 {0} 的权限等级修改为 {1}。"
}