t.me/maj0rblog
-
Автор темы
- #1
Привет, сегодня расскажу как сделать бан профу в админ системе bAdmin которая работает на SUP сборке (Разбираем сборку UnityRP 2019 года).
Для начала разберём как работает система банов.
Файлы системы банов находятся в этих директориях :
badmin/lua/ba/core/bans_sv.lua
badmin/lua/ba/modules/darkrp/bans/bans_sv.lua
badmin/lua/ba/modules/darkrp/bans/bans_sh.lua
Будем разбирать для начала разберём этот файл : 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) нам нужно заменить на нашу функцию, я исользую setjobonban()
Сейчас мы её и напишем!
Теперь мы заходим в файл : badmin/lua/ba/modules/darkrp/bans/bans_sv.lua
И пишем саму эту функцию, выглядит она так
Так же нам нужно раскомментировать 36 строчку ( pl:ChangeTeam(1, true) )
Она отвечает за смену профессии забаненого на гражданина после разбана.
Казалось бы всё, но не тут то было вернёмся к этому файлу : badmin/lua/ba/core/bans_sv.lua
Тут нам нужно в функции Unban раскомментировать данные строчки :
Они отвечают за таймер который будет чекать профессию забаненого что-бы потом вызвать хук который снимет с него бан и даст профессию гражданина.
Вот и всё!
Вам остаётся только создать саму профессию забаненого и указать ему место спавна.
ВНИМАНИЕ! ID профессии должен быть TEAM_BANNED т.к. указывали мы его.
Приятного вам кодинга, и удачного дня!
Спасибо за прочтение
Для начала разберём как работает система банов.
Файлы системы банов находятся в этих директориях :
badmin/lua/ba/core/bans_sv.lua
badmin/lua/ba/modules/darkrp/bans/bans_sv.lua
badmin/lua/ba/modules/darkrp/bans/bans_sh.lua
Будем разбирать для начала разберём этот файл : 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
Она отвечает за смену профессии забаненого на гражданина после разбана.
Казалось бы всё, но не тут то было вернёмся к этому файлу : badmin/lua/ba/core/bans_sv.lua
Тут нам нужно в функции Unban раскомментировать данные строчки :
Они отвечают за таймер который будет чекать профессию забаненого что-бы потом вызвать хук который снимет с него бан и даст профессию гражданина.
Вот и всё!
Вам остаётся только создать саму профессию забаненого и указать ему место спавна.
ВНИМАНИЕ! ID профессии должен быть TEAM_BANNED т.к. указывали мы его.
Приятного вам кодинга, и удачного дня!
Спасибо за прочтение