cmsstats_ranks.inc

#if defined _cmsranks_included
  #endinput
#endif
#define _cmsranks_included

/*Структура вызываемых функций*/
enum eFwdHandles
{
	FWD_NEW_LEVEL,	/*При получении игроком нового уровня*/
	FWD_BONUS_MENU	/*При использовании игроком меню бонусов*/
}

/*Структура функций, вызываемых при использовании игроком меню бонусов*/
enum eBonusMenuAction
{
	BONUS_MENU_OPEN,			/*При открытии игроком меню бонусов*/
	BONUS_MENU_ITEM_STATUS,		/*При получении статуса пункта меню*/
	BONUS_MENU_CHOOSE_ITEM,		/*При выборе игроком пункта меню*/
	BONUS_MENU_STATUS_OVERRIDE,	/*Статус код, при котором игнорируются все дальнейшие проверки и выполняется код обработки меню*/
	BONUS_MENU_ITEM_ADD			/*При добавлении пункта меню*/
}

/*Структура стандартных бонусов*/
enum _:eStandartBonusItems
{
	BONUS_MENU_ITEM_MONEY = 1,
	BONUS_MENU_ITEM_AK47,
	BONUS_MENU_ITEM_M4A1,
	BONUS_MENU_ITEM_AWP,
	BONUS_MENU_ITEM_HP
}

/*Структура параметров бонуса*/
enum _:eBonuses
{
	BONUS_ITEM_ID,
	BONUS_NAME[MAX_NAME_LENGTH*2],
	BONUS_MIN_ROUND,
	BONUS_MIN_PLAYERS,
	BONUS_COST,
	BONUS_RESTRICT_LEVEL,	/*С какого уровня возможен доступ к пункту*/
	
	//Нижестоящие проверки не производятся. Ячейки только хранят значение и передаются в массиве.
	BONUS_RESTRICT_ROUND	/*На сколько раундов блокировать после использования пункта*/
}

/* Получить уровень и звание игрока
* @param id			Индекс игрока
* @param szLevel	Массив для записи названия уровня
* @param len		Размер массива
* @return			№ текущего уровня
*/
native cmsranks_get_user_level(id, szLevel[] = "", len = 0)

/* Возвратит общий опыт игрока.
* @param id		Индекс игрока
* @return 		Количество реального опыта +  добавленного опыта
*				(колонка в БД - `cms_xp` + `cms_addxp`)
*/
native cmsranks_get_user_allxp(id)

/* Возвратит реальный опыт игрока(без дополнительного)
* @param id		Индекс игрока
* @return		Количество реального опыта (колонка в БД - `cms_xp`)
*/
native cmsranks_get_user_realxp(id)

/* Получить дополнительный опыт игрока
* @param id		Индекс игрока
* @return		Количество добавленного опыта (колонка в БД - `cms_addxp`)
*/
native cmsranks_get_user_addxp(id)

/* Получить количество бонусов /aNew
* @param id		Индекс игрока
* @return		Количество бонусов /aNew
*/
native cmsranks_get_user_anew(id)

/* Добавить количество бонусов /aNew
* @param id		Индекс игрока
* @param value	Количество бонусов (+ добавить, - отнять)
* @return 		1- при удачном добавлении
*				0- при неудачном
*/
native cmsranks_add_user_anew(id, value)

/* Добавить дополнительный опыт игрока
* @param id		Индекс игрока
* @param value	Количество опыта (+ добавить, - отнять)
* @return		1- при удачном добавлении
*				0- при неудачном
*/
native cmsranks_set_user_addxp(id, value)

/* Получить максимальное количество уровней.
* @return Максимальное количество уровней
*/
native cmsranks_get_maxlevels()

/* Получить название уровня из его номера.
* @param level	Номер уровня
* @param string	Массив для записи названия уровня
* @param len 	Размер массива
* @return		Верхняя граница текущего уровня (ХР)
*/
native cmsranks_get_levelname(level, string[]="", len=0)

/* Получить номер раунда.
* @return	Номер раунда
*/
native cmsranks_get_gameround()

/* Заблокированы ли бонусы на данной карте
* @return	false - если бонусы заблокированы на данной карте
*			true- если доступны
*/
native bool:cmsranks_is_blocked_map()


/* Добавление пункта в меню бонусов
* @param iBonusId			Уникальный номер бонуса (с учетом стандартных, номер должен быть больше 5)
* @param szBonusName		Название бонуса
* @param iBonusCost			Стоимость бонуса (сколько очков anew)
* @param iBonusRound		С какого раунда доступен пункт
* @param iMinPlayers		Минимальное количество игроков на сервере, при котором доступен пункт
* @param iMinLevel			Минимальный уровень (звание) игрока, при котором доступен пункт
* @param iRestRound			На сколько раундов блокировать после использования пункта
*
* @return					Индекс ячейки Array, -1 при неудачном добавлении
*/
native cmsranks_add_bonusmenu_item(iBonusId, szBonusName[], iBonusCost, iBonusRound = 0, iMinPlayers = 0, iMinLevel = 0, iRestRound = 0)

/* Вызывается при получении нового уровня.
* @param id			Индекс игрока
* @param Level		Номер уровня
* @param LevelName	Название уровня
* @noreturn
*/
forward OnCMSRanksNewLevel(id, Level, LevelName[])

/* Вызывается использовании игроком меню бонусов
* @param eBonusMenuAction:iAction	Идентификатор вызванной функции (enum eBonusMenuAction)
* @param iClient					Индекс игрока
* @param iMenu						Индекс меню
* @param iItem						Индекс пункта
* @param aBonusData[]				Массив с параметрами бонуса (eBonuses)
*
* @return	BONUS_MENU_OPEN должен вернуть 1, если меню открывать не нужно
*			BONUS_MENU_ITEM_STATUS должен вернуть Menu and menu item status codes (amxconst.inc) 
*			BONUS_MENU_CHOOSE_ITEM должен вернуть 1, если выбор пунктов запрещен
*			BONUS_MENU_ITEM_ADD должен вернуть 1, если пункт добавлять не нужно
*
* @note	При открытии меню (iAction == BONUS_MENU_OPEN или iAction == BONUS_MENU_ITEM_ADD) параметр iItem равен 0, т.к. меню создано, но не имеет добавленных пунктов
*/
forward OnCMSRanksBonusMenuAction(eBonusMenuAction:iAction, iClient, iMenu, iItem, aBonusData[eBonuses])