- gamecms_present.inc
- Raw
- Functions
- Constants
#if defined _gamecms_present_included
#endinput
#endif
#define _gamecms_present_included
stock const CMS_PRESENTS_CLASSNAME[] = "gamecms_present";
stock const CMS_PRESENTS_MODEL[] = "models/supplybox.mdl";
/*Параметр доступ для поднятия презента*/
enum ePresentsAccess (+=1)
{
ACCESS_GAMECMS = -3, /*разрешено только зарегистрированным на сайте, если есть плагин gamecms_api*/
ACCESS_CT, /*разрешено только контр-террористам*/
ACCESS_TT, /*разрешено только террористам*/
ACCESS_ALL /*разрешено всем*/
}
/*Свойства презента*/
enum _:ePresentsData
{
prIdKey, /*уникальный номер презента*/
prName[MAX_NAME_LENGTH*3], /*название презента*/
prFor, /*параметр доступа ePresentsAccess*/
prMinPlayers, /*мин. количество игроков*/
prCount, /*количество презентов за карту*/
prModel[MAX_NAME_LENGTH], /*название модели*/
prSubModel, /*номер субмодели*/
Float:prTTL /*время "жизни" модели, после которого она будет удалена*/
}
enum _:eTakePresent
{
TP_RESTRICT, //0 - презент запрещено поднимать
TP_GRANTED_STD_MESSAGE_GRANT, //1 - презент будет поднят, будет выведено стандартное сообщение о поднятии презента
TP_GRANTED_STD_MESAGE_RESTRICT, //2 - презент будет поднят, НЕ будет выводиться стандартное сообщение о поднятии презента
TP_RESTRICT_STD_MESSAGE_RESTRICT //3 - презент НЕ будет поднят, НЕ будет выводиться сообщение о поднятии презента
}
/**Добавление презента
*
* @prUnic - уникальный номер презента.
* Имеет сквозную нумерацию, не должен повторяться в других плагинах. Начальный номер - 5.
* @prName- название презента
* @prLimit- количество презентов за карту
* -1 - нет лимита
* -2 - запретить автоматический спавн по таймеру (только для ручного добавления)
* @prAccess- доступ ePresentsAccess
* @prMinPlayers- мин. количество игроков
* @prModel - название модели
* @prSubModel - номер субмодели
* @flTTL - время "жизни" модели, после которого она будет удалена, секунд
* 0.0 - удалится по общим правилам
* -1.0 - не удалять, пока не поднимут презент
* @return - 1- при удачном добавлении
* Пример: CmsAddPresent(5, "+10 здоровья", 5, -3, 0, "health_kit");
*/
native CmsAddPresent(prUnic, prName[], prLimit=0, prAccess=0, prMinPlayers=0, prModel[]="", prSubModel=0, Float:flTTL = 0.0)
/** Получение данных о презенте по его уникальному номеру
*
* @idKey - уникальный номер презента
* @Data - массив с данными о презенте
* Data[0] - доступ ePresentsAccess
* Data[1] - мин. количество игроков для появления презента
* Data[2] - количество (сколько может выпасть таких презентов)
* @Name[] - название презента
* @Len - размер буфера для записи названия
*/
native CmsGetPresentInfoByKey(idKey, Data[3], Name[], Len)
/** Спавн презента по его уникальному номеру
* @idKey Уникальный номер презента (если 0- номер будет выбран рандомно из имеющихся)
* @origin[3] Координаты для спавна презента (если 0.0- авто-определение из возможных точек)
* @noanons Оповещение о появлении презента (true- тихий спавн, false- стандартное оповещение)
* @owner Кому предназначен презент (параметр @prAccess при создании презента)
* @flTime Время жизни презента (секунд до удаления. 0.0 - не удалять)
* @return Индекс созданного объекта
*/
native CmsSpawnPresentById(idKey, Float:origin[]={0.0, 0.0, 0.0}, bool:noanons = false, owner = 0, Float:flTime = 0.0)
/** Удаление презента из игры по параметрам
* @idKey Уникальный номер презента
* @iOwner Владелец презента
* @instant Удалить из базы презентов
* @force Удаление всех выпавших презентов БЕЗ исключения
* @return 1- при успешном удалении из базы
*/
native CmsRemovePresent(idKey = 0, iOwner = 0, bool:instant = false, bool:force = false)
/** Массив с уникальными номерами презентов
* @idKey Уникальный номер презента из ячейки index
* @note idKey = ArrayGetCell(Hahdle:array, index)
* @return Указатель массива
*/
native Array:CmsGetPresentsIndexes()
/** Количество зарегистрированных презентов
* @return Вернет количество ячеек в массиве уникальных номеров
*/
native CmsGetPresentsCount()
/** Количество презентов на карте в данный момент
* @return Количество презентов на карте в данный момент
*/
native CmsGetSpawnedPresentsCount()
/** Получение режима спавна презентов
* @return Параметр режима
* 1- по-умолчанию, включен режим автоматического спавна, доступен ручной спавн
* 2- режим автоматического спавна Выключен, доступен Только ручной спавн
* 3- включен режим автоматического спавна по точкам из файла *map.spawns.cfg, доступен ручной спавн
* 0- отключить спавн презентов (по сути- временная приостановка работы плагина)
*/
native CmsPresentGetSpawnMode()
/** Переключение режима спавна презентов
* @iMode Параметр режима
* 1- по-умолчанию, включен режим автоматического спавна, доступен ручной спавн
* 2- режим автоматического спавна Выключен, доступен Только ручной спавн
* 3- включен режим автоматического спавна по точкам из файла *map.spawns.cfg, доступен ручной спавн
* 0- отключить спавн презентов (по сути- временная приостановка работы плагина)
*/
native CmsPresentSetSpawnMode(iMode)
/** Получение точек спавна презентов из файла
* @iOrigins Массив для записи координат точки спавна
* @return 1- при наличии валидной точки спавна
*/
native CmsGetPresentsOriginsFromFile(Float:flOrigins[3])
/** Вызывается при остановке работы плагина GameCMS_Present (ядро)
*/
forward OnPresentCoreStopped()
/** Вызывается при попытке поднять презент, если он создан с параметром @prAccess- доступ: 0 - всем
* @iClient Индекс игрока, который пытается поднять
* @idKey Уникальный номер презента
* @iEntity Индекс entity презента
* @szMessage Массив для записи сообщения о поднятии презента для дальнейшего вывода игроку
* Используется вместе с кодом возврата TP_GRANT_STD_MESAGE_RESTRICT
*
* @return Вернет код возврата eTakePresent
*/
forward OnTakePresent(iClient, idKey, iEntity, szMessage[MAX_FMT_LENGTH])
/** Вызывается при фактическом поднятии любого презента
* @iClient Индекс игрока, поднявшего презент
* @idKey Уникальный номер презента
* @iEntity Индекс entity презента
* @noreturn
*/
forward OnTakePresentSave(iClient, idKey, iEntity)
/** Вызывается перед спавном презента
* @idKey Уникальный номер презента
* @return Возвращаемые значения:
* 1 - презент не появится, будет вызван спавн следующего презента (если предусмотрено настройкой)
* 0 - презент появится с параметрами, заданными при создании
*/
forward OnValidateSpawnPresent(idKey)
/** Вызывается при фактическом спавне презента на карте
* @idKey Уникальный номер презента
* @iEntity Индекс entity презента
* @noreturn
*/
forward OnSpawnPresent(idKey, iEntity)