Погите решить проблему!(Решено)

G_G_Rase

Новичок
29 Ноя 2021
3
0
Суть проста. получить 100 уровень, купить предмет перерождения и с неким шансом получить мега шмотку. Однако не получается из характиристик предмета выташить значение шанса.
Ошибка: Can't call CDOTABaseAbility:GetSpecialValueFor on an object of type [none]



Lua:
if caster:GetLevel() == self:GetSpecialValueFor("lvl") then
        local int = math.floor(caster:GetBaseIntellect())
        local str = math.floor(caster:GetBaseStrength())
        local agi = math.floor(caster:GetBaseAgility())
        local hero = PlayerResource:ReplaceHeroWith(caster:GetPlayerID(),caster:GetName(),0,0)
        hero:SetAbilityPoints(1)
        hero:SetBaseIntellect(int)
        hero:SetBaseAgility(agi)
        hero:SetBaseStrength(str)
       
       
       
        if RollPercentage(self:GetSpecialValueFor("chance")) then
            local item = hero:AddItem(CreateItem("item_megaDamage",hero,hero))
        end
 
Последнее редактирование:

G_G_Rase

Новичок
29 Ноя 2021
3
0
методом тыка выяснил что после выполнение этой строки "local hero = PlayerResource:ReplaceHeroWith(caster:GetPlayerID(),caster:GetName(),0,0)" self просто перестает работать. скажем если до перерождения сделать переменную x и записать значение шанса (x = self:GetSpecialValueFor("chance")) и в условии использовать этот самый x то все заработает как надо. Только мне необходимо чтобы self можно было использовать и дальше.
 

G_G_Rase

Новичок
29 Ноя 2021
3
0
В моем случае self был еще нужен для наложения баффа. Создал служебный предмет и запихал код связанный с баффом туда. После вызвал функцю из служебного предмета и оно заработало.Проблема решена.
 
Реклама: