It is more easier if you want to limit all admin menu.
Firstly, just add below code before public plugin_init() section:
new g_iAdMenuUsage[33] #define ADMINMENUUSAGE_LIMIT 5 // Admin menu usage per map
Then change below code:
// Game Menu public menu_game(id, key) { switch (key) { case 0: // Buy Weapons { // Custom buy menus enabled? if (get_pcvar_num(cvar_buycustom)) { // Disable the remember selection setting WPN_AUTO_ON = 0 zp_colored_print(id, "^x04[ZP]^x01 %L", id, "BUY_ENABLED")
// Show menu if player hasn't yet bought anything if (g_canbuy[id]) show_menu_buy1(id) } else zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT") } case 1: // Extra Items { // Extra items enabled? if (get_pcvar_num(cvar_extraitems)) { // Check whether the player is able to buy anything if (g_isalive[id]) show_menu_extras(id) else zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT") } else zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT_EXTRAS") } case 2: // Zombie Classes { // Zombie classes enabled? if (get_pcvar_num(cvar_zclasses)) show_menu_zclass(id) else zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT_ZCLASSES") } case 3: // Unstuck { // Check if player is stuck if (g_isalive[id]) { if (is_player_stuck(id)) { // Move to an initial spawn if (get_pcvar_num(cvar_randspawn)) do_random_spawn(id) // random spawn (including CSDM) else do_random_spawn(id, 1) // regular spawn } else zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT_STUCK") } else zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT") } case 4: // Help Menu { show_menu_info(id) } case 5: // Join Spectator { // Player alive? if (g_isalive[id]) { // Prevent abuse by non-admins if block suicide setting is enabled if (get_pcvar_num(cvar_blocksuicide) && !(get_user_flags(id) & g_access_flag[ACCESS_ADMIN_MENU])) { zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT") return PLUGIN_HANDLED; }
// Check that we still have both humans and zombies to keep the round going check_round(id)
// Kill him before he switches team dllfunc(DLLFunc_ClientKill, id) }
// Temporarily save player stats? if (get_pcvar_num(cvar_statssave)) save_stats(id)
// Then move him to the spectator team fm_cs_set_user_team(id, FM_CS_TEAM_SPECTATOR) fm_user_team_update(id) }
case 8: // Admin Menu { // Check if player has the required access if (get_user_flags(id) & g_access_flag[ACCESS_ADMIN_MENU]) show_menu_admin(id) else zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT_ACCESS") } }
return PLUGIN_HANDLED; } -->
// Game Menu public menu_game(id, key) { switch (key) { case 0: // Buy Weapons { // Custom buy menus enabled? if (get_pcvar_num(cvar_buycustom)) { // Disable the remember selection setting WPN_AUTO_ON = 0 zp_colored_print(id, "^x04[ZP]^x01 %L", id, "BUY_ENABLED")
// Show menu if player hasn't yet bought anything if (g_canbuy[id]) show_menu_buy1(id) } else zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT") } case 1: // Extra Items { // Extra items enabled? if (get_pcvar_num(cvar_extraitems)) { // Check whether the player is able to buy anything if (g_isalive[id]) show_menu_extras(id) else zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT") } else zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT_EXTRAS") } case 2: // Zombie Classes { // Zombie classes enabled? if (get_pcvar_num(cvar_zclasses)) show_menu_zclass(id) else zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT_ZCLASSES") } case 3: // Unstuck { // Check if player is stuck if (g_isalive[id]) { if (is_player_stuck(id)) { // Move to an initial spawn if (get_pcvar_num(cvar_randspawn)) do_random_spawn(id) // random spawn (including CSDM) else do_random_spawn(id, 1) // regular spawn } else zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT_STUCK") } else zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT") } case 4: // Help Menu { show_menu_info(id) } case 5: // Join Spectator { // Player alive? if (g_isalive[id]) { // Prevent abuse by non-admins if block suicide setting is enabled if (get_pcvar_num(cvar_blocksuicide) && !(get_user_flags(id) & g_access_flag[ACCESS_ADMIN_MENU])) { zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT") return PLUGIN_HANDLED; }
// Check that we still have both humans and zombies to keep the round going check_round(id)
// Kill him before he switches team dllfunc(DLLFunc_ClientKill, id) }
// Temporarily save player stats? if (get_pcvar_num(cvar_statssave)) save_stats(id)
// Then move him to the spectator team fm_cs_set_user_team(id, FM_CS_TEAM_SPECTATOR) fm_user_team_update(id) } case 8: // Admin Menu { // Check if player has the required access if (get_user_flags(id) & g_access_flag[ACCESS_ADMIN_MENU]) { if(g_iAdMenuUsage[id] >= ADMINMENUUSAGE_LIMIT) { zp_colored_print(id, "^x04[ZP]^x01 You have reached admin menu limit usage!") zp_colored_print(id, "^x04[ZP]^x01 Admin menu limit per map is %d!", ADMINMENUUSAGE_LIMIT) } else { show_menu_admin(id)
new g_iAdMenuUsage[33] #define ADMINMENUUSAGE_LIMIT 5 // Admin menu usage per map
Then change below code:
// Game Menu public menu_game(id, key) { switch (key) { case 0: // Buy Weapons { // Custom buy menus enabled? if (get_pcvar_num(cvar_buycustom)) { // Disable the remember selection setting WPN_AUTO_ON = 0 zp_colored_print(id, "^x04[ZP]^x01 %L", id, "BUY_ENABLED")
// Show menu if player hasn't yet bought anything if (g_canbuy[id]) show_menu_buy1(id) } else zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT") } case 1: // Extra Items { // Extra items enabled? if (get_pcvar_num(cvar_extraitems)) { // Check whether the player is able to buy anything if (g_isalive[id]) show_menu_extras(id) else zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT") } else zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT_EXTRAS") } case 2: // Zombie Classes { // Zombie classes enabled? if (get_pcvar_num(cvar_zclasses)) show_menu_zclass(id) else zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT_ZCLASSES") } case 3: // Unstuck { // Check if player is stuck if (g_isalive[id]) { if (is_player_stuck(id)) { // Move to an initial spawn if (get_pcvar_num(cvar_randspawn)) do_random_spawn(id) // random spawn (including CSDM) else do_random_spawn(id, 1) // regular spawn } else zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT_STUCK") } else zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT") } case 4: // Help Menu { show_menu_info(id) } case 5: // Join Spectator { // Player alive? if (g_isalive[id]) { // Prevent abuse by non-admins if block suicide setting is enabled if (get_pcvar_num(cvar_blocksuicide) && !(get_user_flags(id) & g_access_flag[ACCESS_ADMIN_MENU])) { zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT") return PLUGIN_HANDLED; }
// Check that we still have both humans and zombies to keep the round going check_round(id)
// Kill him before he switches team dllfunc(DLLFunc_ClientKill, id) }
// Temporarily save player stats? if (get_pcvar_num(cvar_statssave)) save_stats(id)
// Then move him to the spectator team fm_cs_set_user_team(id, FM_CS_TEAM_SPECTATOR) fm_user_team_update(id) }
case 6: client_cmd(id, "say /vm") // Vip menu call
case 8: // Admin Menu { // Check if player has the required access if (get_user_flags(id) & g_access_flag[ACCESS_ADMIN_MENU3]) show_menu3_admin(id) else zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT_ACCESS") } }
return PLUGIN_HANDLED; } -->
// Game Menu public menu_game(id, key) { switch (key) { case 0: // Buy Weapons { // Custom buy menus enabled? if (get_pcvar_num(cvar_buycustom)) { // Disable the remember selection setting WPN_AUTO_ON = 0 zp_colored_print(id, "^x04[ZP]^x01 %L", id, "BUY_ENABLED")
// Show menu if player hasn't yet bought anything if (g_canbuy[id]) show_menu_buy1(id) } else zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT") } case 1: // Extra Items { // Extra items enabled? if (get_pcvar_num(cvar_extraitems)) { // Check whether the player is able to buy anything if (g_isalive[id]) show_menu_extras(id) else zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT") } else zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT_EXTRAS") } case 2: // Zombie Classes { // Zombie classes enabled? if (get_pcvar_num(cvar_zclasses)) show_menu_zclass(id) else zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT_ZCLASSES") } case 3: // Unstuck { // Check if player is stuck if (g_isalive[id]) { if (is_player_stuck(id)) { // Move to an initial spawn if (get_pcvar_num(cvar_randspawn)) do_random_spawn(id) // random spawn (including CSDM) else do_random_spawn(id, 1) // regular spawn } else zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT_STUCK") } else zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT") } case 4: // Help Menu { show_menu_info(id) } case 5: // Join Spectator { // Player alive? if (g_isalive[id]) { // Prevent abuse by non-admins if block suicide setting is enabled if (get_pcvar_num(cvar_blocksuicide) && !(get_user_flags(id) & g_access_flag[ACCESS_ADMIN_MENU])) { zp_colored_print(id, "^x04[ZP]^x01 %L", id, "CMD_NOT") return PLUGIN_HANDLED; }
// Check that we still have both humans and zombies to keep the round going check_round(id)
// Kill him before he switches team dllfunc(DLLFunc_ClientKill, id) }
// Temporarily save player stats? if (get_pcvar_num(cvar_statssave)) save_stats(id)
// Then move him to the spectator team fm_cs_set_user_team(id, FM_CS_TEAM_SPECTATOR) fm_user_team_update(id) }
case 6: client_cmd(id, "say /vm") // Vip menu call
case 8: // Admin Menu { // Check if player has the required access if (get_user_flags(id) & g_access_flag[ACCESS_ADMIN_MENU3]) { if(g_iAdMenuUsage[id] >= ADMINMENUUSAGE_LIMIT) { zp_colored_print(id, "^x04[ZP]^x01 You have reached admin menu limit usage!") zp_colored_print(id, "^x04[ZP]^x01 Admin menu limit per map is %d!", ADMINMENUUSAGE_LIMIT) } else { show_menu3_admin(id)
Thanks, it is working perfect now, should I post this as a tutorial for zp43?
You can play around this menu limit by keeping it open for all map, because as I understand you can only open the menu 5 times, but you can use the menu as many times as you want when you have it opened.