查看: 429|回复: 3
打印 上一主题 下一主题

[其它] [申精]如何更改插件命令的权限!

[复制链接]
跳转到指定楼层
楼主
发表于 2012-5-9 21:18:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 D.R.CTO_地瓜 于 2012-5-12 08:15 编辑

改插件命令权限涉及到两个函数register_concmd()和cmd_access(),cmd_access()是检验玩家是否有register_concmd中定义的权限。
因此修改权限可分为两种情况。
1.原插件已经定义过权限。如amx_ban,amx_kick,amx_votekick,amx_voteban等命令。
2.原插件没有定义权限。如amx_help,amx_who,voterr等。
对于第一中情况修改比较简单,只需修改register_concmd()中的权限就可以了。如想把amx_voteban的权限由j改为d.可以这样修改:
打开adminvote.sma文件,找到plugin_init()函数,把其中的register_concmd("amx_voteban","cmdVoteKickBan",ADMIN_VOTE,"<name or #userid>")改为:
register_concmd("amx_voteban","cmdVoteKickBan",ADMIN_BAN,"<name or #userid>"),即把ADMIN_VOTE改为ADMIN_BAN.
对于第二中情况则要在实现命令的函数开头加入检验权限的函数即cmd_access(),比如说amx_who命令原本没有权限,我想改为m权限可以这样修改:
I。打开admincmd.sma,修改register_concmd("amx_who","cmdWho",0,"- displays who is on server")  为register_concmd("amx_who","cmdWho",ADMIN_LEVEL_A,"- displays who is on server") 。
II。在cmdWho这个函数的开头加入
if(!cmd_access(id, level, cid, 1))
     return PLUGIN_HANDLED
它的作用就是检验玩家是否具备在register_concmd中定义的权限,如果不具备,return PLUGIN_HANDLED 。return PLUGIN_HANDLED 意思是终止执行下面的程序。
注:其中cmd_access()函数中的数值(此例中数值为1)可设置成定义函数中read_argv()函数(不包含read_argv(0,output[],len))的个数+1,简单的说可以设置成输入完整命令时参数的个数(包含命令本身)。
下面列出插件原代码中(即*.sma文件)的权限对应的op设置时的权限。
#define ADMIN_IMMUNITY        (1<<0)  /* flag "a" */
#define ADMIN_RESERVATION     (1<<1)  /* flag "b" */
#define ADMIN_KICK            (1<<2)  /* flag "c" */
#define ADMIN_BAN             (1<<3)  /* flag "d" */
#define ADMIN_SLAY            (1<<4)  /* flag "e" */
#define ADMIN_MAP             (1<<5)  /* flag "f" */
#define ADMIN_CVAR            (1<<6)  /* flag "g" */
#define ADMIN_CFG             (1<<7)  /* flag "h" */
#define ADMIN_CHAT            (1<<8)  /* flag "i" */
#define ADMIN_VOTE            (1<<9)  /* flag "j" */
#define ADMIN_PASSWORD        (1<<10) /* flag "k" */
#define ADMIN_RCON            (1<<11) /* flag "l" */
#define ADMIN_LEVEL_A         (1<<12) /* flag "m" */
#define ADMIN_LEVEL_B         (1<<13) /* flag "n" */
#define ADMIN_LEVEL_C         (1<<14) /* flag "o" */
#define ADMIN_LEVEL_D         (1<<15) /* flag "p" */
#define ADMIN_LEVEL_E         (1<<16) /* flag "q" */
#define ADMIN_LEVEL_F         (1<<17) /* flag "r" */
#define ADMIN_LEVEL_G         (1<<18) /* flag "s" */
#define ADMIN_LEVEL_H         (1<<19) /* flag "t" */
#define ADMIN_MENU            (1<<20) /* flag "u" */
#define ADMIN_USER            (1<<25) /* flag "z" */

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

沙发
发表于 2012-5-12 08:25:15 | 只看该作者
本帖最后由 D.R.CTO_地瓜 于 2012-5-12 08:27 编辑

补充:管理员验证标记常量
常量名                     值              注释
FLAG_KICK             1        //验证标记 "a"
FLAG_TAG              2        //验证标记 "b"
FLAG_AUTHID         4        //验证标记 "c"
FLAG_IP                  8        //验证标记 "d"
FLAG_NOPASS       16        //验证标记 "e"





对于每个验证标记所代表的验证方式请查看你的.../addons/amxmodx/configs/users.ini中的说明




回复 支持 反对

使用道具 举报

板凳
发表于 2012-5-12 09:26:14 来自手机 | 只看该作者
呃        地瓜威武    这样般就可以申精?
回复 支持 反对

使用道具 举报

地板
发表于 2012-5-12 09:32:44 | 只看该作者
麻瓜啊 发表于 2012-5-12 09:26
呃        地瓜威武    这样般就可以申精?

我没给他精啊= =
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

本站业务已经停用,仅作为【维翔主机】提供虚拟主机服务测速参考|小黑屋|手机版|银河网络    

GMT+8, 2025-6-25 14:21 , Processed in 0.055995 second(s), 18 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc. Design Singcere!

快速回复 返回顶部 返回列表