Вечный бан

Хотел бы сделать команду perma, которая будет работать как обычный бан, только без конца времени бана.
При бане человека выкидывает с сервера и в причине пишет:

Вы на всегда забанены навсегда

-------------------------------------

Дата бана: %s

Админ: %s

Причина: %s

-------------------------------------

Помогите пожалуйста!

Возможно стоит рассказать, под какую систему администрирования нужно?

Система администрации “SAM”

Есть документация по SAM?

а использовать SAM Gban Fix New
там именно то что ты написал или тебе не нужен отдельный бан и/или с этим какая-та проблема?

Нужна именно отдельная команда

Не понял суть вопроса
О какой документации идет речь?

Можешь предоставить мне в личные сообщения систему SAM?

В SAM если указать в длительности бана 0, то бан будет навсегда, или это не то, что тебе нужно?

Нужна отдельная команда

Скинь сюда код бана.
Он должен находится где-то в модулях в одной из вкладок, посмотри в !menu, а потом в файле

-------------------------------------------------
-- PERMA
-------------------------------------------------

command.new("perma")
	:SetPermission("perma", "admin")

	:AddArg("player", {single_target = true})
	:AddArg("length", {optional = true, default = 0})
	:AddArg("text", {hint = "reason", optional = true, default = sam.language.get("default_reason")})

	:GetRestArgs()

	:Help("perma_help")

	:OnExecute(function(ply, targets, length, reason)
		local target = targets[1]
		if ply:GetBanLimit() ~= 0 then
			if length == 0 then
				length = ply:GetBanLimit()
			else
				length = math.Clamp(length, 1, ply:GetBanLimit())
			end
		end
		target:sam_ban(length, reason, ply:SteamID())

		sam.player.send_message(nil, "perma", {
			A = ply, T = target:Name(), V = sam.format_length(length), V_2 = reason
		})
	end)
:End()

Что тебе тут нужно сделать?

Хотел бы сделать команду perma, которая будет работать как обычный бан, только без конца времени бана.
При бане человека выкидывает с сервера и в причине пишет:


Вы на всегда забанены навсегда

-------------------------------------

Дата бана: %s

Админ: %s

Причина: %s

-------------------------------------

Я просил код обычного бана, а не этого

Это и есть код обычного бана, я просто поменял название

Тогда уточняй, что ты менял.

-- PERMA
-------------------------------------------------

command.new("perma")
	:SetPermission("perma", "admin")
	:AddArg("player", {single_target = true})
	:AddArg("text", {hint = "reason", optional = true, default = sam.language.get("default_reason")})
	:GetRestArgs()
	:Help("Банит игрока навсегда")
	:OnExecute(function(ply, targets, reason)
		local target = targets[1]
		local length = 0

		target:sam_ban(length, reason, ply:SteamID())

		sam.player.send_message(nil, "perma", {
			A = ply, T = target:Name(), V = sam.format_length(length), V_2 = reason
		})
	end)
:End()

Добавь файл по такому пути.
garrysmod\lua\autorun\server\check_banned.lua

function sam.format_ban_message(admin_name, admin_steamid, reason, unban_date)
	unban_date = unban_date == 0 and "never" or sam.format_length((unban_date - os.time()) / 60)

	local message_tbl
	
	if unban_date == "never" then
		message_tbl = sam.format_message("ban_message_permament", {
			S = (admin_name == "" and admin_steamid or admin_name), S_2 = reason
		})
    elseif admin_name == "" then
		message_tbl = sam.format_message("ban_message", {
			S = admin_steamid, S_2 = reason, S_3 = unban_date
		})
	else
		message_tbl = sam.format_message("ban_message_2", {
			S = admin_name, S_2 = admin_steamid, S_3 = reason, S_4 = unban_date
		})
	end

	local message = ""
	for i = 1, #message_tbl do
		local v = message_tbl[i]
		if sam.isstring(v) then
			message = message .. v
		end
	end

	return message
end

И нужно в файл твоего перевода SAM

	ban_message_permament = [[


		You are banned by: {S}

		Reason: {S_2}]],

Хук CheckPassword не будет работать: ты возвращаешь false в коллбеке, а не в самом хуке

1 лайк

Ты прав, ещё толку от хука нету.