Мини-скрипт, который будет выдавать вашим игрокам 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)
Упрощенная версия скрипта. Дает награду каждый час (раз в час). Верхний скрипт предназначен для удержания игрока максимально длительное количество времени на сервере, а этот… Для дестабилизации экономики и потери донатов? Тем не менее, может, кому-то пригодится
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)
Есть функция для проверки, подписан ли он на группу вк? Если есть, то скинь. Если нет, то сначала нужно написать скрипт, который проверяет подписку на группу ВК. По поводу написания скриптов на заказ лучше обращаться в раздел “Услуги”
PL_MONEY классная тема
Сообщение в чате чутка изменил вдруг кому нужно
-- Мини-настройки
local HOUR = 60 * 60
local REWARD_AFTER = HOUR * 1
local REWARD_SIZE = 1 -- размер награды в донат валюте
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(REWARD_SIZE, "Награда за игру")
IGS.Notify(pl, "Вы получили бонус " .. PL_MONEY(REWARD_SIZE) .. " за " .. REWARD_AFTER .. " час игры")
end
end
end)
Изменил упрощенный код (добавил выдачу для конкретных групп)
local HOUR = 60 * 60 -- не менять
-- Мини-настройки
local REWARD_AFTER = HOUR * 1
local RAWARD_SIZE = 1.5 -- размер награды в донат валюте
local usergroups = {
['superadmin'] = true,
['admin'] = true,
}
timer.Create("igs.session_reward", 60, 0, function()
for _,pl in ipairs(player.GetAll()) do
if not usergroups[pl:GetUserGroup()] then continue end
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)