PHP Code:
#include <amxmodx>
#include <amxmisc>
#define FILE_NAME "menuitems.ini"
//dynamic array method
new Array:g_aMenuItems;
//double array method
#define MAX_ITEMS 10 //items num
new g_szItemsMenu[MAX_ITEMS][64];
public plugin_init()
{
g_aMenuItems = ArrayCreate(64);
readFile()
register_clcmd("openMenu", "open_menu");
}
public plugin_end()
{
ArrayDestroy(g_aMenuItems);
}
readFile()
{
new szFile[128], szConfigsDir[64], iFile;
get_configsdir(szConfigsDir, charsmax(szConfigsDir))
formatex(szFile, charsmax(szFile), "%s/%s", szConfigsDir, FILE_NAME);
if((iFile = fopen(szFile, "r")) && iFile)
{
new szFileData[128], i;
while(fgets(iFile, szFileData, charsmax(szFileData)))
{
trim(szFileData);
if(!szFileData[0] || szFileData[0] == ';')
continue;
//dynamic array method
ArrayPushString(g_aMenuItems, szFileData);
//double array method an (index of bounds error would be thrown if you would have more than MAX_ITEMS menu items in your menu);
copy(g_szItemsMenu[i], charsmax(g_szItemsMenu[]), szFileData);
i++
}
}
}
public open_menu(id)
{
new iMenu = menu_create("This is my focking menu", "menu_handler"), szItem[64];
//dynamic array method
for(new i = 0; i < ArraySize(g_aMenuItems); i++)
{
ArrayGetString(g_aMenuItems, i, szItem, charsmax(szItem));
menu_additem(iMenu, szItem);
}
//
//double array method
for(new i = 0; i < MAX_ITEMS; i++)
{
if(g_szItemsMenu[i][0] != EOS)
menu_additem(iMenu, g_szItemsMenu[i]);
}
//
menu_setprop(iMenu, MPROP_EXIT, MEXIT_ALL);
if(is_user_connected(id))
menu_display(id, iMenu, 0, -1);
}
public menu_handler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
client_print(id, print_chat, "Wow! You pressed a button!")
open_menu(id);
return PLUGIN_CONTINUE;
}