#if defined _wS_admin_included
	#endinput
#endif
#define _wS_admin_included

enum AdminCategory
{
	AC_PlayerManagement,		/* Управление Игроками			*/
	AC_OtherCommands,			/* Разные Функции				*/
	AC_TeleportCommands,		/* Телепорт						*/
	AC_WeaponManagement			/* Оружие						*/
};

enum AdminAction
{
	AA_Slay,					/* Убить						*/
	AA_Respawn,					/* Возродить					*/
	AA_Noclip,					/* Noclip						*/
	AA_Fly,						/* Полёт						*/
	AA_Freeze,					/* Заморозить					*/
	AA_Burn,					/* Поджечь						*/
	AA_God,						/* Бессмертие					*/
	AA_MuteChat,				/* Мут чата						*/
	AA_MuteMicrophone,			/* Мут микрофона				*/
	AA_Slap,					/* Шлёпнуть						*/
	AA_ChangeTeam,				/* Сменить команду				*/
	AA_MoveToSpec,				/* Переместить в SPEC			*/
	AA_Kick,					/* Кикнуть						*/
	AA_Shake,					/* Встрясти экран				*/
	AA_Drug,					/* Наркотик						*/
	AA_WatchForPlayer,			/* Наблюдать за игроком			*/
	AA_RemoveAllWeapons,		/* Удалить всё оружие			*/
	AA_RemoveGroundWeapons,		/* Удалить оружие с земли		*/
	AA_RemovePlayerWeapons,		/* Забрать оружие у игроков		*/
	AA_RemoveWeaponsByName,		/* Удалить определённое оружие	*/
	AA_CreateWeapon,			/* Создать оружие				*/
	AA_GiveWeapon,				/* Выдать оружие				*/
	AA_CreateHostage,			/* Создать заложника			*/
	AA_EntityKill,				/* Удалить объект				*/
	AA_EntityInfo,				/* Информация об объекте		*/
	AA_ForceRoundEnd,			/* Завершить раунд				*/
	AA_HealthKit,				/* Создать аптечку				*/
	AA_AdminList,				/* Список онлайн админов		*/
	AA_BuyZoneToggle,			/* Покупка оружия +/-			*/
	AA_TeleportAim,				/* Телепорт (aim)				*/
	AA_TeleportSavePos,			/* Сохранить позицию (телепорт)	*/
	AA_TeleportToPos,			/* Телепорт на позицию			*/
	AA_TeleportToPlayer,		/* Телепорт к игроку			*/
	AA_TeleportToSpawn,			/* Телепорт на базу (респ)		*/
	AA_ChangeLevel,				/* Сменить карту				*/
	AA_HostageRescueToggle,		/* Спасение заложников +/-		*/
	AA_BombZoneToggle,			/* Установка бомбы +/-			*/
	AA_SetPlayerModel,			/* Установить скин игроку		*/
	AA_SetPlayerColor,			/* Установить цвет игроку		*/
	AA_CreateProp,				/* Создать предмет				*/
	AA_PlayersInfo,				/* Информация об игроках		*/
	AA_RemovePlantedC4,			/* Удалить установленную бомбу	*/
	AA_ChangeSpeed,				/* Изменить скорость			*/
	AA_ChangeHP,				/* Изменить HP при рождении		*/
	AA_ChangeGravity,			/* Изменить гравитацию			*/
	AA_CreateLaser,				/* Создать лазер				*/
	AA_ChangeEntityColor		/* Изменить объекту цвет		*/
};

/*
**	АДМИН ВОШЁЛ НА СЕРВЕР И ВОТ-ВОТ ПОЛУЧИТ ДОСТУП К AdMiN МЕНЮ (если у него есть нужные флаги - admin_menu.txt)
**
**	admin						- индекс игрока
**	steamid						- стим
**	flags						- флаги доступа (GetUserFlagBits)
**
**	return:
**	Plugin_Continue				- дать AdMiN доступ в зависимости от флагов админа
**	Plugin_Stop					- не давать доступ к AdMiN меню
*/
forward Action:Event_AdminMenuMustBeCreated(admin, const String:steamid[], flags);

/*
**	АДМИН ХОЧЕТ ВЫПОЛНИТЬ ДЕЙСТВИЕ
**
**	admin						- индекс игрока
**	category					- последняя выбранная категория
**	action						- действие
**
**	return:
**	Plugin_Continue				- разрешить выполнить действие
**	Plugin_Stop					- запретить
**	Plugin_Handled				- запретить и удалить эту функцию из админки (она вернется после перезахода игрока на сервер)
*/
forward Action:Event_AdminAction(admin, AdminCategory:category, AdminAction:action);

/*
**	АДМИН ЛИШИЛСЯ ПРАВ (ВРЕМЯ ИСТЕКЛО -> admin_add)
**
**	admin						- индекс админа (если < 1, то его нет на сервере)
**	steamid						- стим админа (верный всегда)
*/
forward Event_AdminLostAccess(admin, const String:steamid[]);


/////


// Проверить, является ли игрок админом
native bool:AdMiN_HaveAccess(client);

// Проверить, есть ли у игрока доступ к админ-категории
native bool:AdMiN_HaveAccessToCategory(client, AdminCategory:category);

// Проверить, есть ли у игрока доступ к админ-действию
native bool:AdMiN_HaveAccessToAction(client, AdminAction:action);
