Can anyone make it use with configs/kickmenu.cfg? instead of lang/kickmenu.txt ?
PHP Code:
/* A plugin from http://www.csindia.tech */
#include <amxmodx>
new g_iPlayerMenuPage[33];
new g_apPlayerMenuPlayers[33][32];
new g_iTarget[33];
new amx_show_activity;
public plugin_init()
{
register_plugin("New KickMenu", "2.0", "Flash");
register_clcmd("amx_kickmenu", "ClCmdKickMenu", ADMIN_KICK);
register_clcmd("kickreason", "ClCmdCustomKickReason", ADMIN_KICK);
register_menucmd(register_menuid("PlayersMenu"), 1023, "PlayersMenuHandler");
register_menucmd(register_menuid("ReasonsMenu"), 1023, "ReasonsMenuHandler");
amx_show_activity = get_cvar_pointer("amx_show_activity");
register_dictionary("admincmd.txt");
register_dictionary("common.txt");
register_dictionary("kickreasons.txt");
}
public ClCmdKickMenu(id, bitsAccess)
{
if(!(get_user_flags(id) & bitsAccess))
{
console_print(id, "%L", id, "NO_ACC_COM");
return PLUGIN_HANDLED;
}
PlayersMenuDisplay(id, g_iPlayerMenuPage[id] = 0);
return PLUGIN_HANDLED;
}
public ClCmdCustomKickReason(id, bitsAccess)
{
if(!(get_user_flags(id) & bitsAccess))
{
console_print(id, "%L", id, "NO_ACC_COM");
return PLUGIN_HANDLED;
}
new iPlayer = g_iTarget[id];
if(!iPlayer)
return PLUGIN_HANDLED;
new szReason[64];
read_argv(1, szReason, 63);
remove_quotes(szReason);
new szTargetName[32];
get_user_name(iPlayer, szTargetName, 31);
switch(get_pcvar_num(amx_show_activity))
{
case 1: client_print(0, print_chat, "%L. %L: %s", id, "ADMIN_KICK_1", szTargetName, id, "CLIENT_PRINT_REASON", szReason);
case 2:
{
new szAdminName[32];
get_user_name(id, szAdminName, 31);
client_print(0, print_chat, "%L. %L: %s", id, "ADMIN_KICK_2", szAdminName, szTargetName, id, "CLIENT_PRINT_REASON", szReason);
}
}
server_cmd("kick #%d ^"%s^"", get_user_userid(iPlayer), szReason);
server_exec();
return PLUGIN_HANDLED;
}
public PlayersMenuDisplay(id, iPage)
{
if(iPage < 0)
return PLUGIN_CONTINUE;
new apPlayers[32];
new iPlayers;
new szMenu[512], szName[32];
new pPlayer;
get_players(apPlayers, iPlayers);
new i = min(iPage * 8, iPlayers);
new iStart = i - (i % 8);
new iEnd = min(iStart + 8, iPlayers);
iPage = iStart / 8;
g_apPlayerMenuPlayers[id] = apPlayers;
g_iPlayerMenuPage[id] = iPage;
new iLen = formatex(szMenu, charsmax(szMenu), "\y%L\R%d/%d^n^n", id, "KICK_MENU", iPage + 1, ((iPlayers - 1) / 8) + 1);
new bitsKeys = MENU_KEY_0;
new iItem;
new bitsFlags;
for(i = iStart; i < iEnd; i++)
{
pPlayer = apPlayers[i];
get_user_name(pPlayer, szName, 31);
bitsFlags = get_user_flags(pPlayer);
if(bitsFlags & ADMIN_IMMUNITY && id != pPlayer)
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d%d. %s^n", ++iItem, szName);
else if(bitsFlags > 0 && !(bitsFlags & ADMIN_USER))
{
bitsKeys |= (1 << iItem);
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\w%d. %s \r*^n", ++iItem, szName);
}
else
{
bitsKeys |= (1 << iItem);
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\w%d. %s^n", ++iItem, szName);
}
}
if(iEnd < iPlayers)
{
bitsKeys |= MENU_KEY_9;
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\w9. %L...^n0. %L", id, "MORE", id, iPage ? "BACK" : "EXIT");
}
else
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\w0. %L", id, iPage ? "BACK" : "EXIT");
show_menu(id, bitsKeys, szMenu, -1, "PlayersMenu");
return PLUGIN_HANDLED;
}
public PlayersMenuHandler(id, iKey)
{
switch(iKey)
{
case 8: PlayersMenuDisplay(id, ++g_iPlayerMenuPage[id]);
case 9: PlayersMenuDisplay(id, --g_iPlayerMenuPage[id]);
default:
{
new iPlayer = g_apPlayerMenuPlayers[id][(g_iPlayerMenuPage[id] * 8) + iKey];
if(!is_user_connected(iPlayer))
{
client_print(id, print_chat, "* %L", id, "PLAYER_HAS_LEFT_THE_SERVER");
PlayersMenuDisplay(id, g_iPlayerMenuPage[id]);
return PLUGIN_HANDLED;
}
if(id != iPlayer && (get_user_flags(iPlayer) & ADMIN_IMMUNITY))
{
new szTargetName[32];
get_user_name(iPlayer, szTargetName, 31);
client_print(id, print_chat, "* %L", id, "CLIENT_IMM", szTargetName);
PlayersMenuDisplay(id, g_iPlayerMenuPage[id]);
return PLUGIN_HANDLED;
}
g_iTarget[id] = iPlayer;
ReasonsMenuDisplay(id);
}
}
return PLUGIN_HANDLED;
}
public ReasonsMenuDisplay(id)
{
new szMenu[512], szReason[64], szReasonName[16], iLen, i, bitsKeys;
iLen = formatex(szMenu, charsmax(szMenu), "\y%L^n^n", id, "REASON_MENU_TITLE");
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\w1. %L^n", id, "KNO_REASON");
bitsKeys |= MENU_KEY_1;
for(i = 1; i <= 7; i++)
{
formatex(szReasonName, 15, "KREASON_%d", i);
formatex(szReason, 63, "%L", id, szReasonName);
if(!strlen(szReason))
break;
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\w%d. %L^n", i + 1, id, szReasonName);
bitsKeys |= (1 << i);
}
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\w9. %L^n", id, "KCUSTOM_REASON");
bitsKeys |= MENU_KEY_9;
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\w0. %L", id, "EXIT");
bitsKeys |= MENU_KEY_0;
show_menu(id, bitsKeys, szMenu, -1, "ReasonsMenu");
}
public ReasonsMenuHandler(id, iKey)
{
if(iKey == 9)
return PLUGIN_HANDLED;
if(iKey == 8)
{
client_cmd(id, "messagemode kickreason");
return PLUGIN_HANDLED;
}
new iPlayer = g_iTarget[id];
if(!is_user_connected(iPlayer))
{
client_print(id, print_chat, "* %L", id, "PLAYER_HAS_LEFT_THE_SERVER");
PlayersMenuDisplay(id, g_iPlayerMenuPage[id]);
return PLUGIN_HANDLED;
}
new szTargetName[32];
get_user_name(iPlayer, szTargetName, 31);
new szReasonName[16];
formatex(szReasonName, 15, "KREASON_%d", iKey);
switch(get_pcvar_num(amx_show_activity))
{
case 1:
{
if(!iKey)
client_print(0, print_chat, "%L", id, "ADMIN_KICK_1", szTargetName);
else
client_print(0, print_chat, "%L. %L: %L", id, "ADMIN_KICK_1", szTargetName, id, "CLIENT_PRINT_REASON", id, szReasonName);
}
case 2:
{
new szAdminName[32];
get_user_name(id, szAdminName, 31);
if(!iKey)
client_print(0, print_chat, "%L", id, "ADMIN_KICK_2", szAdminName, szTargetName);
else
client_print(0, print_chat, "%L. %L: %L", id, "ADMIN_KICK_2", szAdminName, szTargetName, id, "CLIENT_PRINT_REASON", id, szReasonName);
}
}
if(!iKey)
server_cmd("kick #%d", get_user_userid(iPlayer));
else
server_cmd("kick #%d ^"%L^"", get_user_userid(iPlayer), id, szReasonName);
server_exec();
return PLUGIN_HANDLED;
}