CustomGames.ru - Dota 2 пользовательские игры

GetAbilityTextureName

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Илья

  • Супермодератор
  • 2080
  • Мощь: 20
GetAbilityTextureName
« : 18-06-2017, 21:39:35 »
Есть lua вещь с поведением DOTA_ABILITY_BEHAVIOR_CHANNELLED.

Собственно, чтобы у вещи была иконка используем GetAbilityTextureName(), а вот чтобы у каста была иконка?
Ведь там нужен файл уже не 86x64, a 128x128.

Чет пол часа копался во всевозможных источниках и искал на гитхабе подобное сочетание, но не нашел.

Оффлайн Илья

  • Супермодератор
  • 2080
  • Мощь: 20
Re: GetAbilityTextureName
« Ответ #1 : 18-06-2017, 22:04:01 »
Есть предположение, что все делается там же, только нужно как-то различать, когда отправлять иконку на вещь, а когда иконку на каст.

Оффлайн MahouShoujo

  • Продвинутый
  • 199
  • Мощь: 3
Re: GetAbilityTextureName
« Ответ #2 : 18-06-2017, 22:22:18 »
По-моему нужно просто иконку саму в другой фолдер положить. Типа одна во flash3 а другая в панорама спелликонс, что-то такое.

Оффлайн Илья

  • Супермодератор
  • 2080
  • Мощь: 20
Re: GetAbilityTextureName
« Ответ #3 : 18-06-2017, 22:23:24 »
То есть?
У меня одна лежит в items, другая в spellicons.

Или ты имеешь в виду им названия одинаковые дать?

Оффлайн Илья

  • Супермодератор
  • 2080
  • Мощь: 20
Re: GetAbilityTextureName
« Ответ #4 : 18-06-2017, 22:29:21 »
Либо я настолько сонливый, что не дочитал коммент до конца, либо читал его, когда ты еще не дописал вторую часть про панораму.

Ща поразбираюсь.

Оффлайн Илья

  • Супермодератор
  • 2080
  • Мощь: 20
Re: GetAbilityTextureName
« Ответ #5 : 18-06-2017, 22:52:27 »
Не, пробовал так:

В \dota 2 beta\content\dota_addons\invasion\panorama\images  кинул и items и spellicons, в которых лежат basis_of_turret.png 86х64 и 128х128 соответственно.

И в \dota 2 beta\game\dota_addons\invasion\resource\flash3\images тоже самое.

Результат тот же.

Оффлайн Илья

  • Супермодератор
  • 2080
  • Мощь: 20
Re: GetAbilityTextureName
« Ответ #6 : 18-06-2017, 22:55:14 »
До этого пробовал такую залупу:

Код
function item_basis_of_turret:GetAbilityTextureName()
if self:IsItem() then
  return "td_items/basis_of_turret"
  else
  return "td_ability/ability_repair"
  end
end

Но она тоже не помогает сделать у каста картинку.

Оффлайн Илья

  • Супермодератор
  • 2080
  • Мощь: 20
Re: GetAbilityTextureName
« Ответ #7 : 18-06-2017, 23:07:26 »
Что-то я совсем поплыл, мерещатся руки и ноги у модели, у которой их быть не должно:


Пойду спать. Надеюсь, кто-то знает и отпишет о решении проблемы.

Оффлайн ZLOY

  • Супермодератор
  • 432
  • Мощь: 5
Re: GetAbilityTextureName
« Ответ #8 : 19-06-2017, 06:24:16 »
Код
function item_basis_of_turret:GetAbilityTextureName()
if self:IsItem() then
  return "td_items/basis_of_turret"
  else
  return "td_ability/ability_repair"
  end
end
Если предмет перестал быть предметом, то заменяем иконку. Годный код то.

Оффлайн ZLOY

  • Супермодератор
  • 432
  • Мощь: 5
Re: GetAbilityTextureName
« Ответ #9 : 19-06-2017, 06:42:35 »
Имхо вольво просто не знают что у итемов может быть ченнел, вот и не работает.

Оффлайн Илья

  • Супермодератор
  • 2080
  • Мощь: 20
Re: GetAbilityTextureName
« Ответ #10 : 19-06-2017, 08:58:30 »
Если предмет перестал быть предметом, то заменяем иконку. Годный код то.

Хахах, ну авось  это как-то так работает))

Оффлайн Илья

  • Супермодератор
  • 2080
  • Мощь: 20
Re: GetAbilityTextureName
« Ответ #11 : 19-06-2017, 09:01:43 »
Я думаю, что MahouShoujo в чем-то прав и иконку касту можно как-то прикрутить через панораму.

Оффлайн ZLOY

  • Супермодератор
  • 432
  • Мощь: 5
Re: GetAbilityTextureName
« Ответ #12 : 19-06-2017, 09:04:47 »
Я вижу один вариант - фиксить иконку костылем на js.
Чекать все итемы в инвентаре на ченнел и ставить нужную иконку, а мб есть даже какойто ивент на клиенте.

Оффлайн Илья

  • Супермодератор
  • 2080
  • Мощь: 20
Re: GetAbilityTextureName
« Ответ #13 : 19-06-2017, 09:12:37 »
Ну да, скорее всего так и надо будет делать. Но я пока просто фиг забью.

Оффлайн ZLOY

  • Супермодератор
  • 432
  • Мощь: 5
Re: GetAbilityTextureName
« Ответ #14 : 19-06-2017, 09:46:23 »
Код
    function ChanneledItems()
    {
        var unit = Players.GetLocalPlayerPortraitUnit()
        for (var i = 0; i < 6; i++)
        {
            var item = Entities.GetItemInSlot(unit, i)
            if (item != -1 && Abilities.GetChannelStartTime(item) > 0)
            {
                var texture = Abilities.GetAbilityTextureName(item)
                texture = "file://{images}/items/" + texture + ".png";
                var dotaHud = $.GetContextPanel().GetParent().GetParent().GetParent()
                dotaHud.FindChildTraverse("ChannelBar").FindChildTraverse("BuffIcon").SetImage(texture)
            }
        }
        $.Schedule(0.005,ChanneledItems)
    }
    $.Schedule(0.005,ChanneledItems)