Пользовательские дополнения

На главную


object.GetBuffTooltipInfo( id )

Возвращает информацию о бафе для отображения в тултипе. Является усеченной версией информации о бафе, но добавлено описание бафа. В качестве аргумента может принимать как id экземпляра бафа, так и ресурса (BuffId) бафа.

Набор информации для ресурса бафа является подмножеством набора информации для экземпляра бафа.

-- система:
GameState

-- библиотека:
object

-- объявление:
function GetBuffTooltipInfo( Id )

-- параметры:
Id: ObjectId or BuffId - Идентификатор экземпляра (должен быть валидным) или ресурса буфа

-- возвращаемые значения: table or nil (только при ошибке), поля:

-- Доступны как для  ресурса, так и для экземпляра бафа
name: WString - имя буфа
texture: TextureId - идентификатор текстуры для иконки буфа

-- Доступны как для ресурса, так и для экземпляра бафа, но реализация отличается
description:
  для ресурса бафа WString - описание из ресурса бафа "как есть".  Может сдержать форматные теги без подставленных значениий!
  для экземпляра бафа ValuedText - описание со всеми подставленными значениями.

-- Доступны только для экземпляра бафа
ownerId: ObjectId or nil - Id объекта, на котором висит буф, если такой объект есть
isNeedVisualizeDuration: boolean - нужно ли показывать duration

stackCount: number (int) - может быть количеством одинаковых буфов, уровенем буфа или аналогичной информаций в
durationMs: number (int) - полное время действия буфа
remainingMs: number (int) - время до окончания действия буфа

-- пример:
--------------------------------------------------------------------------------
templates[ TOOLTIP_BUFF ].GetDataFrom = function( self, params )
	local data
	local buffInfo, isResourceBuff

	if apitype( params.buffId ) == "BuffId" then
		buffInfo = object.GetBuffTooltipInfo( params.buffId )
		isResourceBuff = true
	else
		buffInfo = object.IsValidBuff( params.buffId ) and object.GetBuffTooltipInfo( params.buffId )
		params.cachedInfo = buffInfo
		isResourceBuff = false
	end

	local data = {}

	if not buffInfo then
		if params.cachedInfo then
			buffInfo = params.cachedInfo
			data.expired = true
		else
			return
		end
	end

	data.name = GetNameFromInfo( params, buffInfo )
	data.desc = GetDescFromInfo( params, buffInfo )

	if not isResourceBuff and not data.expired then
		data.buffId = params.buffId
		data.objectId = buffInfo.ownerId
		data.initTimeMs = common.GetAbsTimeMs()
		data.remainingMs = buffInfo.isNeedVisualizeDuration and buffInfo.remainingMs > 0 and buffInfo.remainingMs or nil
	end

	return data
end
--------------------------------------------------------------------------------
templates[ TOOLTIP_BUFF ].AssembleContentFrom = function ( self, data )
	local content = {
		{ type = TOOLTIP_CONTENT.SMART_LINE, data.name },
		{ type = TOOLTIP_CONTENT.SMART_LINE, data.desc },
		{ type = TOOLTIP_CONTENT.SMART_LINE, data.remainingMs and
			{
				format = GetAddonText( nil, "BuffDuration" ),
				style = "tip_blue",
				value = GetDurationComplexValuedText( data.remainingMs )
			} or nil,
			updaters = data.remainingMs and {
				{
					func = function( event )
						local elapsedMs = data.initTimeMs and event.timeMs - data.initTimeMs or event.elapsedMs
						data.initTimeMs = nil
						data.remainingMs = data.remainingMs - elapsedMs
						if data.remainingMs > 0 then
							return {
								format = GetAddonText( nil, "BuffDuration" ),
								value = GetDurationComplexValuedText( data.remainingMs ),
								style = "tip_blue"
							}
						else
							return {
								format = GetAddonText( nil, "BuffExpired" ),
								style = "tip_red"
							}
						end
					end,
					event = "EVENT_SECOND_TIMER"
				}
			}
		},
		{ type = TOOLTIP_CONTENT.SMART_LINE, data.expired and { format = GetAddonText( nil, "BuffExpired" ), style = "tip_red" } },
		updaters = data.objectId and {
			{
				func = DefaultUpdaterHandler,
				event = "EVENT_OBJECT_BUFF_CHANGED",
				filter = { objectId = data.objectId, buffId = data.buffId },
				flags = { cfilter = true }
			},
			{
				func = DefaultUpdaterHandler,
				event = "EVENT_OBJECT_BUFF_REMOVED",
				filter = { objectId = data.objectId, buffId = data.buffId },
				flags = { cfilter = true }
			},
		}
	}
	return content
end
--------------------------------------------------------------------------------

Связанные страницы: "CategoryLuaApi" "CategoryBuff"

BuffId
CategoryBuff
EnumDiminishingGroup
EnumUIBuffPriority
EventAvatarBuffRemovingFailed
EventGuildBuffAdded
EventGuildBuffsChanged
EventObjectBuffAdded
EventObjectBuffChanged
EventObjectBuffProgressAdded
EventObjectBuffProgressChanged
EventObjectBuffProgressRemoved
EventObjectBuffRemoved
EventObjectBuffsChanged
EventObjectBuffsElementChanged
EventObjectDiminishingChanged
EventObjectDiminishingGroupChanged
FunctionGuildGetBuffs
FunctionObjectGetBuffBySysName
FunctionObjectGetBuffCount
FunctionObjectGetBuffDynamicInfo
FunctionObjectGetBuffInfo
FunctionObjectGetBuffInstances
FunctionObjectGetBuffRanks
FunctionObjectGetBuffs
FunctionObjectGetBuffsInfo
FunctionObjectGetBuffsWithProperties
FunctionObjectGetBuffSysName
FunctionObjectGetBuffTooltipInfo
FunctionObjectGetDiminishingState
FunctionObjectHasBuffManager
FunctionObjectIsValidBuff
FunctionObjectRemoveBuff


CategoryLuaApi CategoryFunction CategoryObject CategoryBuff

На главную