[SAM] Запретить определенные команды в РП профессии

Как запретить использовать определенные админ команды определенным группам? (SAM)

Самое простое решение, без лишних модулей
Не забудь изменить профессию администратора, на свою

local blocked_cmds = {
	["noclip"] = true,
}

hook.Add("SAM.CanRunCommand", "testingCode", function(ply, cmd_name)
    if ply:IsSuperAdmin() then return end
	if (blocked_cmds[cmd_name] and ply:Team() ~= TEAM_ADMIN) then 
		return false
	end 
end)

Окей, а как запретить трогать игроков и их пропы физганом в РП профе?

  • укажи, куда это закидывать
  • какой тип файла это

полагаю, это модуль sv части?

Просто файл, закидываешь в серверную часть
Пример пути: “/addons/любое_имя/lua/autorun/server/blabla.lua”

На счет физгана, не изучал

Думаю, благодаря CAMI в SAM (can_physgun_players) это можно реализовать легко

-- addons/anyname/lua/autorun/server/sam_physgun.lua

hook.Add("CAMI.PlayerHasAccess", "SAM.PhysgunLimit", function(pl, privilege, callback)
	if privilege == "can_physgun_players" and pl:Team() ~= TEAM_ADMIN then
		callback(false)
	end
end)

Да, кстати
SAM ломается.
Не знаю почему, но быть может, потому что я добавил проверку на суперадмина в строчку if (blocked_cmds[cmd_name] and ply:Team() ~= TEAM_ADMIN) or ply:IsSuperAdmin() then

Я обновил код, возьми его

1 лайк

Мне к сожалению не помогло.

Лично у меня такой код:

local disallowed_commands = {
	["goto"]   = true,
	["bring"]  = true,
	["return"] = true,
	["noclip"] = true,
	["slay"] = true,
	["slap"] = true,
	["freeze"] = true,
	["unfreeze"] = true,
	["scale"] = true,
	["giveammo"] = true,
	["give"] = true
}

hook.Add("SAM.CanRunCommand", "SAM.DisallowedCommands", function(ply, cmd)
	if IsValid(ply) then
		local disallowed_command = disallowed_commands[cmd]

		if disallowed_command and ply:Team() ~= TEAM_ADMIN or not ply:CheckGroup('superadmin') then
			sam.player.send_message(ply, "'{S}' данную команду запрещено использовать в РП Профессии!", {
				S = cmd
			})

			return false
		end
	end
end)

Я как раз написал минут 10 назад подобный код ,сейчас сравню и уже завтра отпишу ,если поможет большое тебе спасибо.

с этим кодом проблема

Если я суперадмин я всё могу юзать
Но
Если я даже в профе админа и рангом ниже superadmin - пишет что я не могу юзать команды в рп профе, которые прописал в disallowed_commands
Т.е. если я условно admin и нахожусь в TEAM_ADMIN - я не могу использовать команды…

1 лайк

noclip все равно работает в рп проф

hook.Add('PlayerNoClip', 'restrict_rpteam', function(ply, state)
    if state and ply:Team() ~= TEAM_ADMIN and not ply:CheckGroup('superadmin') then return false end
end)