Решил сделать такую фишку, когда кто-то пишет какую либо ссылку ему давался мут на 30 минут, если повторно кидает ссылку то мут на 2 часа, а если 3 раз кидает ссылку то пермамент, но сталкнулся с такой проблемой что когда пишу в коде причину бана админка считает это ошибкой. Я проверял если я вписываю 1 раз ссылку мут на 30 минут, 2 ссылку мут на 2 часа, 3 раз ссылку нечего не происходит. Вот код:
local urlPatterns = {'http', 'https', 't.me', 'vk%.', 'www%.', 'urw%.', 'IP', 'discord'}
local playerViolations = {}
local urlPatterns = {'http', 'https', 't.me', 'vk%.', 'www%.', 'urw%.', 'IP', 'discord'}
local playerViolations = {}
local function PlayerSay(pl, text)
if not IsValid(pl) then
return
end
if pl:IsSuperAdmin() or pl:Nick() == "Osnovatel" then
return
end
local playerName = pl:Nick()
if not playerViolations[playerName] then
playerViolations[playerName] = 0
end
for _, pattern in ipairs(urlPatterns) do
if string.match(text:lower(), pattern) then
playerViolations[playerName] = playerViolations[playerName] + 1
local duration = 0
local reason = "2.3: Предупреждение"
if playerViolations[playerName] == 1 then
duration = 30
elseif playerViolations[playerName] == 2 then
duration = 120
elseif playerViolations[playerName] == 3 then
duration = 0
reason = "2.3"
playerViolations[playerName] = 0
end
if duration > 0 then
RunConsoleCommand('sam', 'mute', playerName, tostring(duration), reason)
elseif duration == 0 then
RunConsoleCommand('sam', 'ban', playerName, reason)
end
return true
end
end
end
hook.Add('PlayerSay', 'PlayerSay_sv', PlayerSay)