Донат валюта за наигранное время

Мини-скрипт, который будет выдавать вашим игрокам 10 рублей спустя 2 часа игры (настраивается)

Скрипт предназначен для того, чтобы максимально длительный период времени удержать игрока на сервере, а не для выдачи бонуса каждые N часов

local HOUR = 60 * 60

-- Мини-настройки
local REWARD_AFTER = HOUR * 2
local RAWARD_SIZE  = 10 -- размер награды в донат валюте

local function isRewardReceivedToday(uid)
	return os.time() - tonumber(bib.get("igs:last_session_reward_time:" .. uid) or 0) <= (HOUR * 24)
end

local function updateLastRewadTime(uid)
	bib.set("igs:last_session_reward_time:" .. uid, os.time())
end

local function getPlayerSessionTime(pl)
	return pl.initial_spawn_time and os.time() - pl.initial_spawn_time or -1
end

timer.Create("igs.session_reward", 60, 0, function()
	for _,pl in ipairs(player.GetAll()) do
		if getPlayerSessionTime(pl) >= REWARD_AFTER and not isRewardReceivedToday(pl:AccountID()) then
			updateLastRewadTime(pl:AccountID())
			pl:AddIGSFunds(RAWARD_SIZE, "Награда за игру")
			IGS.Notify(pl, "Вы получили бонус за игру!")
		end
	end
end)

hook.Add("PlayerInitialSpawn", "igs.session_reward", function(pl)
	pl.initial_spawn_time = os.time()
end)
Прошлая версия

Telegram: Contact @gmodder

Установка

Создать файл по пути addons/igs-modification/lua/autorun/server/playtimebonus.lua с вышеуказанным кодом

Может заинтересовать:

Упрощенная версия скрипта. Дает награду каждый час (раз в час). Верхний скрипт предназначен для удержания игрока максимально длительное количество времени на сервере, а этот… Для дестабилизации экономики и потери донатов? Тем не менее, может, кому-то пригодится

local HOUR = 60 * 60 -- не менять

-- Мини-настройки
local REWARD_AFTER = HOUR * 1
local RAWARD_SIZE  = 1.5 -- размер награды в донат валюте

timer.Create("igs.session_reward", 60, 0, function()
	for _,pl in ipairs(player.GetAll()) do
		pl.igs_last_reward_time = pl.igs_last_reward_time or os.time()

		if os.time() - pl.igs_last_reward_time >= REWARD_AFTER then
			pl.igs_last_reward_time = os.time()
			pl:AddIGSFunds(RAWARD_SIZE, "Награда за игру")
			IGS.Notify(pl, "Вы получили бонус 1.5 руб за 1 час игры!")
		end
	end
end)