#include <amxmodx>
//;**Информация**
//;Флаги можно поменять на свои:
//;Скин Парня - o
//;Скин Девушки - s
//;Вип Меню - t
//;Вампиризм - n
//;По этим пунктам префиксов плагин опредилит что
//;у пользователя есть нормальная VIP или Админка
//;а не та что даётся на одну карту(я использовал префиксы).
//;Префикс [Админ] - c
//;Префикс [VIP] - r
//;Префикс [Девушка] - s
//;Меню привилегий - q
#define PLUGIN "Giveprivilleges"
#define AUTHOR "Slove."
#define VERSION "1.0"
#define ACCESSFLAG ADMIN_LEVEL_E
new typeImg[33]
new name[32]
new g_Menu;
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_clcmd("giveprivilleges", "privilleges_menu");
g_Menu = menu_create("\rМеню\w|\rПривилегий\w*\d 18+^n\rВыберите что дать:\w*^n", "menu_handler2");
menu_additem(g_Menu, "Дать \w[\rАдминку\w]");
menu_additem(g_Menu, "Дать \w[\rVIP\w]");
menu_additem(g_Menu, "Дать \w[\yВампиризм\w]");
menu_additem(g_Menu, "Дать \w[\rСкин \yПарня\w]");
menu_additem(g_Menu, "Дать \w[\rСкин \yДевушки\w]^n");
menu_additem(g_Menu, "Забрать \w[\rПривилегию\w]");
menu_setprop(g_Menu, MPROP_EXITNAME, "\rВыход");
}
public plugin_end()menu_destroy(g_Menu);
public privilleges_menu(id)
{
if(~get_user_flags(id) & ACCESSFLAG)return PLUGIN_CONTINUE;
menu_display(id, g_Menu, 0);
return PLUGIN_HANDLED;
}
public menu_handler2(id,menu,item)
{
typeImg[id]=item;
privilleges_menu2(id);
}
public privilleges_menu2(id){
if(!(get_user_flags(id) & ACCESSFLAG)) return PLUGIN_CONTINUE;
new Menu = menu_create("\rСписок\w|\rИгроков:\w*", "menu_handler")
new Player
new sPlayerName[128]
new sPlayerId[11]
new playersList[32]
new playersnum
get_players(playersList, playersnum, "c")
for(new i; i<playersnum; i++)
{
Player = playersList[i]
get_user_name(Player, sPlayerName, charsmax(sPlayerName))
num_to_str(Player, sPlayerId, charsmax(sPlayerId))
menu_additem(Menu, sPlayerName, sPlayerId)
}
menu_setprop(Menu, MPROP_BACKNAME, "\yНазад")
menu_setprop(Menu, MPROP_NEXTNAME, "\yВперёд")
menu_setprop(Menu, MPROP_EXITNAME, "\rВыход")
menu_display(id, Menu, 0)
return PLUGIN_HANDLED
}
public menu_handler(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED
}
get_user_name(id, name, 31);
new flags = read_flags("cmnotu"); // флаги админки
new flagsvip = read_flags("t"); // флаги вип
new flagsvampir = read_flags("n"); // флаги вампиризма
new flagsboy = read_flags("o"); // флаги пацана
new flagsgirl = read_flags("s"); // флаги девушки
new flagsnone = read_flags("z"); // флаг пользователя
new s_Data[6], s_Name[64], i_Access, i_Callback;
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback);
menu_destroy(menu);
new Player = str_to_num(s_Data);
if(!is_user_connected(Player)){
print_col_chat(id, "!g[Сервер] !yИгрок вышел с сервера.")
privilleges_menu(id)
return PLUGIN_HANDLED
}
switch(typeImg[id])
{
case 0:
{
if(!flags)flags=read_flags("cmnotu");
if(get_user_flags(Player) & flags)
{
print_col_chat(id, "!g[Сервер] !yУ игрока !g%s !yуже есть !tАдминка.", s_Name)
}
else
{
set_user_flags(Player,flags);
print_col_chat(0, "!g[Сервер] !yАдминистратор !g%s !yвыдал игроку !g%s !tАдминку !yна карту.", name, s_Name)
menu_display(id, menu, 0);
}
}
case 1:
{
if(!flags)flags=read_flags("t");
if(get_user_flags(Player) & flags)
{
print_col_chat(id, "!g[Сервер] !yУ игрока !g%s !yуже есть !tVIP.", s_Name)
}
else
{
set_user_flags(Player,flagsvip);
print_col_chat(0, "!g[Сервер] !yАдминистратор !g%s !yвыдал игроку !g%s !tVIP !yна карту.", name, s_Name)
menu_display(id, menu, 0);
}
}
case 2:
{
if(!flags)flags=read_flags("n");
if(get_user_flags(Player) & flags)
{
print_col_chat(id, "!g[Сервер] !yУ игрока !g%s !yуже есть !tВампиризм.", s_Name)
}
else
{
set_user_flags(Player,flagsvampir);
print_col_chat(0, "!g[Сервер] !yАдминистратор !g%s !yвыдал игроку !g%s !tВампиризм !yна карту.", name, s_Name)
menu_display(id, menu, 0);
}
}
case 3:
{
if(!flags)flags=read_flags("ad");
if(get_user_flags(Player) & flags)
{
print_col_chat(id, "!g[Сервер] !yУ игрока !g%s !yуже есть !tСкин.", s_Name)
}
else
{
set_user_flags(Player,flagsboy);
print_col_chat(0, "!g[Сервер] !yАдминистратор !g%s !yвыдал игроку !g%s !tСкин Парня !yна карту.", name, s_Name)
menu_display(id, menu, 0);
}
}
case 4:
{
if(!flags)flags=read_flags("ad");
if(get_user_flags(Player) & flags)
{
print_col_chat(id, "!g[Сервер] !yУ игрока !g%s !yуже есть !tСкин.", s_Name)
}
else
{
set_user_flags(Player,flagsgirl);
print_col_chat(0, "!g[Сервер] !yАдминистратор !g%s !yвыдал игроку !g%s !tСкин Девушки !yна карту.", name, s_Name)
menu_display(id, menu, 0);
}
}
case 5:
{
static flags=0;
if(!flags)flags=read_flags("adqf");
if(get_user_flags(Player) & flags)
{
print_col_chat(id, "!g[Сервер] !yНельзя забрать у !g%s !yпривилегию.", s_Name)
}
else
{
remove_user_flags(Player, read_flags("cmnrtous"));
set_user_flags(Player,flagsnone);
print_col_chat(0, "!g[Сервер] !yАдминистратор !g%s !yзабрал у !g%s !yпривилегию.", name, s_Name)
menu_display(id, menu, 0);
}
}
}
return PLUGIN_CONTINUE
}
stock print_col_chat(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!t", "^3") // Team Color
if (id)
players[0] = id
else
get_players(players, count, "ch")
{
for ( new i = 0; i < count; i++ )
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i])
write_string(msg)
message_end()
}
}
}
}