Возвращает информацию о бафе. В качестве аргумента может принимать как id экземпляра бафа, так и ресурса (BuffId) бафа.
Набор информации для ресурса бафа является подмножеством набора информации для экземпляра бафа.
-- система:
UIState/GameState
-- библиотека:
object
-- объявление:
function GetBuffInfo( Id )
-- параметры:
Id: ObjectId or BuffId - Идентификатор экземпляра (должен быть валидным) или ресурса буфа
includeResourceInfo: boolean or nil - Включать ли информацию о ресурсе бафа при получении информации о экземпляре бафа. По умолчанию true
-- возвращаемые значения: table or nil (только при ошибке), поля:
-- Доступны как для ресурса, так и для экземпляра бафа
buffId: BuffId - Id ресурса буфа
name: WString - имя буфа
sysName: string - внутреннее имя буфа (может быть использовано для специальной обработки), соответствующее поле в базе для буфа - "sysUIScriptName"
texture: UITextureId - идентификатор текстуры для иконки буфа
isStackable: boolean - стекается буф или нет
stackLimit: number (int) - максимальное количество буфов данного типа
isPositive: boolean - true, если баф позитивный
isGradual: boolean - true, если true, то стэки бафа спадают по одному
canDetach: boolean - можно ли скликивать такой баф
isNeedVisualizeDuration: boolean - нужно ли показывать duration
priority: int (ENUM_UIBuffPriority) - приоритет отображения бафа в интерфейсе
groups: table (hash_map<string, true>) - таблица групп бафа. Ключ - системное имя группы, значение - true. Безымянные группы не учитываются.
gainSpells: table[1] of SpellId - список заклинаний, которые усиливает данный баф; таблица индексированная с 1;
-- Доступны как для ресурса, так и для экземпляра бафа, но реализация отличается
isNeedVisualize: boolean - нужно ли показывать этот баф в панели бафов. Если false для ресурса, то false для всех экземпляров. Обратное неверно.
-- Доступны только для экземпляра бафа
id: ObjectId - Id объекта буфа
ownerId: ObjectId or nil - Id объекта, на котором висит буф, если такой объект есть
stackCount: number (int) - может быть количеством одинаковых буфов, уровенем буфа или аналогичной информаций в
durationMs: number (int) - полное время действия буфа
remainingMs: number (int) - время до окончания действия буфа
producer: table - таблица с полями
casterId: ObjectId or nil - идентификатор кастера, повесившего баф, если его можно получить
spellId: SpellId or nil - Id спелла, если баф повесили спеллом.
abilityId: AbilityId or nil - Id абилки, если баф повесили абилкой.
buffId: BuffId or nil - Id буффа, если баф повесили бафом.
mapModifierId: MapModifierId or nil - Id модификатора карты, если баф повесили модификатором карты.
-- Только для DEVELOPER_CLIENT
debugName: string - отладочная информация (путь до файла)
debugGroups: table[1] of string: отладочная информация (путь до файла группы)
-- пример:
function buffManager:OnAddBuff( eventData )
if not self.trackedObjects[ eventData.objectId ] then
return
end
if not self.resourceCache[ eventData.resourceId ] then
self.resourceCache[ eventData.resourceId ] = object.GetBuffInfo( eventData.resourceId )
end
self:AddBuff( eventData.objectId, object.GetBuffInfo( eventData.buffId, false ) )
end
...
function buffManager:GetActiveEventHandlers()
return {
{ self.OnAddBuff, "EVENT_OBJECT_BUFF_ADDED", { isNeedVisualize = true }, { cfilter = true } },
...
}
end