Или вот упрощенный вариант без лишнего кода. Можно оставить прямо в sh_additems.lua
IGS("Ивент: x2 ЗП", "event_x2_salary", 100)
:SetDescription("Всем будет начисляться двойная ЗП на протяжении 1 часа!")
:SetStackable()
:SetCanActivate(function()
return SALARY_EVENT_START and "Событие уже активно" or nil
end)
:SetOnActivate(function(pl)
SALARY_EVENT_START = os.time()
IGS.NotifyAll(pl:Name() .. " шиканул и сделал всем двойную ЗП на час!!!")
end)
hook.Add(SERVER and "playerGetSalary" or "", "IGS.DoubleSalaryEvent", function(pl, amount)
if os.time() - (SALARY_EVENT_START or 0) < 3600 then -- со старта ивента прошло меньше часа
-- suppress, message, newAmount
return false, "ЗП удвоена в связи с x2 ивентом!", amount * 2
elseif SALARY_EVENT_START then
SALARY_EVENT_START = nil
end
end)
P.S. Насчет SERVER and 'bla' or ' '
P.S. Кто-то у меня когда-то спрашивал насчет странной конструкции в hook.Add с SERVER and "bla" or "", которую я применил в примере
Конструкция с SERVER and подразумевает, что хоть код исполняется в sh среде, рассчитан он именно для сервера. И даже если бы такой хук был на клиенте, то таким образом мы бы его автоматически отключили (ведь хука “” не существует и код никогда бы не выполнился). Для меня этот вариант более предпочтительный, чем пирамидки вида if SERVER then и дальше hook.Add с отступом
P.P.S. Есть еще ± похожая тема: Увеличенная зарплата для групп и предметов