#if defined _vip_included
  #endinput
#endif
#define _vip_included

#define 	VIP_INTERFACE			"vip_interface005"

enum enSound
{
	pNoSound = 0,
	pSucces = 1,
	pError = 2,
};

/**
 * Записывать события в файл vip.log
 * Сторониий плагин регистрируется именим файла: [vip.smx] ...
 */
native Vip_Log(const String:format[], any:...);

/**
 * Записывать события ошибок в файл vip_error.log
 * Сторониий плагин регистрируется именим файла: [vip.smx] ...
 */
native Vip_ErrorLog(const String:format[], any:...);

/**
 * Проверка игрока на VIP доступ.
 */
native bool:IsClientVip(client);

/**
 * Проверка игрока на доступ к функции "Управления игроками".
 */
native bool:IsClientVipCmds(client);

/**
 * Проверка иммунитета у VIP игрока.
 */
native bool:IsClientVipImmune(client);

/**
 * Глобальный запрос перед проверкой и установки флагов игрока.
 * return true - Разрешить проверку и установки флагов игрока.
 * return false - Игнорировать проверку и установки флагов игрока.
 */
forward bool:Vip_OnUsersLoadFlags(client, const String:authid[]);

/**
 * Глобальный запрос после проверки и установки флагов игрока.
 */
forward Vip_OnUsersLoadFlags_Post(client, const String:authid[], const bool:usersvip, const bool:userscmds, const bool:usersadmin);

/**
 * Установить игроку VIP флаги.
 */
native bool:SetVipUsersFlags(client, const String:flags[]="0a", minutes=60, const String:password[]="", bool:savekvbase=true);

/**
 * Проверка в наличии групп в базе: data/vip/users_groups.ini
 * Пример: isVipUsersGroups("group basic")
 */
native bool:isVipUsersGroups(String:group[]);

/**
 * Установить игроку VIP группу флагов из базы: data/vip/users_groups.ini
 * Пример: SetVipUsersGroups(client, "group basic")
 */
native bool:SetVipUsersGroups(client, const String:group[]="group basic", minutes=60, const String:password[]="", bool:savekvbase=true);

/**
 * Удалить VIP игрока из базы: data/vip/users.ini
 * Пример: VipUsersDelete("STEAM_0:0:11231243")
 * Ответ: true steamid vip удален из базы.
 * Ответ: false Не удалось удалить steamid vip из базы, возможно его в базе нет.
 */
native bool:VipUsersDelete(const String:steamid[]);

/**
 * Узнать, когда истечет время привелегий плагина у VIP игрока в unixtime.
 * Пример: VipUsersGetExpires("STEAM_0:0:11231243")
 * Ответ: -1 Игрока нет в базе.
 * Ответ: 0 Навсегда.
 * Ответ: Другие числа время в unixtime.
 */
native VipUsersGetExpires(const String:steamid[]);

/**
 * Напечатать сообщение игроку в чат с определенным звуков.
 * pNoSound - Без звука.
 * pSucces - Звук по адресу: sound/buttons/weapon_confirm.wav
 * pError - Звук по адресу: sound/buttons/button11.wav
 * Пример: VipPrint(client, pNoSound, "Привет.");
 */
native VipPrint(client, enSound:pNoSound, const String:format[], any:...);

public SharedPlugin:__pl_vip = 
{
	name = VIP_INTERFACE,
	file = "vip.smx",
#if defined REQUIRE_PLUGIN
	required = 1,
#else
	required = 0,
#endif
};

#if !defined REQUIRE_PLUGIN
public __pl_vip_SetNTVOptional()
{
	MarkNativeAsOptional("Vip_Log");
	MarkNativeAsOptional("Vip_ErrorLog");
	MarkNativeAsOptional("IsClientVip");
	MarkNativeAsOptional("IsClientVipCmds");
	MarkNativeAsOptional("IsClientVipImmune");
	MarkNativeAsOptional("SetVipUsersFlags");
	MarkNativeAsOptional("isVipUsersGroups");
	MarkNativeAsOptional("SetVipUsersGroups");
	MarkNativeAsOptional("VipUsersDelete");
	MarkNativeAsOptional("VipUsersGetExpires");
	MarkNativeAsOptional("VipPrint");
}
#endif
