Дата: Среда, 25.07.2018, 15:38 | Сообщение #
11
Не знаю как ты хотел и что именно должно быть, но, пойдёт так? P.S Чтобы изменить флаги доступа перепиши с "ADMIN_RCON (l)" на свой.
#include <amxmodx> #include <amxmisc> #include <fakemeta_util> #include <hamsandwich> #include <fun> #include <zombieplague> #pragma tabsize 0 #define PLUGIN "ZP BW ADDON" #define VERSION "1.0" #define AUTHOR "DEN67 3.10.14" #if cellbits == 32 const OFFSET_CLIPAMMO = 51 #else const OFFSET_CLIPAMMO = 65 #endif const OFFSET_LINUX_WEAPONS = 4 native zp_force_open_admenu(id) // Max Clip for weapons new const MAXCLIP[] = { -1, 13, -1, 10, 1, 7, -1, 30, 30, 1, 30, 20, 25, 30, 35, 25, 12, 20, 10, 30, 100, 8, 30, 30, 20, 2, 7, 30, 30, -1, 50 } new AmmoMaster[33] new block[33], g_round new block_vip[33], block_vip2[33], block_vip3[33], block_vip4[33], block_vip5[33], block_vip6[33] public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("prmenu", "prmenu") register_clcmd("say /vip","admin_motd",0,"- Shows the MOTD.") register_message(get_user_msgid("CurWeapon"), "message_cur_weapon") register_event("HLTV", "ev_roundstart", "a", "1=0", "2=0") RegisterHam(Ham_Spawn, "player", "fwd_PlayerSpawn_Post", 1) g_round = -1 } public ev_roundstart() { new i for(i=0;i<=32;i++) { if(block) { block-- } if(block_vip) { block_vip-- } if(block_vip2) { block_vip2-- } if(block_vip3) { block_vip3-- } if(block_vip4) { block_vip4-- } if(block_vip5) { block_vip5-- } if(block_vip6) { block_vip6-- } } g_round++ } public client_connect(id) { AmmoMaster [id]= false } public client_disconnect(id) { AmmoMaster [id]= false } public prmenu(id) { new menu = menu_create("\yМеню премиум игроков\r:", "prmenu_handler") if(get_user_flags(id) & ADMIN_LEVEL_A) { menu_additem(menu, "\yVIP MENU", "1", 0) } else { menu_additem(menu, "\dVIP MENU", "1", 0) } if(get_user_flags(id) & ADMIN_KICK) { menu_additem(menu, "Меню Администратора", "2", 0) } else { menu_additem(menu, "\dМеню Администратора", "2", 0) } if(get_user_flags(id) & ADMIN_LEVEL_H) { menu_additem(menu, "\ySUPER ADMIN MENU^n", "3", 0) } else { menu_additem(menu, "\dSUPER ADMIN MENU^n", "3", 0) } if(get_user_flags(id) & ADMIN_RCON) { menu_additem(menu, "\yGL ADMIN MENU^n", "4", 0) } else { menu_additem(menu, "\dGL ADMIN MENU^n", "4", 0) } menu_additem(menu, "\rКупить привилегии", "5", 0) menu_setprop(menu, MPROP_NEXTNAME, "Далее"); menu_setprop(menu, MPROP_BACKNAME, "Назад"); menu_setprop(menu, MPROP_EXITNAME, "Выход"); menu_display(id, menu, 0) return PLUGIN_HANDLED } public prmenu_handler(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } new data[6], iName[64], access, callback; menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback); new key = str_to_num(data); switch(key) { case 1: { if(get_user_flags(id) & ADMIN_LEVEL_A) { vipmenu(id) } else { chat_color(id, "!g[Система] !tНедостаточно прав!") } } case 2: { if(get_user_flags(id) & ADMIN_KICK) { client_cmd(id, "amxmodmenu") } else { chat_color(id, "!g[Система] !tНедостаточно прав!") } } case 3: { if(get_user_flags(id) & ADMIN_LEVEL_H) { superadmin(id) } else { chat_color(id, "!g[Система] !tНедостаточно прав!") } } case 4: { if(get_user_flags(id) & ADMIN_RCON) { gladmin(id) } else { chat_color(id, "!g[Система] !tНедостаточно прав!") } } case 5: { client_cmd(id, "say /vip") } } return PLUGIN_HANDLED; } public vipmenu(id) { new menu = menu_create("\yVIP MENU\r:", "vipmenu_handler") if(block_vip[id]) { menu_additem(menu, "\dВозродиться (Раз в раунд)", "1", 0) } else { menu_additem(menu, "Возродиться", "1", 0) } if(block_vip2[id]) { menu_additem(menu, "\dВзять 250 брони (Раз в 5 раундов)", "2", 0) } else { menu_additem(menu, "Взять 250 брони", "2", 0) } if(block_vip3[id]) { menu_additem(menu, "\dВзять антидот (Раз в 5 раундов)", "3", 0) } else { menu_additem(menu, "Взять антидот", "3", 0) } if(block_vip4[id]) { menu_additem(menu, "\dВзять 300 аммо (Раз за карту)", "4", 0) } else { menu_additem(menu, "Взять 300 аммо", "4", 0) } if(block_vip5[id]) { menu_additem(menu, "\dПревратиться в босса (Раз за карту)", "5", 0) } else { menu_additem(menu, "Превратиться в босса", "5", 0) } if(block_vip6[id]) { menu_additem(menu, "\dВзять выжившего (Раз за карту)", "6", 0) } else { menu_additem(menu, "Взять выжившего", "6", 0) } menu_setprop(menu, MPROP_NEXTNAME, "Далее"); menu_setprop(menu, MPROP_BACKNAME, "Назад"); menu_setprop(menu, MPROP_EXITNAME, "Выход"); menu_display(id, menu, 0) return PLUGIN_HANDLED } public vipmenu_handler(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu) return PLUGIN_HANDLED } new data[6], iName[64], access, callback menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback) new key = str_to_num(data) new name[32] get_user_name(id, name, 31) switch(key) { case 1: { if(block_vip[id]) { vipmenu(id) chat_color(id, "!g[Система] !tВы уже возраждались!") } else { block_vip [id]= 1 zp_respawn_user(id, ZP_TEAM_HUMAN) chat_color(0, "!g [VIP]!t%s взял !gВозрождение", name) } } case 2: { if(block_vip2[id]) { vipmenu(id) chat_color(id, "!g[Система] !tВы уже брали броню, ждите !g%s !tраунд(ов)!", block_vip2) } else { block_vip2 [id]= 5 new armor[33] armor [id]= get_user_armor(id) set_user_armor(id,armor [id]+ 250) chat_color(0, "!g [VIP]!t%s взял !g250 брони", name) } } case 3: { if(block_vip3[id]) { vipmenu(id) chat_color(id, "!g[Система] !tВы уже брали антидот, ждите !g%s !tраунд(ов)!", block_vip3) } else { block_vip3 [id]= 5 zp_disinfect_user(id) chat_color(0, "!g [VIP]!t%s взял !gАнтидот", name) } } case 4: { if(block_vip4[id]) { vipmenu(id) chat_color(id, "!g[Система] !tВы уже брали 300 аммо!") } else { block_vip4 [id]= 999 zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + 300) chat_color(0, "!g [VIP]!t%s взял !g300 аммо", name) } } case 5: { if(block_vip5[id]) { vipmenu(id) chat_color(id, "!g[Система] !tВы уже брали босса!") } else { block_vip5 [id]= 999 zp_make_user_nemesis(id) chat_color(0, "!g [VIP]!t%s взял !gБосса", name) } } case 6: { if(block_vip6[id]) { vipmenu(id) chat_color(id, "!g[Система] !tВы уже брали выжившего!") } else { block_vip6 [id]= 999 zp_make_user_survivor(id) chat_color(0, "!g [VIP]!t%s взял !gВыжившего", name) } } } return PLUGIN_HANDLED; } public superadmin(id) { new menu = menu_create("\rSUPER ADMIN MENU:", "superadmin_handler") if(!AmmoMaster[id]) { menu_additem(menu, "Бесконечные патроны (\dВкл\w/\yВыкл\w)", "1", 0) } else if(AmmoMaster[id]) { menu_additem(menu, "Бесконечные патроны (\rВкл\w/\dВыкл\w)", "1", 0) } if(block[id]) { menu_additem(menu, "\dВзять 500 аммо (Раз за карту)", "2", 0) } else { menu_additem(menu, "Взять 500 аммо", "2", 0) } menu_additem(menu, "Управление Зомби Модом", "3", 0) menu_additem(menu, "Меню раздачи аммо", "4", 0) menu_setprop(menu, MPROP_NEXTNAME, "Далее"); menu_setprop(menu, MPROP_BACKNAME, "Назад"); menu_setprop(menu, MPROP_EXITNAME, "Выход"); menu_display(id, menu, 0) return PLUGIN_HANDLED } public superadmin_handler(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu) return PLUGIN_HANDLED } new data[6], iName[64], access, callback; menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback) new key = str_to_num(data) new name[32] get_user_name(id, name, 31) switch(key) { case 1: { if(!AmmoMaster[id]) { AmmoMaster [id]= true superadmin(id) } else if(AmmoMaster[id]) { AmmoMaster [id]= false superadmin(id) } } case 2: { if(block[id]) { superadmin(id) chat_color(id, "!g[Система] !tВы уже брали 500 аммо!") } else { block [id]= 999 zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + 500) chat_color(0, "!g[SUPER ADMIN] !t%s взял !g500 аммо", name) } } case 3: { zp_force_open_admenu(id) } case 4: { client_cmd(id, "zp_ammo_menu" ) } } return PLUGIN_HANDLED; } public gladmin(id) { new menu = menu_create("\rGL ADMIN MENU:", "gldmin_handler") if(!AmmoMaster[id]) { menu_additem(menu, "Бесконечные патроны (\dВкл\w/\yВыкл\w)", "1", 0) } else if(AmmoMaster[id]) { menu_additem(menu, "Бесконечные патроны (\rВкл\w/\dВыкл\w)", "1", 0) } if(block[id]) { menu_additem(menu, "\dВзять 1500 аммо (Раз за карту)", "2", 0) } else { menu_additem(menu, "Взять 1500 аммо", "2", 0) } menu_additem(menu, "Управление Зомби Модом", "3", 0) menu_additem(menu, "Меню раздачи аммо", "4", 0) menu_setprop(menu, MPROP_NEXTNAME, "Далее"); menu_setprop(menu, MPROP_BACKNAME, "Назад"); menu_setprop(menu, MPROP_EXITNAME, "Выход"); menu_display(id, menu, 0) return PLUGIN_HANDLED } public gladmin_handler(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu) return PLUGIN_HANDLED } new data[6], iName[64], access, callback; menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback) new key = str_to_num(data) new name[32] get_user_name(id, name, 31) switch(key) { case 1: { if(!AmmoMaster[id]) { AmmoMaster [id]= true superadmin(id) } else if(AmmoMaster[id]) { AmmoMaster [id]= false superadmin(id) } } case 2: { if(block[id]) { superadmin(id) chat_color(id, "!g[Система] !tВы уже брали 1500 аммо!") } else { block [id]= 999 zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + 1500) chat_color(0, "!g[GL ADMIN] !t%s взял !g1500 аммо", name) } } case 3: { zp_force_open_admenu(id) } case 4: { client_cmd(id, "zp_ammo_menu" ) } } return PLUGIN_HANDLED; } public client_authorized(id) { client_cmd(id, "bind ^"F5^" ^"prmenu^"") } public message_cur_weapon(msg_id, msg_dest, msg_entity) { if (!is_user_alive(msg_entity) || get_msg_arg_int(1) != 1) return if (!AmmoMaster[msg_entity]) return static weapon, clip weapon = get_msg_arg_int(2) // get weapon ID clip = get_msg_arg_int(3) // get weapon clip // Unlimited Clip Ammo if (MAXCLIP [weapon]> 2) // skip grenades { set_msg_arg_int(3, get_msg_argtype(3), MAXCLIP[weapon]) // HUD should show full clip all the time if (clip < 2) // refill when clip is nearly empty { // Get the weapon entity static wname[32], weapon_ent get_weaponname(weapon, wname, sizeof wname - 1) weapon_ent = fm_find_ent_by_owner(-1, wname, msg_entity) // Set max clip on weapon fm_set_weapon_ammo(weapon_ent, MAXCLIP[weapon]) } } } stock fm_set_weapon_ammo(entity, amount) { set_pdata_int(entity, OFFSET_CLIPAMMO, amount, OFFSET_LINUX_WEAPONS); } public fwd_PlayerSpawn_Post(id) { if(is_user_alive(id) && get_user_flags(id) & ADMIN_LEVEL_A) { message_begin(MSG_ALL, get_user_msgid("ScoreAttrib")) write_byte(id) write_byte(4) message_end() } } public admin_motd(id,level,cid) { if (!cmd_access(id,level,cid,1)) return PLUGIN_CONTINUE show_motd(id,"vip.txt","Как купить привилегии") return PLUGIN_CONTINUE } stock chat_color(const id, const input[], any:...) { new count = 1, players[32] static msg[191] vformat(msg, 190, input, 3) replace_all(msg, 190, "!g", "^4") //Green Color replace_all(msg, 190, "!y", "^1") //Default Color replace_all(msg, 190, "!t", "^3") //Team Color if(id) players[0] = id else get_players(players, count, "ch") for(new i=0; i<count; i++) { if(is_user_connected(players)) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players) write_byte(players) write_string(msg) message_end() } } }
Сообщение отредактировал maxee - Среда, 25.07.2018, 15:42