Многоразовое использование предмета в инвентаре

Можно сделать вот как. У нас есть метод 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 аптечки в донат инвентарь. Хиляться можно раз в минуту")