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

Здравствуйте, хочу сделать так что при покупке в донат инвентаре появлялся предмет, после использования на него накладывался кулдаун, а сам он оставался в инвентаре. Возможно ли такое сделать?

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

Позже проверю, заранее спасибо.

Всё хорошо, правда кд слетает после перезахода, как-то можно исправить? Заранее спасибо.

Да, можно. Вот новый пример с некоторыми правками:

local HEAL = IGS("Аптечка", "heal", 0)
	:SetStackable() -- разрешаем многоразовую активацию
	:SetHidden() -- скрываем отображение в /donate меню, чтобы нельзя было купить просто так
	:SetOnActivate(function(pl)
		pl:SetHealth(100)
		pl:ChatPrint("Вы исцелились!")

		cookie.Set("igs_last_heal:" .. pl:AccountID(), os.time())
	end)
	:SetCanActivate(function(pl)
		local last_heal = cookie.GetNumber("igs_last_heal:" .. pl:AccountID(), 0)
		local since_prev_activation = os.time() - last_heal
		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 аптечки в донат инвентарь. Хиляться можно раз в минуту")