Random Skills

  • Официальное уведомление администрации CustomGames.RU
    В связи с масштабным техническим сбоем в инфраструктуре прежнего хостинг-провайдера (Beget), работа форума CustomGames.RU была оперативно перенесена на новую серверную площадку и развёрнута из резервной копии базы данных.

    • Безопасность данных: учётные записи и данные пользователей находятся в полной безопасности. Все пароли и защищаемые параметры хранятся исключительно в криптографически зашифрованном (хэшированном) виде — никаких критических инцидентов для аккаунтов пользователей не произошло.
    • Временные технические ограничения: на этапе синхронизации файлового хранилища часть статических материалов (пользовательские аватары и архивные вложения) временно недоступна. По мере получения доступа к файловым архивам все материалы будут восстановлены в полном объёме.
Как правильно сделать предмет который будет исчезать, а затем выдавать тебе рандомный скилл из списка.

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

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
Реклама: