Adding Groups (SourceMod)/zh
Language: | English • 中文 |
---|
本文将介绍如何通过configs/admin_groups.cfg添加与配置组权限。admin-flatfile.smx会对这个文件内容进行解析并加载。
Contents
介绍
当你想给多位管理员配置相似的属性和权限时,使用权限组是非常方便的。比如,假如说你希望有15个管理员都权限和权限豁免。在这种情况下,你只需要给这些管理员配置一个权限组,之后就可以在一个地方同时修改所有成员的权限了。
文件格式
权限组是位于“Group”代码块下的特定的代码块。每个组必须有个唯一名称,如果名称不是唯一的,权限会从现有组中扩展/覆盖。这就是说,如果一个组同时在配置文件中和外部源中(比如数据库)有配置,那么最终的权限会根据解析的顺序来合并/覆盖。你可以用KVManager来修改admin_groups.cfg文件。
权限组代码块长这样:
"Groups" { "Group Name" { "[option1]" "[value1]" "[option2]" "[value2]" /* ... */ "Overrides" { "[override1]" "[allow|deny]" "[override2]" "[allow|deny]" /* ... */ } } }
所有的选项都是可选的(也就说,他们不需要明确定义 ),类似,"Overrides"节点也是完全可选的,甚至可以省略,完整的可用选项包括:
- flags: 这个组的成员继承Flag串。
- immunity: 如果是数字,且比用户自身权限值高时,会被用户继承。如果是'@'开头的字符串,那么它表明,来自对应组的用户的指令无法作用于本组成员。
“Overrides”节点可以指定本组成员是否允许执行特定指令/组的指令。这是个非常强力的节点。例如,你可以设置让成员没有"map"的flag,但是允许他们执行sm_map,对应地你也可以让他们拥有"map"的flag但是不能执行sm_map。
命令权限组在此文中会有更详细的介绍。
权限覆写的例子:
"Groups" { "Basic Admin" { "flags" "abc" //保留位置、一般管理、踢人 "immunity" "1" //低权限豁免值 "Overrides" { "sm_map" "allow" //即便没有map的flag,也允许使用sm_map指令 "@CSDM" "deny" //禁止执行来自CSDM组的指令 } } }
继承
权限组是不能被嵌套的,这就是说,一个组不能从另外一个组中继承权限。但是,一个管理员可以从任意多个权限组中继承权限。权限是可以叠加的,这也意味着,只有当更多权限被赋予时,才有体现。(译注:这话很绕,我估摸着大致意思是,不同组权限是完美合并的)
比如,如果一个用户有bcd的flag,一个组提供了ae的flag,另一个组提供了ae的flag,由于继承的存在用户会同时拥有abcde的flag。同样的,当组的权限豁免值大于用户当前的值时,会被用户继承。
唯一例外是组内的权限覆写。如果一个命令在A组是允许的,B组禁止的,那么当一个用户同时继承A组和B组,用户能否使用指令依赖于继承的顺序。如果A先继承,那么指令是允许执行的,如果B先继承,那么命令是被禁止的。
最后,需要注意的是,用户继承于一个权限组,此时对于组的权限的修改,不会立即生效,这是一种优化。如果你想立即生效,需要重新加载一下权限。(可以通过断开连接或指令sm_reloadadmins实现)
相关链接
友情翻译MisakaSora