[重要]如何更改插件命令的权限!
更改插件命令权限涉及到两个函数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" */
赫赫,难得有一篇讲解得这么细致的好文章
辛苦飘风了,可惜居然没有人看33人的浏览量,哎,不知道说什么好了 好东西.. 顶... 锅底汤更浓 :wink: 好,支持 :super: 好东西看完是要定地~ :d: 可不可以设置双权限啊??
比如:ADMIN_VOTE & ADMIN_BAN 强
!!!!
:super::super::super::super: 辛苦了 顶~! :boss:
[=H.H=] LightMusic
我在QQ对战平台CS1.6广东1建服好像看到了你的名字 :D
页:
[1]
2