#include <amxmodx>
#include <amxmisc>
#define PLUGIN "Maps"
#define VERSION "1.0"
#define AUTHOR "programer"
new g_LoadMaps[81]
new g_MapMenuNum[33]
new g_MapMenuName[33][512][64]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("amx_testmenu", "CreateMenu")
register_dictionary("file.txt")
}
public plugin_cfg()
{
new g_LoadDir[81]
get_configsdir(g_LoadDir, charsmax( g_LoadDir ))
formatex(g_LoadMaps, charsmax( g_LoadMaps ), "%s/test.ini", g_LoadDir)
}
public CreateMenu(id)
{
if(!(get_user_flags(id) & ADMIN_MAP))
{
return PLUGIN_HANDLED
}
g_MapMenuNum[id] = 0
new szTitle[512]
new szItem[512]
new szPlayers[32]
new szParse[128]
new szParseMap[64], szParseMinPlayers[32], szParseMaxPlayers[32]
new szLine, szNum, szNumPlayers
new szStr[10]
get_players(szPlayers, szNumPlayers)
for(szLine = 0; read_file(g_LoadMaps, szLine, szParse, charsmax( szParse ), szNum); szLine++)
{
if(szNum > 0 && szParse[0] != ';')
{
parse(szParse, szParseMap, charsmax( szParseMap ), szParseMinPlayers, charsmax( szParseMinPlayers ), szParseMaxPlayers, charsmax( szParseMaxPlayers ))
if(szNumPlayers >= str_to_num( szParseMinPlayers ))
{
if(szNumPlayers <= str_to_num( szParseMaxPlayers ))
{
++g_MapMenuNum[id]
g_MapMenuName[id][g_MapMenuNum[id]] = szParseMap
}
}
}
}
formatex(szTitle, charsmax( szTitle ), "%L", LANG_PLAYER, "TITLE", szNumPlayers, g_MapMenuNum[id])
new szMenu = menu_create(szTitle, "GetHandler")
for(new i = 1; i <= g_MapMenuNum[id]; i++)
{
num_to_str(i, szStr, charsmax( szStr ))
new szMap[64]
get_mapname(szMap, charsmax( szParseMap ))
if(equal(szMap, g_MapMenuName[id][i]))
{
formatex(szItem, charsmax( szItem ), "%s", g_MapMenuName[id][i])
menu_additem(szMenu, szItem, szStr, 0)
}
}
menu_setprop(szMenu, MPROP_EXIT, MEXIT_ALL )
menu_setprop(szMenu, MPROP_NEXTNAME, "Далее")
menu_setprop(szMenu, MPROP_BACKNAME, "Ðазад")
menu_setprop(szMenu, MPROP_EXITNAME, "Выход")
menu_display(id, szMenu, 0)
return PLUGIN_HANDLED
}
public GetHandler(id, szMenu, iItem)
{
if(iItem == MENU_EXIT)
{
menu_destroy( szMenu )
return PLUGIN_HANDLED
}
new szData[6], szName[64], iAccess, iCallback
menu_item_getinfo(szMenu, iItem, iAccess, szData, charsmax( szData ), szName, charsmax( szName ), iCallback)
new iKey = str_to_num( szData )
server_cmd("changelevel %s", g_MapMenuName[id][iKey])
menu_destroy( szMenu )
return PLUGIN_HANDLED
}
stock CheckMapPlayers( szMap[256] )
{
new szPlayers[32]
new szParse[128]
new szParseMap[64], szParseMinPlayers[32], szParseMaxPlayers[32]
new szLine, szNum, szNumPlayers
get_players(szPlayers, szNumPlayers)
for(szLine = 0; read_file(g_LoadMaps, szLine, szParse, charsmax( szParse ), szNum); szLine++)
{
if(szNum > 0 && szParse[0] != ';')
{
parse(szParse, szParseMap, charsmax( szParseMap ), szParseMinPlayers, charsmax( szParseMinPlayers ), szParseMaxPlayers, charsmax( szParseMaxPlayers ))
if(equal(szMap, szParseMap))
{
if(szNumPlayers >= str_to_num( szParseMinPlayers ))
{
if(szNumPlayers <= str_to_num( szParseMaxPlayers ))
{
return true
}
}
}
}
}
return false
}