gamecms_achievs.inc

#if defined _gamecms_achievs_included
	#endinput
#endif
#define _gamecms_achievs_included

#if !defined MAX_AUTHID_LENGTH
	const MAX_AUTHID_LENGTH =	64;
#endif
#if !defined MAX_PLAYERS
	const MAX_PLAYERS = 32;
#endif
#if !defined MAX_NAME_LENGTH
	const MAX_NAME_LENGTH =	32;
#endif

#define DUPLICATE_ENTRY	1062
//#define MAX_QUERY_LARGE_LEN 3500
//#define MAX_QUERY_SMALL_LEN 512

#if AMXX_VERSION_NUM == 182
	#define client_disconnected client_disconnect
	#include <colorchat>
	#if !defined MaxClients;
		stock MaxClients;
	#endif
	#define DMG_GRENADE			(1<<24)
#else
	#define client_disconnect client_disconnected
#endif

#define OFFSET_TEAM			114
#define OFFSET_WEAPON		4
#define PDATA_SAFE			2
#define m_iTeam				114
#define m_LastHitGroup		75
#define m_bitsDamageType	76
#define is_valid_player(%1)	(1 <= %1 <= MaxClients)

enum _:eAchievedStatus
{
	AchStatusNone,			//ошибка получения статуса (нет ачивки, нет игрока и т.п.)
	AchStatusInProgress,	//в процессе
	AchStatusCompleted,		//завершено
	AchStatusJustCompleted	//только что завершено
}

/**
*	Получение данных о достижении по его уникальному номеру
*	
*	@idKey		- уникальный номер достижения
*	@RusName[]	- название достижения на русском
*	@nameLen	- размер буфера для записи названия
*	@Avatar[]	- название (имя файла) картинки (аватара)
*	@avaLen 	- размер буфера для записи названия аватара
*	@return		Возвратит количество действий, необходимое для открытия достижения
*/
native CmsGetAchiveInfoByKey(idKey, RusName[], nameLen, Avatar[], avaLen);

/**
*	Активация достижения по его уникальному номеру при загрузке плагина
*	
*	@idKey		- уникальный номер достижения
*	@return		1 - при успешной активации для дальнейших действий с достижением, 0 - ошибка активации
*/
native CmsActivateAchive(idKey);

/**
*	Получение данных о достижении игрока по его уникальному номеру
*	
*	@iClient	- индекс игрока
*	@idKey		- уникальный номер достижения
*	@currValue	- текущее значение (количество действий)
*	@maxValue	- значение, необходимое для открытия достижения (количество действий)
*	@return		Возвратит статус достижения eAchievedStatus
*/
native CmsGetPlayerAchive(plId, idKey, &currValue = 0, &maxValue = 0);

/**
*	Запись текущего действия в общий счетчик действий достижения игрока по его уникальному номеру
*	
*	@iClient		- индекс игрока
*	@idKey			- уникальный номер достижения
*	@addValue		- значение для записи (количество действий). Если значение не указано, будет текущее значение + 1
*	@silentComplete	- true - при открытии достижения не будет оповещений в чат игрокам, false - оповестит всех игроков об открытии достижения
*	@return			Возвратит статус достижения eAchievedStatus
*/
native CmsCheckPlayerAchive(iClient, idKey, addValue = 1, bool:silentComplete = false);	//проверка ачивки

/**
*	Выполняется при открытии игроком очередного достижения
*	
*	@iClient		- индекс игрока
*	@idKey			- уникальный номер достижения
*	@noreturn
*/
forward OnAchievesCompleted(iClient, idKey)

/**
*	Выполняется в процессе выполнения достижения. 
*	Означает выполнение (событие) определенного действия, например, убийства противника.	
*
*	@iClient		- индекс игрока
*	@idKey			- уникальный номер достижения
*	@idKey			- количество добавленных событий
*	@noreturn
*/
forward OnAchievesProgress(iClient, idKey, iVal)