Physgun Wiki

GM:OnPlayerBecomeJob

 GM:OnPlayerBecomeJob( Player ply, table job, table oldJob )

Вызывается из PLAYER:SetJob до смены профессии. Реализация по умолчанию сначала спрашивает job:CanJoin(ply) (метод самой профессии, объявляется в файле jobs/*.lua); если тот вернул nil, проверяет свободные места по JOB.MaxPlayers, считая игроков той же профессии напрямую (не через team.NumPlayers, так как несколько профессий могут делить одну команду):

function GM:OnPlayerBecomeJob(ply, job, oldJob) local allow = job:CanJoin(ply) if allow != nil then return allow end if (job.MaxPlayers >= 0) then local count = 0 for _, other in ipairs(player.GetAll()) do if (player_manager.GetPlayerClass(other) == job.ID) then count = count + 1 end end if (count >= job.MaxPlayers) then return false end end return true end

Аргументы

1 Player ply
Игрок, меняющий профессию.
2 table job
Профессия, на которую переходит игрок.
3 table oldJob
Текущая профессия игрока.

Возвращает

1 boolean
Разрешить ли смену. false: отмена.