Как сделать бан в Fadmin в нормальных единицах через чат? Если человек вышел с сервера - забанить его можно только указав время в минутах (что неудобно), хотелось бы сделать бан по типу /ban steamid 1d13h 1.1
Можно ли так сделать?
Установка: gamemode/modules/fadmin/fadmin/playeractions/kickban
Создаём в этой папке файл sv_bannew.lua
И вставляем скрипт ниже
local function ParseTimeToSeconds(timeStr)
local seconds = 0
for num, unit in timeStr:gmatch("(%d+)([dDhHmMyYwW])") do
num = tonumber(num) or 0
if unit:lower() == "s" then
seconds = seconds + num
elseif unit:lower() == "m" then
seconds = seconds + num * 60
elseif unit:lower() == "h" then
seconds = seconds + num * 3600
elseif unit:lower() == "d" then
seconds = seconds + num * 86400
elseif unit:lower() == "w" then
seconds = seconds + num * 604800
elseif unit:lower() == "y" then
seconds = seconds + num * 31536000
end
end
return seconds
end
local function OnPlayerBanCommand(ply, cmd, args)
if not FAdmin.Access.PlayerHasPrivilege(ply, "Ban") then
ply:ChatPrint("Нет прав для использования данной кмд.")
return
end
local targetSteamID = args[1]
local banTimeStr = args[2]
local reason = table.concat(args, " ", 3) -- Объединяем все аргументы после steamid и времени в одну строку - причину бана.
if not targetSteamID or not banTimeStr then
ply:ChatPrint("Пример: /ban <steamid> <время> <причина>")
return
end
local banTimeInSeconds = ParseTimeToSeconds(banTimeStr)
if not banTimeInSeconds then
ply:ChatPrint("Неверный формат времени. Используй формат по типу 1d5h.")
return
end
local endTime = os.time() + banTimeInSeconds
FAdmin.Bans.AddBan(targetSteamID, ply:SteamID(), ply:Nick(), endTime, reason)
ply:ChatPrint("Player with SteamID " .. targetSteamID .. " has been banned for " .. banTimeStr .. " with reason: " .. reason)
end
concommand.Add("ban", OnPlayerBanCommand)
1 лайк
не работает