|
我装了个可禁买武器的weapon_restriction插件,可发现item里面的装备也就是手雷防弹衣等不能用命令"amx_restrict item ?"禁买,也就是按键盘上的“b8?”还是照样可以购买,请大哥帮我看看是不是它的代码有问题啊,谢谢了~~~~
我对这个是一窍不通的,所以就全贴出来了,麻烦大哥了!!~~
/* AMX Mod script. * * (c) Copyright 2002, OLO * This file is provided as is (no warranties). * */ #include <amxmod>#include <amxmisc>/* Restriction for weapons* Admin command for server and client (with flag "n"):* amx_restrict < menu > [ keys ]* no keys clears restriction from weapon menu** examples:* block whole pistol menu* amx_restrict buy 1 * * block sg552 and aug * amx_restrict rifle 24 ** remove any restriction from menu shotgun* amx_restrict shotgun** NOTE: New settings for restriction don't clear old* f.e. amx_restrict rifle 2 and amx_restrict rifle 4* gives amx_restrict rifle 24*/new restricted[7]new menus[7][] = {"buy","pistol","shotgun","sub","rifle","machine","item"} public menu_buy(id,key) return check_block(id,restricted[0],(1<<key)) public menu_pistol(id,key) return check_block(id,restricted[1],(1<<key)) public menu_shotgun(id,key) return check_block(id,restricted[2],(1<<key))public menu_sub(id,key) return check_block(id,restricted[3],(1<<key))public menu_rifle(id,key) return check_block(id,restricted[4],(1<<key))public menu_machine(id,key) return check_block(id,restricted[5],(1<<key))public menu_item(id,key) return check_block(id,restricted[6],(1<<key))check_block(id,rest,bit){ if (rest & bit){ engclient_cmd(id,"menuselect","10") client_print(id,print_center,"* This position is restricted *") return PLUGIN_HANDLED } return PLUGIN_CONTINUE}find_menuid(arg[]){ for(new a=0; a<7; ++a) if(equal(arg,menus[a])) return a return -1}read_setting(flags,arg[]){ new p = 0 for(new i=0;i<9;++i){ if (flags&(1<<i)) arg[p++]='1'+i } if (flags&512) /* exception */ arg[p++]='0' arg[p]=0}public admin_restrict(id,level,cid){ if (!cmd_access(id,level,cid,2)) return PLUGIN_HANDLED new arg[16], keys[16], c, d = 0 read_argv(1,arg,15) /* read the menu */ new menuid = find_menuid(arg) if (menuid < 0){ console_print(id,"Menus: ^"buy^", ^"pistol^", ^"shotgun^", ^"sub^", ^"rifle^", ^"machine^", ^"item^"") return PLUGIN_HANDLED } if ( read_argc() > 2 ) {/* if there are more than 2 parameters then you set restriction */ read_argv(2,keys,15) while(keys[d]){ c = ( keys[d] == '0' ) ? 9 : ( keys[d] - '1' ) /* '0' is treaten as 9 key */ restricted[menuid] |= (1<<c) d++ } read_setting(restricted[menuid],keys) /* read current settings */ console_print(id,"Restriction set (menu ^"%s^") (keys ^"%s^")",arg,keys) return PLUGIN_HANDLED } restricted[menuid] = 0 /* in other case you remove restriction */ console_print(id,"Restriction removed (menu ^"%s^")",arg) return PLUGIN_HANDLED} public plugin_init(){ register_plugin("Weapon Restriction","0.9","default") register_menucmd(register_menuid("#Buy"),1023,"menu_buy") register_menucmd(register_menuid("BuyPistol"),1023,"menu_pistol") register_menucmd(register_menuid("BuyShotgun"),1023,"menu_shotgun") register_menucmd(register_menuid("BuySub"),1023,"menu_sub") register_menucmd(register_menuid("BuyRifle"),1023,"menu_rifle") register_menucmd(register_menuid("BuyMachine"),1023,"menu_machine") register_menucmd(register_menuid("BuyItem"),1023,"menu_item") register_menucmd(-28,1023,"menu_buy") register_menucmd(-29,1023,"menu_pistol") register_menucmd(-30,1023,"menu_shotgun") register_menucmd(-32,1023,"menu_sub") register_menucmd(-31,1023,"menu_rifle") register_menucmd(-33,1023,"menu_machine") register_menucmd(-34,1023,"menu_item") register_concmd("amx_restrict","admin_restrict",ADMIN_LEVEL_B,"< menu > [ keys ]") return PLUGIN_CONTINUE } |
|