|
发表于 2009-1-26 12:46:02
|
显示全部楼层
来自 中国–福建–漳州
本帖最后由 Rulzy 于 2009-1-26 12:48 编辑
- ......
- register_concmd("amx_mycommand","MyFunction",ADMIN_KICK,"Description of the command")
- ........
- public MyFunction(id, level, cid)
- {
- if(!cmd_access(id, level, cid, 3))
- return PLUGIN_HANDLED;
- ........
- }
复制代码 cmd_access函数是用来判断玩家是否有权限,并且参数个数是否符合。请看上面的例子:
“public MyFunction(id, level, cid)”是注册的命令需要执行的函数的固定格式,如果不需要判断玩家权限和参数个数,则也可以简写为“public MyFunction(id)”。这里的cid即此命令的ID。
“cmd_access(id, level, cid, 3)”中最后的数字3表示为,如果玩家实际执行此命令的参数个数(包括命令本身)小于3(即实际参数小于2),则此函数会返回0,并且会在服务器或玩家控制台里给出提示信息。如果此命令必须带参数执行,则num应该大于或等于2,根据实际需要确定。如果此命令不需要带参数,num设为1即可。
具体可以参考 include/amxmisc.ini,上面有它的函数源代码。下面的代码是1.76b版本的代码。
- stock cmd_access(id,level,cid,num) {
- new has_access = 0
- if ( id==(is_dedicated_server()?0:1) ) {
- has_access = 1
- } else if ( level==ADMIN_ADMIN ) {
- if ( is_user_admin(id) )
- has_access = 1
- } else if ( get_user_flags(id) & level ) {
- has_access = 1
- } else if (level == ADMIN_ALL) {
- has_access = 1
- }
- if ( has_access==0 ) {
- #if defined AMXMOD_BCOMPAT
- console_print(id, SIMPLE_T("You have no access to that command."))
- #else
- console_print(id,"%L",id,"NO_ACC_COM")
- #endif
- return 0
- }
- if (read_argc() < num) {
- new hcmd[32], hinfo[128], hflag
- get_concmd(cid,hcmd,31,hflag,hinfo,127,level)
- #if defined AMXMOD_BCOMPAT
- console_print(id, SIMPLE_T("Usage: %s %s"), hcmd, SIMPLE_T(hinfo))
- #else
- console_print(id,"%L: %s %s",id,"USAGE",hcmd,hinfo)
- #endif
- return 0
- }
- return 1
- }
复制代码 |
|