Альтернативная версия
- Добавлена возможность создавать купоны, которые можно активировать повторно через какое-то время
- Работа с существующей таблицей вместо создания новой в sv.db
Команда удаления всех активаций определенного купона заменена командой сбросой активации конкретного купона для конкретного игрока в связи с переходом на другой тип хранения данных
Установка
- Закинуть код снизу по пути
addons/igs-modification/lua/autorun/server/coupons.lua
- Перезапустить сервер или попробовать выполнить
lua_run include("autorun/server/coupons.lua")
local codes = {
["/kit_daily"] = {10, 86400}, -- 10 руб раз в 24 часа (86400 сек)
["/kit_start"] = {1000}, -- 1000 руб один раз за все время
}
hook.Add("PlayerSay", "babosiki", function(pl, code)
if not codes[code] then return end
local amount, cooldown = unpack(codes[code])
local last_activated = cookie.GetNumber("igs_freemoney:" .. pl:SteamID64() .. ":" .. code)
if last_activated then
if not cooldown then DarkRP.notify(pl, 1, 5, "Ты уже активировал этот промокод") return "" end
local time_ago = os.time() - (last_activated or 0)
if time_ago < cooldown then DarkRP.notify(pl, 1, 5, "Ты сможешь активировать этот промокод через " .. string.NiceTime(cooldown - time_ago)) return "" end
end
cookie.Set("igs_freemoney:" .. pl:SteamID64() .. ":" .. code, os.time())
pl:AddIGSFunds(amount)
DarkRP.notify(pl, 0, 10, "Ты получил " .. string.Comma(amount) .. "р по промокоду!")
return ""
end)
concommand.Add("igs_reset_player_code", function(pl, _, _, argss)
if IsValid(pl) then return end
local steamid, code = argss:match("(STEAM_%d:%d:%d+) (%w+)")
if not (steamid and code) then print("Неверный стимайди или не введен код") return end
cookie.Delete("igs_freemoney:" .. util.SteamIDTo64(steamid) .. ":" .. code)
print("Сбросил активацию промокода для " .. steamid)
end)
Использование
В файле сверху список купонов настройка купонов.
Вместо слеша в начале названия купона можно использовать и другие символы, например убрать слеш совсем, либо заменить например на “!”.
Второе число после названия купона это время, через которое можно повторно использовать купон в секундах. Если его не указать, то купон будет одноразовым.
Есть консольная команда igs_reset_player_code $steamid $code
. Работает только через консоль сервера. Она удаляет информацию про активацию определенного купона на указанном игроке. В теории полезно для тестов, а по факту для тестов лучше просто создать купон с другим названием, а команду просто удалить.