Помощь по бессмертности для игрока

Ку, ребят, есть вопрос, хотел дать бессмертие админу когда он заходит на профу, и неприкосновенность для мэра первые 5 минут на его профе. Все вроде бы нормально, но метод который я использовал не работает

ply:GodEnable()

Может я делаю что то не так? Вот код для неприкосновенности мэра (лежит отдельным файлом в addons/drpmodification/lua/autorun/server):

local team = TEAM_MAYOR     
local timed = 300            

hook.Add("PlayerSpawn", "mayorgod", function(ply)

   if ply:Team() == team then
   DarkRP.notify( ply, 1, 4, "Так как вы только стали Мэром" )
   DarkRP.notify( ply, 1, 4, "Вы получили бессмертие на ".. timed .." секунд!" )
   ply:GodEnable()
   end
  
   timer.Simple( timed, function()
   DarkRP.notify( ply, 1, 4, "Вы снова смертны." )
   ply:GodDisable()
   end )
end)

Это весь код? Если он лежит в обычном аддоне, то в тот момент, когда он запускается TEAM_MAYOR еще не определена (равна nil). Это связано с тем, что игровой режим загружается после загрузки аддонов. Решить эту проблему можно несколькими способами:

  1. Обернуть весь этот код в хук Think или Initialize или PostGamemodeLoaded или прочие. Код будет выглядеть примерно так:
hook.Add('Think', 'mayorgodload', function()
    -- Если используешь хук Think, то не забудь удалить хук, ведь он вызывается постоянно
    hook.Remove('Think', 'mayorgodload')
    -- Твой код
    ...
end
  1. Не использовать переменную team, а напрямую проверяй профессию в коде хука. Это сработает потому что хук будет вызываться намного позже загрузки гейммода
   ...
   if ply:Team() == TEAM_MAYOR then
   ...
  1. Используй darkrp_modules
1 лайк