Можно сделать вот как. У нас есть метод ITEM:SetItems(tItems)
, который наделяет предмет одним свойством – при активации предмета с таким методом, активировавший игрок получит в инвентарь перечисленные в tItems
предметы
Теория
Задумывался этот метод для упаковки в один предмет нескольких других. Например, создавался предмет “3 аптечки” с :SetItems({HEAL, HEAL, HEAL})
. HEAL это другой предмет, который устанавливает игроку условные 100 ХП. При активации базового предмета, игрок получал 3 предмета-аптечки в инвентарь
Что касается кулдауна, то можно реализовать через ITEM:SetCanActivate()
. Ниже привожу пример предмета, который выдаст 3 аптечки и которые можно будет активировать раз в 60 секунд
Пример
local HEAL = IGS("Аптечка", "heal", 0)
:SetStackable() -- разрешаем многоразовую активацию
:SetHidden() -- скрываем отображение в /donate меню, чтобы нельзя было купить просто так
:SetOnActivate(function(pl)
pl:SetHealth(100)
pl.igs_last_heal = os.time()
pl:ChatPrint("Вы исцелились!")
end)
:SetCanActivate(function(pl)
local since_prev_activation = os.time() - (pl.igs_last_heal or 0)
local need_wait = 60 - since_prev_activation
if need_wait > 0 then
return "Можно будет активировать через " .. need_wait .. " сек"
end
end)
IGS("3 аптечки", "heal_x3", 50) -- 50 rub
:SetStackable()
:SetItems({HEAL, HEAL, HEAL}) -- упаковываем в этот предмет 3 аптечки, которые игрок получит после активации этого предмета
:SetDescription("Купите и получите 3 аптечки в донат инвентарь. Хиляться можно раз в минуту")