#include <amxmodx>
#tryinclude <reapi>
#if !defined _reapi_included
#include <hamsandwich>
#endif
#define YOUR_STATS_SYSTEM 1
// Игровая статистика, установленная на Вашем сервере
// 0 - CSX
// 1 - CSSTATS MYSQL by SKAJIbnEJIb
// 2 - CSSTATSX SQL by serfreeman1337
#define MAX_TOP_POSITION 5
// Сколько первых человек из статистики получат флаги из SET_FLAGS
#define SET_FLAGS ADMIN_LEVEL_H
// Выдаваемые флаги доступа
#define IGNORED_FLAGS (ADMIN_MENU|ADMIN_LEVEL_H)
// Флаги, с которыми не выдавать флаги
#if YOUR_STATS_SYSTEM == 0
#include <csstats>
#endif
#if YOUR_STATS_SYSTEM == 1
#include <csstats_mysql>
#endif
#if YOUR_STATS_SYSTEM == 2
#include <csstatsx_sql>
#endif
new bool:g_bSetFlags[33];
public plugin_init()
{
register_plugin("Top Awards", "1.0", "neygomon");
#if defined _reapi_included
RegisterHookChain(RG_CBasePlayer_Spawn, "CBasePlayer_Spawn_Post", true);
#else
RegisterHam(Ham_Spawn, "player", "CBasePlayer_Spawn_Post", true);
#endif
}
public client_putinserver(id)
g_bSetFlags[id] = false;
public CBasePlayer_Spawn_Post(const id)
{
if(!is_user_connected(id))
return;
if(!is_user_allowed(id))
{
if(g_bSetFlags[id])
{
set_user_flags(id, get_user_flags(id) & ~SET_FLAGS);
client_print(id, print_chat, "Вы вылетели из TOP %d сервера. Привилегии удалены :(", MAX_TOP_POSITION);
g_bSetFlags[id] = false;
}
}
else
{
set_user_flags(id, get_user_flags(id) | SET_FLAGS);
client_print(id, print_chat, "Вы попали в TOP %d сервера. Привилегии успешно активированы :)", MAX_TOP_POSITION);
g_bSetFlags[id] = true;
}
}
bool:is_user_allowed(id)
{
if(get_user_flags(id) & IGNORED_FLAGS)
return false;
new myRank = 0;
new bool:bAllowed = false;
new players[32], pnum;
get_players(players, pnum);
#if YOUR_STATS_SYSTEM == 0 || YOUR_STATS_SYSTEM == 2
new st[8], bh[HIT_RIGHTLEG + 1];
#endif
#if YOUR_STATS_SYSTEM == 1
new st[22];
#endif
for(new i, pos; i < pnum; ++i)
{
#if YOUR_STATS_SYSTEM == 0
pos = get_user_stats(id, st, bh);
#endif
#if YOUR_STATS_SYSTEM == 1
pos = csstats_get_user_stats(id, st);
#endif
#if YOUR_STATS_SYSTEM == 2
pos = get_user_stats_sql(id, st, bh);
#endif
if(players[i] == id)
myRank = pos;
else
{
if(0 < pos <= MAX_TOP_POSITION)
{
if(get_user_flags(players[i]) & SET_FLAGS)
{
bAllowed = true;
break;
}
}
}
}
if(bAllowed && myRank == MAX_TOP_POSITION + 1)
return true;
else if(0 < myRank <= MAX_TOP_POSITION)
return true;
return false;
}