Будем разбирать для начала разберём этот файл : badmin/lua/ba/core/bans_sv.lua
Как только мы зайдем можем сразу заметить несколько функций :
ba.bans.Sync (Синхронизация с бд определённых элементов)
ba.bans.SyncAll (Синхронизация с бд всего)
ba.bans.Ban (Сам бан)
ba.bans.Unban (Разбан)
ba.bans.UpdateBan (Обновление бана)
ba.bans.CheckPassword (Проверка на наличие бана у игрока (При заходе) )
Нам нужна функция Ban
В ней мы можем заметить эти две строчки
-- pl:Kick(reason)
if (hook.Call('KickOnPlayerBan', ba, pl, reason, ban_len, admin) ~= false) and isplayer(pl) then pl:Kick(reason) end
Они нам и нужны.
В первой строчке мы можем заметить что закомментирован кик игрока при бане, но надо быть внимательней.
Если вы заметите то тут есть интересная проверка на то если хук на кик игрока не вызван то его кикает при бане.
Проверку то можно оставить но pl:Kick(reason) нам нужно заменить на нашу функцию, я исользую setjobonban()
Сейчас мы её и напишем!
Теперь мы заходим в файл : badmin/lua/ba/modules/darkrp/bans/bans_sv.lua
И пишем саму эту функцию, выглядит она так
local function setjobonban(pl)
if isplayer(pl) and IsValid(pl) then
timer.Simple(1, function()
pl:ChangeTeam(TEAM_BANNED, true)
pl:Spawn()
end)
end
end
Так же нам нужно раскомментировать 36 строчку ( pl:ChangeTeam(1, true) )
Она отвечает за смену профессии забаненого на гражданина после разбана.
Казалось бы всё, но не тут то было вернёмся к этому файлу : badmin/lua/ba/core/bans_sv.lua
Тут нам нужно в функции Unban раскомментировать данные строчки :
Они отвечают за таймер который будет чекать профессию забаненого что-бы потом вызвать хук который снимет с него бан и даст профессию гражданина.
Вот и всё!
остаётся только создать саму профессию забаненого и указать ему место спавна.
ВНИМАНИЕ! ID профессии должен быть TEAM_BANNED т.к. указывали мы его.