Наработка позволяет заменить текст по шаблону, используя стандартное описание способности из РО
раскрыть
do
function string.gsuber(data, str)
for k, v in pairs(data) do
str = string.gsub(str, '[' .. k .. ']', v)
str = string.gsub(str, k, v)
end
return str
end
local GetAbilityDescriptionOriginalTable = {}
local GetAbilityNameOriginalTable = {}
function GetAbilityDescriptionOriginal(id,lvl)
if GetAbilityDescriptionOriginalTable[id] == nil then
GetAbilityDescriptionOriginalTable[id] = BlzGetAbilityExtendedTooltip(id,lvl)
end
return GetAbilityDescriptionOriginalTable[id]
end
function GetAbilityNameOriginal(id,lvl)
if GetAbilityNameOriginalTable[id] == nil then
GetAbilityNameOriginalTable[id] = BlzGetAbilityTooltip(id,lvl)
end
return GetAbilityNameOriginalTable[id]
end
function UnitRefreshAbilityTooltip(hero,id)
local lvl=GetUnitAbilityLevel(hero,id)-1
local NativeString=GetAbilityDescriptionOriginal(id,lvl)
local NativeStringName=GetAbilityNameOriginal(id,lvl)
if GetLocalPlayer()==GetOwningPlayer(hero) then
if id==SpellIDQ then -- айди нашего конкретного спела
local dmg="Текст в середине, например число урона от интеллекта, которое необходимо превратить в текст"
NativeString =string.gsub(NativeString,'dmg',dmg)
NativeString=NativeString.."|cff5078f8".."\nТекс добавлен в конце".."|r"
end
end
BlzSetAbilityTooltip(id,NativeStringName,lvl)
BlzSetAbilityExtendedTooltip(id,NativeString,lvl)
end
end
Пример использования и инструкция
- Копируем код себе в карту
- Создаём способность в ро и пишем ярлыки для шаблонов dmg И int
Способность наносит урон от интеллекта, и оглушает цель на 0.1 секунду, за каждый уровень героя
Урон: int
Оглушение: lvl
- Запоминаем ID способности, и на всякий случай занесём в переменную SpellIDQ =FourCC('A000')
- Когда хотим обновлять вызываем, либо после каста способности, либо в периодическом таймере, либо раз в год, в зависимости от надобности, например при подборе предмета, смотря что у нас за динамический текст
ну и разумеется правим чутка ЭТОТ блок кода, чтобы всё работало
if id==SpellIDQ then
local int=GetHeroInt(hero,true)
local lvlH=GetHeroLvl(hero)*.1
NativeString =string.gsub(NativeString,'int',int)
NativeString =string.gsub(NativeString,'lvl',lvlH)
NativeString=NativeString.."|cff5078f8".."\nСпособность имеет динамическое описание".."|r"
end
Если всё правильно, то увидим вот этот текст
Ред. PT153