Random Skills

Как правильно сделать предмет который будет исчезать, а затем выдавать тебе рандомный скилл из списка.

Вот пример того как я пытался просто реализовать выдачу скилла и пропажу предмета:

LinkLuaModifier("modifier_item_book_of_ability", "items/testing/item_book_of_ability", LUA_MODIFIER_MOTION_NONE)

item_book_of_ability = class({})

function item_book_of_ability:OnSpellStart()
if not IsServer() then return end
self:GetParent():AddAbility(winter_wyvern_wisdom_flow)
self:GetParent():RemoveItem(item_book_of_ability)
end

modifier_item_book_of_ability = class({})

function modifier_item_book_of_ability:IsHidden() return true end
function modifier_item_book_of_ability:IsDebuff() return false end
function modifier_item_book_of_ability:IsPurgable() return false end
function modifier_item_book_of_ability:GetAttributes() return MODIFIER_ATTRIBUTE_PERMANENT + MODIFIER_ATTRIBUTE_MULTIPLE + MODIFIER_ATTRIBUTE_IGNORE_INVULNERABLE end
Буду рад услышать, что тут не так и как правильно сделать мою задумку.
 
  • Нравится
Реакции: vulkantsk
1) GetParent - это метод который вызывает на модифаере, чтобы узнать на ком он весит в нашем же случае нам надо узнать кастера через GetCaster
2) AddAbility - в скобочках должна быть строка, надо было добавить кавычки AddAbility("winter_wyvern_wisdom_flow")
3) RemoveItem - в аргумент данная функция принимает не класс, а handle .RemoveItem(self)

Код:
item_book_of_ability = class({})

local ability_list = {
    "juggernaut_blade_fury",
    "juggernaut_healing_ward",
    "juggernaut_blade_dance",   
}


function item_book_of_ability:OnSpellStart()
    local caster = self:GetCaster()
    local new_ablity_name = ability_list[RandomInt(1, #ability_list)]
    caster:AddAbility(new_ablity_name)

    caster:RemoveItem(self)
end
 
1) GetParent - это метод который вызывает на модифаере, чтобы узнать на ком он весит в нашем же случае нам надо узнать кастера через GetCaster
2) AddAbility - в скобочках должна быть строка, надо было добавить кавычки AddAbility("winter_wyvern_wisdom_flow")
3) RemoveItem - в аргумент данная функция принимает не класс, а handle .RemoveItem(self)

Код:
item_book_of_ability = class({})

local ability_list = {
    "juggernaut_blade_fury",
    "juggernaut_healing_ward",
    "juggernaut_blade_dance",  
}


function item_book_of_ability:OnSpellStart()
    local caster = self:GetCaster()
    local new_ablity_name = ability_list[RandomInt(1, #ability_list)]
    caster:AddAbility(new_ablity_name)

    caster:RemoveItem(self)
end
Я и забыл про GetCaster, благодарю. А то перерыв делал.
 
  • Нравится
Реакции: vulkantsk
Реклама: