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

Древо Талантов

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

Оффлайн qofma

  • 81
  • Мощь: 0
Древо Талантов
« : 31-12-2016, 09:24:46 »
Где найти сие чудо и есть ли у древа настройки ?А то допустим мне нужно 4 таланта на выбор ,а не 2 или уровень прокачки талантов поменять
Моя кастомная карта:Shadow Fiend Wars

Оффлайн ZLOY

  • Супермодератор
  • 396
  • Мощь: 5
Re: Древо Талантов
« Ответ #1 : 31-12-2016, 13:52:26 »
Стандартное искореняешь, свое пишешь
Со стандартным - максимум заменить абилки на свои

Оффлайн Adam Smith

  • Друзья CG
  • 476
  • Мощь: 6
  • жрять жри его
Re: Древо Талантов
« Ответ #2 : 31-12-2016, 14:35:38 »
Код
if Talents == nil then
Talents = {}
Talents.__index = Talents
end

function Talents:HasTalent(hero, talentName)
    if hero:HasAbility(talentName) then
        if hero:FindAbilityByName(talentName):GetLevel() > 0 then return true end
    end
    return false
end
function Talents:FindTalentValue(hero, talentName)
    if hero:HasAbility(talentName) then
        return hero:FindAbilityByName(talentName):GetSpecialValueFor("value")
    end
    return nil
end

function Talents:GetTalentSpecialValueFor(ability, value)
    local base = ability:GetSpecialValueFor(value)
    local talentName
    local kv = ability:GetAbilityKeyValues()
    for k,v in pairs(kv) do -- trawl through keyvalues
        if k == "AbilitySpecial" then
            for l,m in pairs(v) do
                if m[value] then
                    talentName = m["LinkedSpecialBonus"]
                end
            end
        end
    end
    if talentName then
        local talent = ability:GetCaster():FindAbilityByName(talentName)
        if talent and talent:GetLevel() > 0 then base = base + talent:GetSpecialValueFor("value") end
    end
    return base
end

Код
if Talents:HasTalent(self:GetCaster(), "special_bonus_unique_tzeench") then
        local value = Talents:FindTalentValue(self:GetCaster(), "special_bonus_unique_tzeench")
        self.mana_dmg = self:GetCaster():GetMana()*((self:GetSpecialValueFor("mana_pool_ptc") + value)/100)
    end
By PG.Freeman

Оффлайн MahouShoujo

  • Продвинутый
  • 194
  • Мощь: 3
Re: Древо Талантов
« Ответ #3 : 01-01-2017, 18:37:32 »

Re: Древо Талантов
« Ответ #4 : 17-03-2017, 05:31:09 »
Код
if Talents == nil then
Talents = {}
Talents.__index = Talents
end

function Talents:HasTalent(hero, talentName)
    if hero:HasAbility(talentName) then
        if hero:FindAbilityByName(talentName):GetLevel() > 0 then return true end
    end
    return false
end
function Talents:FindTalentValue(hero, talentName)
    if hero:HasAbility(talentName) then
        return hero:FindAbilityByName(talentName):GetSpecialValueFor("value")
    end
    return nil
end

function Talents:GetTalentSpecialValueFor(ability, value)
    local base = ability:GetSpecialValueFor(value)
    local talentName
    local kv = ability:GetAbilityKeyValues()
    for k,v in pairs(kv) do -- trawl through keyvalues
        if k == "AbilitySpecial" then
            for l,m in pairs(v) do
                if m[value] then
                    talentName = m["LinkedSpecialBonus"]
                end
            end
        end
    end
    if talentName then
        local talent = ability:GetCaster():FindAbilityByName(talentName)
        if talent and talent:GetLevel() > 0 then base = base + talent:GetSpecialValueFor("value") end
    end
    return base
end

А куда этот код писать, чтобы всегда можно было обратиться к Talents?