Difference between revisions of "Overriding Command Access (SourceMod)/zh"

From AlliedModders Wiki
Jump to: navigation, search
(Created page with "{{Languages|Overriding Command Access (SourceMod)}} 这个文章介绍了如何在不改变插件源代码的情况下,去改变标志或者任何控制语句的权限。权...")
 
m (组配置)
 
Line 53: Line 53:
 
Group overrides are given on an allow or deny basis.  That is, rather than changing flags per-group, the override is simply whether it is allowed or denied to members of that group.   
 
Group overrides are given on an allow or deny basis.  That is, rather than changing flags per-group, the override is simply whether it is allowed or denied to members of that group.   
  
更多内容请参考[[Adding_Groups_%28SourceMod%29#File_Format|增加用户组]].
+
更多内容请参考[[Adding_Groups_%28SourceMod%29/zh#文件格式|增加用户组]].
  
 
[[Category:SourceMod Documentation]]
 
[[Category:SourceMod Documentation]]

Latest revision as of 05:02, 12 September 2019

Language: English  • русский • 中文

这个文章介绍了如何在不改变插件源代码的情况下,去改变标志或者任何控制语句的权限。权限既可以是全局的,也可以是给特定的组员的。

介绍

重写权限是SourceMod管理系统中最为有力的特性之一。这能让你高效地:

  • 在不更改插件源码的前提下更改管理命令的权限
  • 不更改源码的情况下更改整个用户组的命令权限
  • 创建自定义权限级别
  • 无视命令的标志,允许或拒绝任何玩家或组的访问权限

当你更改了一个SourceMod成员的权限,你就完成了"重写"这一动作。重写是一条字符串。如果这个字符串与命令名匹配,那么这个命令的权限将会从这条重写中继承(而不是代码中)。

这个概念重要在于:

  • 重写能改变一条命令的权限。
  • 重写能被当作自定义的访问权限标志。

例如,一个插件需要等级“g”才能使用sm_map命令。然而,重写可以对特定的组直接同意或者拒绝这条命令的使用,也可以把默认需要的等级改为“k”。

更有意思的事,一个插件可以要求使用特殊的菜单选项必须有权限访问sm_map指令。在这种情况下,用户必须有sm_map的权限,而不是一个硬编码的标志。

最后一个例子,一个插件可能要求用户必须有权限访问plugin_crab_usage,然而这完全不是一个命令。这意味着插件要求的只是默认权限,用户爱怎么重写怎么重写。这也暗示着重写是和命令无关的。但是,命令本身会从同名的重写中继承权限要求。

更改重写文件不会立刻生效,你可以使用"sm_reloadadmins"指令来刷新。

重写方法

重写有两种方法:重写指令和重写组。重写命令基于命令会自动继承同名的重写提供的权限要求。重写组则导致一个用户组有这个命令的权限。

例如,如果一个重写为sm_map,任何sm_map的指令都会继承重写中的权限要求。 如果一个重写组为CSDM,任何标记权限组为"CSDM"的成员都会获得该权限。

全局设置

全局权限重写配置文件为configs/admin_overrides.cfg。格式如下:

Overrides
{
	"[名字]"	"[标志]"
	"@[用户组]"	"[标志]"
	/* ... */
}

用户组会以“@”开头,例如:

Overrides
{
	"sm_map"	"k"	//Change "sm_map" to the "k" flag.
	"@CSDM"		"m"	//Change all CSDM commands to the "m" flag.
	"sm_chat"	""	//Allow anyone to use "sm_chat"空则代表不需要权限
}

注意,如果你给一堆权限要求,那么客户端就必须有所有需要的权限了,而不是任意一个。(例如"abc"需要你有三个权限,而不是任意一个)

组配置

Group overrides are given on an allow or deny basis. That is, rather than changing flags per-group, the override is simply whether it is allowed or denied to members of that group.

更多内容请参考增加用户组.