#if defined _cms_skin_manager_included
#endinput
#endif
#define _cms_skin_manager_included
#define SELF_RESET_SKIN '-'
/*Информация о скине (модели)*/
enum _:eSkinEnData
{
skinName[MAX_NAME_LENGTH*2],
skinModelT[MAX_NAME_LENGTH],
skinModelCT[MAX_NAME_LENGTH],
skinAccess[MAX_NAME_LENGTH],
skinModelSkinT,
skinModelSkinCT,
skinSubmodelT,
skinSubmodelCT
}
/*Forwards Handle Types*/
enum _:hMFHandle
{
fwdSkinSelect = 1, /*При выборе скина в меню*/
fwdSetSkin, /*При установке скина игроку*/
fwdOpenMenu /*Перед открытием меню*/
};
/**
* Выполняется при выборе игроком скина в меню
*
* @param iClient Индекс игрока
* @param szSkinName Название скина
* @param bCustomSkin true- если устновлен нестандартный скин
* false - при сбросе скина (установка стандартного скина)
*
* @noreturn
*/
forward OnCMSSkinMenuItemSelection(iClient, szSkinName[], bool:bCustomSkin);
/**
* Выполняется при установке скина игроку
*
* @param iClient Индекс игрока
* @param szSkinName Название скина
* @param post true- после установки скина
* false - перед установкой скина
*
* @return PLUGIN_HANDLED, если требуется заблокировать установку скина.
* PLUGIN_CONTINUE, продолжит установку скина.
*
* @note Параметр szSkinName может быть перезаписан. В этом случае, игроку будет выдан указанный скин.
* Сохраненный в настройках скин не будет изменен.
*/
forward OnCMSSkinSetSkin(iClient, szSkinName[], bool:post);
/**
* Выполняется перед открытием меню скинов
*
* @param iClient Индекс игрока
* @param iMenuId Индекс меню
*
* @return PLUGIN_HANDLED, если требуется заблокировать открытие меню
* PLUGIN_CONTINUE, продолжит открытие меню
*/
forward OnCMSSkinOpenMenu(iClient, iMenuId);
/**
* Проверка, устновлен ли скин игроку
*
* @param iClient Индекс игрока
*
* @return true- если скин устновлен
*/
native bool:CMSSkinIsUserSkinSelected(iClient)
/**
* Получение названия и модели скина, установленного игроку
*
* @param iClient Индекс игрока
* @param szSkinName Массив для записи названия скина
* Если игрок сбросил скины через меню, то szSkinName[0] == SELF_RESET_SKIN
* @param iLenSkinName Размер массива для записи названия скина
* @param szModelName Массив для записи названия модели
* @param iLenModelName Размер массива для записи названия модели
*
* @return 1, если скин установлен, 0 - если скин не выбран
*/
native CMSSkinGetUserSelectedSkin(iClient, szSkinName[], iLenSkinName, szModelName[] = "", iLenModelName = 0)
/**
* Устновка скина игроку
*
* @param iClient Индекс игрока
* @param szSkinName Названия скина, параметр "skinName" в конфиге
* @param bRewrite Перезаписать выбранный игроком скин
* true - перезапишет в настройках выбранный скин. Если у игрока нет доступа к данному скину, настройки скина сбросятся.
* false - будет установлен заданный скин, но в настройках он не будет сохранен.
*
* @return 1 - если скин успешно установлен.
*/
native CMSSkinSetUserSkin(iClient, szSkinName[], bool:bRewrite = true);
/**
* Проверка, имеет ли игрок доступ к скину
*
* @param iClient Индекс игрока
* @param szSkinName Названия скина
*
* @return true- если игрок имеет доступ к скину
*/
native bool:CMSSkinGetUserSkinAccess(iClient, szSkinName[]);
/**
* Показать игроку меню выбора скинов
*
* @param iClient Индекс игрока
*
* @return true- если меню успешно показано
* @note Натив показывает меню принудительно, не вызывая форвард OnCMSSkinOpenMenu(iClient);
*/
native bool:CMSSkinOpenSkinMenu(iClient)
/**
* Проверка, устновлен ли скин игроку
*
* @param iClient Индекс игрока
*
* @return true- если скин устновлен
*/
native Trie:CMSSkinGetSkinDataHandle()