show_menu_game_mode_list(id)
{
static menu[128], transkey[64]
new menuid, index, itemdata[2], game_mode_count = zp_gamemodes_get_count()
// Title
formatex(menu, charsmax(menu), "%L:\r", id, "MENU_INFO4")
menuid = menu_create(menu, "menu_game_mode_list")
// Item List
for (index = 0; index < game_mode_count; index++)
{
// Add Game Mode Name
zp_gamemodes_get_name(index, menu, charsmax(menu))
// ML support for mode name
formatex(transkey, charsmax(transkey), "MODENAME %s", menu)
if (GetLangTransKey(transkey) != TransKey_Bad) formatex(menu, charsmax(menu), "%L", id, transkey)
itemdata[0] = index
itemdata[1] = 0
menu_additem(menuid, menu, itemdata)
}
// No game modes to display?
if (menu_items(menuid) <= 0)
{
menu_destroy(menuid)
return;
}
// Back - Next - Exit
formatex(menu, charsmax(menu), "%L", id, "MENU_BACK")
menu_setprop(menuid, MPROP_BACKNAME, menu)
formatex(menu, charsmax(menu), "%L", id, "MENU_NEXT")
menu_setprop(menuid, MPROP_NEXTNAME, menu)
formatex(menu, charsmax(menu), "%L", id, "MENU_EXIT")
menu_setprop(menuid, MPROP_EXITNAME, menu)
// If remembered page is greater than number of pages, clamp down the value
MENU_PAGE_GAME_MODES = min(MENU_PAGE_GAME_MODES, menu_pages(menuid)-1)
// Fix for AMXX custom menus
set_pdata_int(id, OFFSET_CSMENUCODE, 0)
menu_display(id, menuid, MENU_PAGE_GAME_MODES)
}
// Admin Menu
public menu_admin(id, key)
{
// Player disconnected?
if (!is_user_connected(id))
return PLUGIN_HANDLED;
new userflags = get_user_flags(id)
switch (key)
{
case ACTION_INFECT_CURE: // Infect/Cure command
{
if (userflags & (read_flags(g_access_make_zombie) | read_flags(g_access_make_human)))
{
// Show player list for admin to pick a target
PL_ACTION = ACTION_INFECT_CURE
show_menu_player_list(id)
}
else
{
zp_colored_print(id, "%L", id, "CMD_NOT_ACCESS")
show_menu_admin(id)
}
}
case ACTION_MAKE_NEMESIS: // Nemesis command
{
if (LibraryExists(LIBRARY_NEMESIS, LibType_Library) && (userflags & read_flags(g_access_make_nemesis)))
{
// Show player list for admin to pick a target
PL_ACTION = ACTION_MAKE_NEMESIS
show_menu_player_list(id)
}
else
{
zp_colored_print(id, "%L", id, "CMD_NOT_ACCESS")
show_menu_admin(id)
}
}
case ACTION_MAKE_SURVIVOR: // Survivor command
{
if (LibraryExists(LIBRARY_SURVIVOR, LibType_Library) && (userflags & read_flags(g_access_make_survivor)))
{
// Show player list for admin to pick a target
PL_ACTION = ACTION_MAKE_SURVIVOR
show_menu_player_list(id)
}
else
{
zp_colored_print(id, "%L", id, "CMD_NOT_ACCESS")
show_menu_admin(id)
}
}
case ACTION_RESPAWN_PLAYER: // Respawn command
{
if (userflags & read_flags(g_access_respawn_players))
{
// Show player list for admin to pick a target
PL_ACTION = ACTION_RESPAWN_PLAYER
show_menu_player_list(id)
}
else
{
zp_colored_print(id, "%L", id, "CMD_NOT_ACCESS")
show_menu_admin(id)
}
}
case ACTION_START_GAME_MODE: // Start Game Mode command
{
if (userflags & read_flags(g_access_start_game_mode))
show_menu_game_mode_list(id)
else
{
zp_colored_print(id, "%L", id, "CMD_NOT_ACCESS")
show_menu_admin(id)
}
}
}
return PLUGIN_HANDLED;
}