#if defined _cmsstats_included
#endinput
#endif
#define _cmsstats_included
#define is_valid_player(%1) (1 <= %1 <= MAX_PLAYERS)
#define OFFSET_CSTEAMS 114
/**Массив основной статистики*/
enum _:MAIN_STATS
{
FRAGS, /*Фраги*/
DEATHS, /* Смерти*/
HEADSHOTS, /* В голову*/
TEAMKILLS, /* Убийства своих*/
SHOTS, /* Выстрелов*/
HITS, /* Попаданий*/
DAMAGE, /* Урон*/
PLACE /* Место в статистике*/
}
/**Массив полной статистики*/
enum _:STATS_ARR_SIZE
{
SUICIDE = MAIN_STATS, /* Самоубийства*/
DEFUSING, /* Начал разминировать бомб*/
DEFUSED, /* Разминировал бомб*/
PLANTED, /* Поставил бомб*/
EXPLODE, /* Взорвал бомб*/
LASTTIME, /* Когда был последний раз (в UNIX времени)*/
GAMETIME, /* Время в игре (в секундах)*/
CONNECTS, /* Сыграл игр*/
ROUNDS, /* Сыграл раундов*/
WINT, /* Выиграл за Т*/
WINCT, /* Выиграл за СТ*/
RESHOSTAGE, /* Спас заложников*/
KILLASSIST, /* Помощь в убийстве*/
KILLSTREAK[2], /*Череда убийств*/
DEATHSTREAK[2], /*Череда смертей*/
Float:SKILL /* Скилл игрока*/
, ID
}
/** Массив дополнительной статистики STATS_ARR_SIZE_EXT*/
#define STATS_ARR_SIZE_EXT PLDATA
enum _:PLDATA
{
Nick[MAX_NAME_LENGTH] = STATS_ARR_SIZE,
AuthId[MAX_AUTHID_LENGTH],
IP[MAX_IP_WITH_PORT_LENGTH],
plStatus /*-1 - новый игрок, 1- существующий, 0- не учитываемый игрок*/
}
enum _:CSDM_STATUS
{
CSDM_STATUS_DISABLED, /*0- если модуль CSDM выключен или режим CSDM не активен.*/
CSDM_STATUS_ENABLED, /*1- если модуль CSDM включен*/
CSDM_STATUS_ENABLED_FFA /*2- если модуль CSDM включен и включен режим FFA.*/
}
/** Создание пункта (идентификатора) дополнительной статистики
* @param szColumnName Название нового столбца в БД статистики
* @return Индекс в массиве дополнительной статистики, -1 в случае неудачи
*
* @note Создается стобец в базе данных статистики типа INT(11)
*/
native cmsstats_create_extra_data(szColumnName[]);
/** Получение значения пункта дополнительной статистики
*
* @param iClient Индекс игрока
* @param iDataIndex Индекс идентификатора дополнительной статистики, полученный при его создании
* @param szColumnName Название идентификатора дополнительной статистики
*
* @return Значение пункта дополнительной статистики
*/
native cmsstats_get_extra_data(iClient, iDataIndex = -1, szColumnName[] = "");
/** Получение данных о дополнительной статистики
*
* @param iSize Размер массива зарегистрированной дополнительной статистики
*
* @return Дескриптор Array:массива дополнительной статистики, Invalid_Array в случае неудачи
*/
native Array:cmsstats_get_extra_data_handle(&iSize);
/** Добавление значения к пункту дополнительной статистики
*
* @param iClient Индекс игрока
* @param iDataIndex Индекс идентификатора дополнительной статистики, полученный при его создании
* @param iValue Целочисленное значение для добавления (убавления, при отрицательном значении)
* @param szColumnName Название идентификатора дополнительной статистики
*
* @return Новое значение пункта дополнительной статистики с учетом добавленного значения
*/
native cmsstats_add_extra_data(iClient, iDataIndex = -1, iValue, szColumnName[] = "");
/** Получить количество записей в статистике
* @return количество записей в статистике
*/
native cmsstats_get_statsnum();
/**
* Аналог функции get_stats из модуля CSX
* Получает статистику игрока по месту в топе
* @note The permanent storage is updated on client disconnect.
* @note For a list of possible body hitplaces see the HIT_* constants in
* amxconst.inc
* @note The fields in the statistics are:
* 0 - Kills
* 1 - Deaths
* 2 - Headshots
* 3 - Teamkills
* 4 - Shots
* 5 - Hits
* 6 - Damage
* 7 - Rank
*
* @param index Rank index
* @param stats Buffer to copy statistics to
* @param bodyhits Buffer to copy body hits to
* @param name Buffer to copy client name to
* @param len Maximum name buffer size
* @param authid Buffer to copy client auth id to
* @param authidlen Maximum authid buffer size
*
* @return Next rank index (> 0 and > index), or 0 if no more
* statistics exist
*/
#pragma deprecated
native cmsstats_get_stats(place, stats[8], bodyhits[8], name[], len, authid[] = "", authidlen = 0);
/** Получает массив статистики игрока по id.
*
* @note Является аналогом натива модуля CSX
* get_user_stats(index,stats[8],bodyhits[8]);
*
* @return Место игрока в статистике
* -2, если игрока нет на сервере
* 0 - если у игрока STEAM_ID_LAN или что то в этом роде
* или игрок не успел загрузить данные из БД
*/
native cmsstats_get_user_stats(id, stats[8],bodyhits[8]);
/** То же, что и cmsstats_get_stats, только по id игрока, находящегося на сервере
* и без получения steamid и ника
* @param index Client index
* @return Место игрока в статистике
* -2, если игрока нет на сервере
* 0 - если у игрока STEAM_ID_LAN или что то в этом роде
* или игрок не успел загрузить данные из БД
*/
native cmsstats_get_user_stats2(index, stats[STATS_ARR_SIZE], len, bodyhits[8]);
/** То же, что и cmsstats_get_user_stats, но вернет основной массив данных
* @param index Client index
* @param session За сессию (true) / за все время (false)
* @return Место игрока в статистике
* -2, если игрока нет на сервере
* 0 - если у игрока STEAM_ID_LAN или что то в этом роде
* или игрок не успел загрузить данные из БД
*/
native cmsstats_get_user_stats3(index, stats[STATS_ARR_SIZE], bool:session=false);
/** Статистика используемого оружия за сессию (от коннекта до выхода игрока)
* @note Является аналогом натива модуля CSX
* get_user_wstats(index, wpnindex, stats[8], bodyhits[8]);
* @param index Client index
* @param wpnindex Weapon index
* @return Если wpnindex > 0, вернет 1, если оружие использовалось, 0- если нет.
* Если wpnindex = 0, вернет количество используемого оружия
*/
native cmsstats_get_user_wstats(index, wpnindex, stats[8], bodyhits[8]);
/** Статистика по каждой жертве за раунд
* @note Является аналогом натива модуля CSX
* get_user_vstats(attacker, victim, stats[8], bodyhits[8], wpnname[]="", len=0);
* @param attacker Client index (attacker)
* @param victim Client index (victim)
* @return Если wpnindex > 0, вернет 1, если оружие использовалось, 0- если нет.
* Если wpnindex = 0, вернет количество используемого оружия
*
* @note Если victim = 0, вернет статистику по всем жертвам
*/
native cmsstats_get_user_vstats(attacker, victim, stats[8], bodyhits[8], wpnname[]="", len=0);
/** Статистика по каждому нападавшему за раунд
* @note Является аналогом натива модуля CSX
* get_user_astats(victim, attacker, stats[8], bodyhits[8], wpnname[]="", len=0);
* @param attacker Client index (attacker)
* @param victim Client index (victim)
* @return Если wpnindex > 0, вернет 1, если оружие использовалось, 0- если нет.
* Если wpnindex = 0, вернет количество используемого оружия
*
* @note Если victim = 0, вернет статистику по всем жертвам
*/
native cmsstats_get_user_astats(victim, attacker, stats[8], bodyhits[8], wpnname[]="", len=0);
/** Получить место игрока в статистике
* @return место игрока в статистике
*/
native cmsstats_get_user_place(id)
/** Добавить/отнять значение в статистике игрока
* @param ident элемент массива полной статистики
* @param value добавляемое значение
* @param save сохранять сделанные изменения в БД минуя фильтры записи
* @return 1 при удачной установке
*/
native cmsstats_add_user_value(id, ident, any:value, bool:save = false)
/** Установка нужного значения в элементе массива полной статистики игрока
* @return 1 при удачной установке
*/
native cmsstats_set_user_value(id, ident, any:value, bool:save = false)
/** Получение значения пункта статистики(ident)
* @return Вернет значение пункта статистики (ident)
*/
native cmsstats_get_user_value(id, ident)
/** Разрешен ли учет и запись статистики для данного игрока
* @param id Индекс игрока
* @return Вернет true, если запись в БД будет произведена.
*/
native bool:cmsstats_is_user_write(id)
/** Установка разрешения на учет и запись статистики для данного игрока
* @param id Индекс игрока
* @param iAllow Разрешение. 1- разрешить, 0- запретить.
* @return Вернет предыдущее значение параметра
* -2, если игрока нет на сервере
*/
native cmsstats_set_user_write(id, iAllow)
/** Проверка режима CSDM
* @return enum CSDM_STATUS
*/
native cmsstats_get_csdm_status()
/** Статистика лучших игроков за раунд
* @param iBestScore
* Значения:
* [0] - best player index
* [1] - kills
* [2] - headshots
* @param iMostDamage
* Значения:
* [0] - best player index
* [1] - damage
* [2] - hits
* @return вернет 1, если есть лучшие игроки за раунд, 0- если нет.
*/
native cmsstats_get_rbest_users(iBestScore[3], iMostDamage[3])
/** Возвратит скилл игрока (ELO)
* @param index Client index
* @param skillname Buffer to copy skillname to
* @param namelen Maximum name buffer size
* @param skill_level Skill level
*
* @return Скилл игрока
*/
native Float:cmsstats_get_user_skill(index, skillname[] = "", namelen = 0, &skill_level = 0);
/** Сброс статистики игроков
*
* @param szType Метод сброса статистики:
* "all" - для сброса всей статистики
* "main" - для сброса основной статистики enum _:MAIN_STATS и enum _:STATS_ARR_SIZE
* "extra" - для сброса дополнительной статистики, зарегистрированной сторонними плагинами
* @param szAuth Authid (STEAM) игрока или "all" для сброса статистики всех игроков
* @return 1- при удачном сбросе, иначе- 0
*
* @note При удачном сбросе вызывает форвард OnCmsStatsResetStats
*/
native cmsstats_reset_user_stats(szType[], const szAuth[]);
/** Возвратит состояние учета статистики
* @return true, если статистика учитывается, false- если нет.
*/
native bool:cmsstats_stats_enable();
/**
* Получение настроек пользователя из базы данных
*
* @param iClient Индекс игрока
* @param sszSettingName Идентификатор настройки (название)
* @param szValue Массив для записи значения настройки
* @param value_length Размер массива для записи значения настройки
*
* @return - размер записанного массива, если передается массив для записи значения
* - цифровое значение настройки, если массив не передан
* - -1, если идентификатор настройки не найден
*/
native cmsstats_get_user_setting(iClient, szSettingName[], szValue[] = "", value_length = 0);
/**
* Сохранение настроек пользователя в базу данных
*
* @param iClient Индекс игрока
* @param sszSettingName Идентификатор настройки (название)
* @param szValue Массив со значением настройки
* @param delete Удалить настройку
*
* @param return true - при успешном изменении (удалении)
false- при неудаче
*/
native bool:cmsstats_set_user_setting(iClient, szSettingName[], szValue[], bool:delete = false);
/** Вызывается, когда плагин подключился к базе
*/
forward OnCmsStatsInitializedPost(Handle:Tuple)
/** Вызывается когда игрок зашел на сервер и получил все данные
* @param exists Не используется
* @param iPlace Место игрока в топе
*/
forward OnCmsStatsPutinserver(id, bool:exists, iPlace)
/** Вызывается при выходе игрока с сервера или обнулении статистики
* @param id индекс игрока
*/
forward OnCmsStatsDisconnect(id)
/** Вызывается при событиях (убийство, установка/ разминирование и т.п.)
* @param ActType тип события:
* @param firstPl киллер (бомбер)
* @param secondPl жертва (дефузер)
* @param wpnId индекс оружия киллера
* @param hitPlace место попадания в жертву
* @param kds череда смертей/ убийств
* kds[0] - череда убийств киллера
* kds[1] - череда смертей жертвы
*/
forward OnCmsStatsAction(ActType, firstPl, secondPl, wpnId, hitPlace, kds[])
/** Вызывается при сбросе статистики игрока
* @param id индекс игрока
*/
forward OnCmsStatsResetStats(id)
/** Вызывается, когда плагин по каким-то причинам был остановлен
*/
forward OnCmsStatsStop()
/** Вызывается при смене состояния статистики
* @param bStatsEnable Состояние учета статистики: true- статистика учитывается, false- не учитывается
*/
forward OnCmsStatsSwitchStatus(bool:bStatsEnable)
/** Вызывается при смене позиции игрока в Топе
* @param id Индекс игрока
* @param iOldValue Предыдущая позиция в топе
* @param iNewValue Новая позиция в топе
*/
forward OnCmsStatsUpdateTopPosition(id, iOldValue, iNewValue)
/** Возвратит реальное игровое время, если установлен плагин GameCMS Time Awards
* @note Учитывает время, в течение которого клиент играл за одну из команд
* @param index Client index
*/
//native get_user_time_real(index);