#include <amxmodx>
#include <amxmisc>
#define PLUGIN "Custom N Menu"
#define VERSION "1.4"
#define AUTHOR "Just In Case"
#define Ceviri "Specified"
#define MAX_ITEMS 30
enum _: eInformation {
ITEM[128],
CMD[128],
COMMAND_TYPE[10],
FLAG,
iCLOSE
}
new const VIPONLY[] = " \r[\wSADECE YETKILILER GIREBILIR\r]"
new const szIniFileName[] = "Komutlar.ini"
new g_Data[MAX_ITEMS][eInformation]
new g_ItemsNum
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_cvar("CustomBMenu", VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
register_clcmd("buy", "Command_N_Menu")
}
public plugin_cfg()
ReadFile()
public Command_N_Menu(id)
{
if (is_user_connected(id)){
if(get_user_flags(id) & ADMIN_BAN)
KeyN_Menu(id, 0)
}
}
public KeyN_Menu(id, iPage)
{
if (g_ItemsNum == 0)
return PLUGIN_HANDLED
new iMenu = menu_create("\r[ADMIN-KISAYOL] \wSecenekler\y Sayfa:", "KeyN_Menu_Handler")
static szItem[64], iFlags
iFlags = get_user_flags(id)
for (new i; i < g_ItemsNum; i ++)
{
formatex(szItem, charsmax(szItem), "%s%s", g_Data[i][ITEM], (g_Data[i][FLAG] == ADMIN_ALL || iFlags & g_Data[i][FLAG]) ? "" : VIPONLY)
menu_additem(iMenu, szItem, _, (g_Data[i][FLAG] == ADMIN_ALL || iFlags & g_Data[i][FLAG]) ? 0 : g_Data[i][FLAG])
}
menu_setprop(iMenu, MPROP_BACKNAME, "\yOnceki Sayfa");
menu_setprop(iMenu, MPROP_NEXTNAME, "\ySonraki Sayfa^n");
menu_setprop(iMenu, MPROP_EXITNAME, "\rCikis");
menu_display(id, iMenu, iPage)
return PLUGIN_HANDLED
}
public KeyN_Menu_Handler(id, iMenu, Item)
{
if (Item == MENU_EXIT)
{
menu_destroy(iMenu)
return PLUGIN_HANDLED
}
if(command_type(g_Data[Item][COMMAND_TYPE]))
client_cmd(id, "say %s", g_Data[Item][CMD])
else
client_cmd(id, "%s", g_Data[Item][CMD])
menu_destroy(iMenu)
if (g_Data[Item][iCLOSE])
KeyN_Menu(id, Item/7)
return PLUGIN_HANDLED
}
ReadFile() {
new szConfigsName[256], szFilename[256]
get_configsdir(szConfigsName, charsmax(szConfigsName))
formatex(szFilename, charsmax(szFilename), "%s/%s", szConfigsName, szIniFileName)
new iFilePointer = fopen(szFilename, "rt")
if(iFilePointer)
{
new szData[300], szFlag[2], szClose[2]
while(!feof(iFilePointer))
{
fgets(iFilePointer, szData, charsmax(szData))
trim(szData)
if (szData[0] == EOS || szData[0] == ';' || szData[0] == '/' && szData[1] == '/')
continue
parse(szData, g_Data[g_ItemsNum][ITEM], charsmax(g_Data[][ITEM]), g_Data[g_ItemsNum][CMD], charsmax(g_Data[][CMD]), szFlag, charsmax(szFlag), szClose, charsmax(szClose), g_Data[g_ItemsNum][COMMAND_TYPE], charsmax(g_Data[][COMMAND_TYPE]))
if(is_blank(g_Data[g_ItemsNum][COMMAND_TYPE]))
g_Data[g_ItemsNum][COMMAND_TYPE] = 's'
g_Data[g_ItemsNum][FLAG] = is_blank(szFlag) ? ADMIN_ALL : read_flags(szFlag)
g_Data[g_ItemsNum][iCLOSE] = str_to_num(szClose)
szFlag[0] = EOS
g_ItemsNum++
}
fclose(iFilePointer)
}
}
//OciXCrom
bool:is_blank(szString[])
return szString[0] == EOS ? true : false
//End OciXCrom
bool:command_type(szString[])
return szString[0] == 's' ? true : false