Пробуй, не тестировал.
Код:
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "Random Give Access"
#define VERSION "1.0"
#define AUTHOR "Stimul"
#define PREFIX "^1[^4Сервер^1]"
#define get_bit(%1,%2) (%1 & (1 << (%2 & 31)))
#define set_bit(%1,%2) (%1 |= (1 << (%2 & 31)))
#define reset_bit(%1,%2) (%1 &= ~(1 << (%2 & 31)))
#if AMXX_VERSION_NUM < 183
#include <colorchat>
#define client_print_color ColorChat
#define print_team_blue BLUE
#endif
#define MAX_CLIENTS 32
new g_iLastID;
new g_bFlags;
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_event("HLTV", "EventNewRound", "a", "1=0", "2=0");
register_logevent("EventEndRound", 2, "1=Round_End");
}
public EventNewRound()
{
new iPlayers[MAX_CLIENTS], iNum;
get_players(iPlayers, iNum, "c");
if(iNum)
{
new id;
while((id = iPlayers[random_num(0, iNum - 1)]) == g_iLastID) {}
g_iLastID = id;
set_user_flags(id, ADMIN_LEVEL_H);
new szName[32];
get_user_name(id, szName, charsmax(szName));
client_print_color(0, print_team_blue, "%s Счастливчик ^3%s ^1получил флаг ^4't'", PREFIX, szName);
}
}
public EventEndRound()
{
new iPlayers[MAX_CLIENTS], iNum;
get_players(iPlayers, iNum, "c");
if(iNum)
{
for(new i; i < iNum; i++)
{
if(get_bit(g_bFlags, iPlayers[i]))
{
remove_user_flags(iPlayers[i], ADMIN_LEVEL_H);
new szName[32];
get_user_name(iPlayers[i], szName, charsmax(szName));
client_print_color(0, print_team_blue, "%s У игрока ^3%s ^1отобран флаг ^4't'", PREFIX, szName);
break;
}
}
}
}
public client_putinserver(id)
get_user_flags(id) & ADMIN_LEVEL_H ? set_bit(g_bFlags, id) : reset_bit(g_bFlags, id);
public client_disconnect(id)
if(get_bit(g_bFlags, id))
remove_user_flags(id, ADMIN_LEVEL_H);
Отредактировал: Stimul1, - 25.5.2015, 20:45