Вопрос как сделать бан профу на Umbrella или Vast сборке

Статус
В этой теме нельзя размещать новые ответы.
  • 91
  • 16
Контакты для связи отсутствуют.
хотел бы сделать бан профу на badmin umbrella сборке чтобы при бане человек не вылетал в главное меню а автомат менял профу на забаненый
 
Решение
Будем разбирать для начала разберём этот файл : 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


Они нам и нужны.
В первой строчке мы можем заметить что закомментирован кик игрока при бане, но надо быть внимательней.
Если вы...
  • 397
  • 5
  • 34
Контакты для связи отсутствуют.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Будем разбирать для начала разберём этот файл : 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 раскомментировать данные строчки :

1662827574350.png



Они отвечают за таймер который будет чекать профессию забаненого что-бы потом вызвать хук который снимет с него бан и даст профессию гражданина.

Вот и всё!
остаётся только создать саму профессию забаненого и указать ему место спавна.
ВНИМАНИЕ! ID профессии должен быть TEAM_BANNED т.к. указывали мы его.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу