Эта тема скорее пример того, как можно на купоны вешать абсолютно любые действия и делать какое угодно количество активаций, включая бесконечные активации.
- Здесь нет интерфейса
- Настройка производится через код
- Купон в панели GMD не создается
но
- Можно делать бесконечные купоны
- Можно делать купоны для выдачи услуг
- Можно делать купоны на скидку
- Можно запускать внутриигровые ивенты
- И выполнять на купоне вообще любую функцию
-- addons/igs-modification/lua/autorun/server/advcoupons.lua
local coupons = {
["BLOGGER123"] = {
action = function(pl)
-- Выдает 100 валюты
pl:AddIGSFunds(100, "Купон от блоггера")
end,
amount_total = nil, -- бесконечно
},
["KITSTART"] = {
action = function(pl)
-- Активирует действие предмета на игроке и сохраняет в БД
IGS.PlayerActivateItem(pl, "item_uid")
pl:ChatPrint("Вы получили предмет")
end,
amount_total = 100, -- 100 человек может активировать
},
}
hook.Add("IGS.PlayerEnterCoupon", "advanced_coupons", function(pl, code)
if not coupons[code] then return end
local coup = coupons[code]
local activated_times = cookie.GetNumber("igs_advcoup_activations:" .. code, 0)
local activations_left = coup.amount_total and coup.amount_total - activated_times
if coup.amount_total and activations_left <= 0 then
return false, "Этот купон активирован максимальное количество раз"
end
local is_player_activated_this_coupon = cookie.GetString("igs_advcoup_pl:" .. pl:UniqueID() .. ":" .. code, "f")
if is_player_activated_this_coupon == "t" then
return false, "Вы уже активировали этот купон"
end
if coup.amount_total then cookie.Set("igs_advcoup_activations:" .. code, activated_times + 1) end
cookie.Set("igs_advcoup_pl:" .. pl:UniqueID() .. ":" .. code, "t")
coup.action(pl)
end)
Код не тестировался. Напишите, работает ли кто-нибудь