Задумались о праздничных скидках в целях привлечения новых доноров?
Не спешите, у меня есть более крутое решение.
Работает по аналогии скидок, но кэшбэк стимулирует игроков пополнять баланс на большие суммы.
Пример:
- Игрок видит плашку уведомляющую о мгновенном 25% кэшбэке до 7 января и хочет купить VIP на месяц. Стоимость привилегии 250 рублей, игрок пополняет баланс на 250 рублей, покупает привилегию и получает VIP и +50 рублей обратно на баланс.
В чём фишка: что-бы купить VIP за 200 рублей нужно пополнить баланс на 250 рублей, 50 рублей вернуться игроку на баланс.
Тем самым игрок получит приятную для себя скидку, на его балансе останутся мозолящие глаза 50 рублей (которые он вскоре захочет потратить и опять пополнит баланс), а вы получите дополнительные 50 рублей которые могли не получить в случае использования обычных скидок, все участники сделки в профите
- Что-бы установить кэшбэк для всех предметов изменяйте переменную
DefaultCaschback
- Что-бы установить кэшбэк определённому предмету используйте ITEM метод :SetCashback
Мгновенный кэшбэк - простенький вариант, можно использовать во время праздников.
local DefaultCaschback = 0.2 -- 0 = отключить стандартный кэшбэк, 0.2 = 20%, 0.5 = 50%
hook.Add("IGS.PlayerPurchasedItem", "Cashback https://forum.gm-donate.net/t/keshbek/963", function(ply, item, id)
if item.cashback_disable or DefaultCaschback <= 0 or item.cashback == 0 then return end
local summ = math.floor(item.price * (item.cashback or DefaultCaschback))
ply:AddIGSFunds(summ, "Cashback ".. summ .." - ".. (item.cashback or DefaultCaschback) * 100 .."%")
IGS.Notify(ply, "Спасибо за покупку! Вы получили +".. PL_MONEY(summ) .." кэшбэка!")
end)
local ITEM = FindMetaTable("IGSItem")
function ITEM:DisableCashback(bool)
self.cashback_disable = bool ~= false and true or nil
return self
end
function ITEM:SetCashback(precent)
self.cashback = precent
return self
end
- Путь: garrysmod/lua/autorun/gmd_cashback.lua
Кэшбэк раз в месяц - рекомендую использовать на постоянку, это добавит разнообразия к банальным скидкам и даст вам немного дополнительного $ профита $
local DefaultCaschback = 0 -- 0 = отключить стандартный кэшбэк, 0.2 = 20%, 0.5 = 50%
hook.Add("IGS.PlayerPurchasedItem", "Cashback https://forum.gm-donate.net/t/keshbek/963", function(ply, item, id)
if item.cashback_disable or DefaultCaschback <= 0 or item.cashback == 0 then return end
local path = "gmdcashback/".. os.date("*t").month
file.CreateDir(path)
path = path .."/".. ply:SteamID64() ..".txt"
local prev = 0
if file.Exists(path, "DATA") then
prev = tonumber(file.Read(path, "DATA"))
end
local summ = math.floor(item.price * (item.cashback or DefaultCaschback))
file.Write(path, prev + summ)
ply:ChatPrint("Спасибо за покупку! В следующем месяце вы получите +".. summ .."₽ кэшбэка!")
end)
local ITEM = FindMetaTable("IGSItem")
function ITEM:DisableCashback(bool)
self.cashback_disable = bool ~= false and true or nil
return self
end
function ITEM:SetCashback(precent)
self.cashback = precent
return self
end
local function Cashback(ply)
local path = "gmdcashback/".. os.date("*t").month - 1 .."/".. ply:SteamID64() ..".txt"
if file.Exists(path, "DATA") then
local summ = tonumber(file.Read(path, "DATA"))
file.Delete(path)
ply:AddIGSFunds(summ, "Monthly Cashback ".. summ)
IGS.Notify(ply, "Вы получили ".. PL_MONEY(summ) .." кэшбэка за траты в прошлом месяце, наслаждайтесь!")
end
end
hook.Add("PlayerFullLoad", "Cashback https://forum.gm-donate.net/t/keshbek/963", Cashback)
local next_ply = 0
timer.Create("Cashback https://forum.gm-donate.net/t/keshbek/963", 60, 0, function() -- 99% серверов перезагружаются как минимум раз в сутки, но это не аксиома
next_ply = next_ply + 1
if next_ply > #player.GetHumans() then
next_ply = 1
end
local ply = player.GetHumans()[next_ply]
if IsValid(ply) then
Cashback(ply)
end
end)
hook.Add("PlayerInitialSpawn", "FullLoadSetup", function(ply)
hook.Add("SetupMove", ply, function(self, ply, _, cmd)
if self == ply and not cmd:IsForced() then
hook.Run("PlayerFullLoad", self)
hook.Remove("SetupMove", self)
end
end)
end)
- Путь: garrysmod/lua/autorun/gmd_cashback.lua
Пример установки кэшбэка определённому предмету:
IGS("VIP на месяц", "vip_na_mesyac")
:SetULXGroup("vip")
:SetPrice(150)
:SetTerm(30) -- 30 дней
:SetCategory("Группы")
:SetDescription("С этой покупкой вы станете офигенными, потому что в ней воооот такая куча крутых возможностей")
:SetCashback(0.3) -- 30%