#include <amxmodx>
#include <gamecms5>
#include <cstrike>
#include <amxmisc>
#define PLUGIN "Admin_Donat"
#define VERSION "1.2"
#define AUTHOR "kRyMcHaN1n"
const MENU_LENGTH = 512;
//Для меню из игроков.
new g_iPlayerMenuPage[33]; // Текущая страница меню
new g_apPlayerMenuPlayers[33][32]; // Соотношение пункта к игроку в меню
new cvar_set_flags;
new CHATTAG[] = "!t[!gINFO!t]"; // Префикс в чате изменять тут
public is_access_flag(id,cvar_flag) {
new szFlags[24]
get_pcvar_string(cvar_flag, szFlags, 23)
if(read_flags(szFlags) & get_user_flags(id)) {
return true;
}
return false;
}
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
// Регистрируем меню игроков и меню выдачи привилегии
register_menu("PlMenu", 1023, "PlMenu_Func");
register_menu("PlPrivMenu", 1023, "PlMenuPriv_Func");
cvar_set_flags = register_cvar("cvar_set_flags" , "bcdefjmpstu");
register_clcmd("adm_donat","PlMenu_Func")
}
public plugin_cfg()
{
new configsdir[128]
get_localinfo("amxx_configsdir", configsdir, 127)
server_cmd("exec %s/Admin_System/Settings.cfg", configsdir)
}
//Меню из игроков привелегия на карту.
public PlayerMenuPriv(id) {
MenuPlayerPriv(id, g_iPlayerMenuPage[id] = 0);
return PLUGIN_HANDLED;
}
public MenuPlayerPriv(id, iPage ) {
if (iPage < 0)
return PLUGIN_HANDLED;
new apPlayers[32];
new iPlayers;
new szMenu[MENU_LENGTH], szName[64];
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, sizeof(szMenu), "\yПривелегия на карту\d: \r\R%d/%d^n^n",iPage + 1, ((iPlayers - 1) / 8) + 1)
new bitsKeys = MENU_KEY_0;
new iItem;
// Цикл из игроков
for (i = iStart; i < iEnd; i++) {
pPlayer = apPlayers[i];
if(!is_user_connected(pPlayer))
continue;
get_user_name(pPlayer,szName,sizeof(szName));
if(is_user_connected(pPlayer) || !is_user_bot(pPlayer)) {
bitsKeys |= (1 << iItem);
iLen += formatex(szMenu[iLen], sizeof(szMenu) - iLen, "\r%d. \w%s^n", ++iItem, szName);
}
}
if (iEnd < iPlayers) {
bitsKeys |= MENU_KEY_9;
formatex(szMenu[iLen], sizeof(szMenu) - iLen, "^n\r9. \wДалее^n\r0. \wНазад");
} else
formatex(szMenu[iLen], sizeof(szMenu) - iLen, "^n\r0. \wНазад");
return show_menu(id, bitsKeys, szMenu, -1, "PlPrivMenu");
}
public PlMenuPriv_Func(id, iKey) {
switch (iKey) {
case 8: MenuPlayerPriv(id, ++g_iPlayerMenuPage[id]);
case 9:{
if(g_iPlayerMenuPage[id] > 0) {
MenuPlayerPriv(id, --g_iPlayerMenuPage[id]);
}
if(g_iPlayerMenuPage[id] == 0) {
return PLUGIN_HANDLED;
}
}
default: {
new pPlayer = g_apPlayerMenuPlayers[id][(g_iPlayerMenuPage[id] * 8) + iKey];
if (!is_user_connected(pPlayer)) {
client_print_color(id, 0, "%s !tИгрок вышел, выберите другого игрока.", CHATTAG);
MenuPlayerPriv(id, g_iPlayerMenuPage[id]);
return PLUGIN_HANDLED;
}
new name[2][64];
get_user_name(id,name[0],charsmax(name[]));
get_user_name(pPlayer,name[1],charsmax(name[]));
new szFlags[24];
get_pcvar_string(cvar_set_flags, szFlags, charsmax(szFlags));
cmsapi_set_user_flags(id, const szFlags[], iTime = -1, const szServiceName[] = "Вип на карту", bSilent = false);
remove_user_flags(pPlayer,read_flags("z"));
client_print_color(id, 0, "%s !tВы выдали права игроку !g%s.", CHATTAG, name[1]);
client_print_color(pPlayer, 0,"%s !g%s !t,Администратор !g %s !tвыдал вам права на карту.", CHATTAG, name[1],name[0]);
}
}
return 1;
}