From bbf7593e43e52b0d6ce1784b227dd08d608cb040 Mon Sep 17 00:00:00 2001 From: Steve Dudenhoeffer Date: Sun, 30 Mar 2008 20:51:48 +0000 Subject: [PATCH] fix for amb1139: Menufront now follows cmdaccess.ini changes for its additions (also, pluginmenu does now too) --- plugins/menufront.sma | 57 +++++++++++++++++++++++++++++------------- plugins/pluginmenu.sma | 35 ++++++++++++++++++++++---- 2 files changed, 70 insertions(+), 22 deletions(-) diff --git a/plugins/menufront.sma b/plugins/menufront.sma index d6869ab8..d5c14c73 100755 --- a/plugins/menufront.sma +++ b/plugins/menufront.sma @@ -125,24 +125,44 @@ public AddClientMenu(const menuBody[], const menuCmd[], const menuAccess, const AddDefaultMenus() { - AddMenuLang("KICK_PLAYER", "amx_kickmenu", ADMIN_KICK, "Players Menu") - AddMenuLang("BAN_PLAYER", "amx_banmenu", ADMIN_BAN, "Players Menu") - AddMenuLang("SLAP_SLAY", "amx_slapmenu", ADMIN_SLAY, "Players Menu") - AddMenuLang("TEAM_PLAYER", "amx_teammenu", ADMIN_LEVEL_A, "Players Menu") - AddMenuLang("CHANGEL", "amx_mapmenu", ADMIN_MAP, "Maps Menu") - AddMenuLang("VOTE_MAPS", "amx_votemapmenu", ADMIN_VOTE, "Maps Menu") - AddMenuLang("SPECH_STUFF", "amx_speechmenu", ADMIN_MENU, "Commands Menu") - AddMenuLang("CLIENT_COM", "amx_clcmdmenu", ADMIN_LEVEL_A, "Players Menu") - AddMenuLang("SERVER_COM", "amx_cmdmenu", ADMIN_MENU, "Commands Menu") - AddMenuLang("CVARS_SET", "amx_cvarmenu", ADMIN_CVAR, "Commands Menu") - AddMenuLang("CONFIG", "amx_cfgmenu", ADMIN_MENU, "Commands Menu") - AddMenuLang("LANG_SET", "amx_langmenu", ADMIN_CFG, "Multi-Lingual System") - AddMenuLang("STATS_SET", "amx_statscfgmenu", ADMIN_CFG, "Stats Configuration") - AddMenuLang("PAUSE_PLUG", "amx_pausecfgmenu", ADMIN_CFG, "Pause Plugins") - AddMenuLang("RES_WEAP", "amx_restmenu", ADMIN_CFG, "Restrict Weapons") - AddMenuLang("TELE_PLAYER", "amx_teleportmenu", ADMIN_CFG, "Teleport Menu") + new flags; + AddMenuLang("KICK_PLAYER", "amx_kickmenu", get_clcmd_flags("amx_kickmenu", flags) ? flags : ADMIN_KICK , "Players Menu") + AddMenuLang("BAN_PLAYER", "amx_banmenu", get_clcmd_flags("amx_banmenu", flags) ? flags : ADMIN_BAN, "Players Menu") + AddMenuLang("SLAP_SLAY", "amx_slapmenu", get_clcmd_flags("amx_slapmenu", flags) ? flags : ADMIN_SLAY, "Players Menu") + AddMenuLang("TEAM_PLAYER", "amx_teammenu", get_clcmd_flags("amx_teammenu", flags) ? flags : ADMIN_LEVEL_A, "Players Menu") + AddMenuLang("CHANGEL", "amx_mapmenu", get_clcmd_flags("amx_mapmenu", flags) ? flags : ADMIN_MAP, "Maps Menu") + AddMenuLang("VOTE_MAPS", "amx_votemapmenu", get_clcmd_flags("amx_votemapmenu", flags) ? flags : ADMIN_VOTE, "Maps Menu") + AddMenuLang("SPECH_STUFF", "amx_speechmenu", get_clcmd_flags("amx_speechmenu", flags) ? flags : ADMIN_MENU, "Commands Menu") + AddMenuLang("CLIENT_COM", "amx_clcmdmenu", get_clcmd_flags("amx_clcmdmenu", flags) ? flags : ADMIN_LEVEL_A, "Players Menu") + AddMenuLang("SERVER_COM", "amx_cmdmenu", get_clcmd_flags("amx_cmdmenu", flags) ? flags : ADMIN_MENU, "Commands Menu") + AddMenuLang("CVARS_SET", "amx_cvarmenu", get_clcmd_flags("amx_cvarmenu", flags) ? flags : ADMIN_CVAR, "Commands Menu") + AddMenuLang("CONFIG", "amx_cfgmenu", get_clcmd_flags("amx_cfgmenu", flags) ? flags : ADMIN_MENU, "Commands Menu") + AddMenuLang("LANG_SET", "amx_langmenu", get_clcmd_flags("amx_langmenu", flags) ? flags : ADMIN_CFG, "Multi-Lingual System") + AddMenuLang("STATS_SET", "amx_statscfgmenu", get_clcmd_flags("amx_statscfgmenu", flags) ? flags : ADMIN_CFG, "Stats Configuration") + AddMenuLang("PAUSE_PLUG", "amx_pausecfgmenu", get_clcmd_flags("amx_pausecfgmenu", flags) ? flags : ADMIN_CFG, "Pause Plugins") + AddMenuLang("RES_WEAP", "amx_restmenu", get_clcmd_flags("amx_restmenu", flags) ? flags : ADMIN_CFG, "Restrict Weapons") + AddMenuLang("TELE_PLAYER", "amx_teleportmenu", get_clcmd_flags("amx_teleportmenu", flags) ? flags : ADMIN_CFG, "Teleport Menu") } +stock bool:get_clcmd_flags(const search_command[], &flags) +{ + new count = get_clcmdsnum(-1); + static cmd[128]; + static info[1]; + new _flags; + for (new i = 0; i < count; i++) + { + get_clcmd(i, cmd, charsmax(cmd), _flags, info, charsmax(info), -1); + + if (strcmp(cmd, search_command) == 0) + { + flags = _flags; + return true; + } + } + + return false; +} public actionMenu(id, key) { switch (key) @@ -359,9 +379,12 @@ public plugin_init() g_coloredMenus = colored_menus() + +} +public plugin_cfg() +{ AddDefaultMenus() - // Add custom menu items new configs[128] get_configsdir(configs, 127) server_cmd("exec %s/custommenuitems.cfg", configs) diff --git a/plugins/pluginmenu.sma b/plugins/pluginmenu.sma index fc48f363..5bd59c2a 100644 --- a/plugins/pluginmenu.sma +++ b/plugins/pluginmenu.sma @@ -55,7 +55,8 @@ new CurrentPage[33]; new CurrentMenuFunction[33] = { -1,... }; new CurrentCommand[33][32]; - +new cvarmenu_cmdid; +new cmdmenu_cmdid; new ExplicitPlugin[33]; @@ -66,8 +67,8 @@ public plugin_init() register_dictionary("common.txt"); register_dictionary("pausecfg.txt"); // Needed for PAUSE_COULDNT_FIND - register_clcmd("amx_plugincvarmenu", "CvarMenuCommand", ADMIN_CVAR, " - displays the plugin cvar menu"); - register_clcmd("amx_plugincmdmenu", "CommandMenuCommand", ADMIN_MENU, " - displays the plugin command menu"); + cvarmenu_cmdid=register_clcmd("amx_plugincvarmenu", "CvarMenuCommand", ADMIN_CVAR, " - displays the plugin cvar menu"); + cmdmenu_cmdid=register_clcmd("amx_plugincmdmenu", "CommandMenuCommand", ADMIN_MENU, " - displays the plugin command menu"); register_clcmd("amx_changecvar","CommandChangeCvar"); register_clcmd("amx_executecmd","CommandExecuteCommand"); @@ -79,12 +80,36 @@ public plugin_init() // Add these menus to the amxmodmenu public plugin_cfg() +{ + set_task(0.1, "addToMenuFront"); +} +public addToMenuFront() { new PluginFileName[64]; get_plugin(-1, PluginFileName, charsmax(PluginFileName)); - AddMenuItem("Plugin Cvars", "amx_plugincvarmenu", ADMIN_CVAR, PluginFileName); - AddMenuItem("Plugin Commands", "amx_plugincmdmenu", ADMIN_MENU, PluginFileName); + new cvarflags; + new cmdflags; + new garbage[1]; + new cmd[32]; + + get_concmd(cmdmenu_cmdid, cmd, charsmax(cmd), cmdflags, garbage, charsmax(garbage), -1); + + if (strcmp(cmd, "amx_plugincmdmenu") != 0) + { + // this should never happen, but just incase! + cmdflags = ADMIN_MENU; + } + get_concmd(cvarmenu_cmdid, cmd, charsmax(cmd), cvarflags, garbage, charsmax(garbage), -1); + + if (strcmp(cmd, "amx_plugincvarmenu") != 0) + { + // this should never happen, but just incase! + cvarflags = ADMIN_CVAR; + } + + AddMenuItem("Plugin Cvars", "amx_plugincvarmenu", cvarflags, PluginFileName); + AddMenuItem("Plugin Commands", "amx_plugincmdmenu", cmdflags, PluginFileName); } // Reset all fields for each client as they connect.