mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 21:53:46 +03:00
124 lines
2.7 KiB
Lua
124 lines
2.7 KiB
Lua
|
|
--[[
|
||
|
|
| This file was obtained through the combined efforts
|
||
|
|
| of Madbluntz & Plymouth Antiquarian Society.
|
||
|
|
|
|
||
|
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||
|
|
| Maloy, DrPepper10 @ RIP, Atle!
|
||
|
|
|
|
||
|
|
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||
|
|
--]]
|
||
|
|
|
||
|
|
local function get_bans()
|
||
|
|
local str = file.Read("pac_bans.txt", "DATA")
|
||
|
|
|
||
|
|
local bans = {}
|
||
|
|
|
||
|
|
if str and str ~= "" then
|
||
|
|
bans = util.KeyValuesToTable(str)
|
||
|
|
end
|
||
|
|
|
||
|
|
do -- check if this needs to be rebuilt
|
||
|
|
local k,v = next(bans)
|
||
|
|
if isstring(v) then
|
||
|
|
local temp = {}
|
||
|
|
|
||
|
|
for k,v in pairs(bans) do
|
||
|
|
temp[util.CRC("gm_" .. v .. "_gm")] = {steamid = v, name = k}
|
||
|
|
end
|
||
|
|
|
||
|
|
bans = temp
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
return bans
|
||
|
|
end
|
||
|
|
|
||
|
|
function pace.Ban(ply)
|
||
|
|
|
||
|
|
ply:ConCommand("pac_clear_parts")
|
||
|
|
|
||
|
|
timer.Simple( 1, function() -- made it a timer because the ConCommand don't run fast enough. - Bizzclaw
|
||
|
|
|
||
|
|
net.Start("pac_submit_acknowledged")
|
||
|
|
net.WriteBool(false)
|
||
|
|
net.WriteString("You have been banned from using pac!")
|
||
|
|
net.Send(ply)
|
||
|
|
|
||
|
|
local bans = get_bans()
|
||
|
|
|
||
|
|
for key, data in pairs(bans) do
|
||
|
|
if ply:SteamID() == data.steamid then
|
||
|
|
bans[key] = nil
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
bans[ply:UniqueID()] = {steamid = ply:SteamID(), nick = ply:Nick()}
|
||
|
|
|
||
|
|
pace.Bans = bans
|
||
|
|
|
||
|
|
file.Write("pac_bans.txt", util.TableToKeyValues(bans), "DATA")
|
||
|
|
end)
|
||
|
|
end
|
||
|
|
|
||
|
|
function pace.Unban(ply)
|
||
|
|
|
||
|
|
net.Start("pac_submit_acknowledged")
|
||
|
|
net.WriteBool(true)
|
||
|
|
net.WriteString("You are now permitted to use pac!")
|
||
|
|
net.Send(ply)
|
||
|
|
|
||
|
|
local bans = get_bans()
|
||
|
|
|
||
|
|
for key, data in pairs(bans) do
|
||
|
|
if ply:SteamID() == data.steamid then
|
||
|
|
bans[key] = nil
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
pace.Bans = bans
|
||
|
|
|
||
|
|
file.Write("pac_bans.txt", util.TableToKeyValues(bans), "DATA")
|
||
|
|
end
|
||
|
|
|
||
|
|
local function GetPlayer(target)
|
||
|
|
for key, ply in pairs(player.GetAll()) do
|
||
|
|
if ply:SteamID() == target or ply:UniqueID() == target or ply:Nick():lower():find(target:lower()) then
|
||
|
|
return ply
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
concommand.Add("pac_ban", function(ply, cmd, args)
|
||
|
|
if not next(args) then
|
||
|
|
pac.Message("Please provide one of the following: SteamID, UniqueID or Nick.")
|
||
|
|
return
|
||
|
|
end
|
||
|
|
local target = GetPlayer(args[1])
|
||
|
|
if (not IsValid(ply) or ply:IsAdmin()) and target then
|
||
|
|
pace.Ban(target)
|
||
|
|
pac.Message(ply, " banned ", target, " from PAC.")
|
||
|
|
end
|
||
|
|
end)
|
||
|
|
|
||
|
|
concommand.Add("pac_unban", function(ply, cmd, args)
|
||
|
|
if not next(args) then
|
||
|
|
pac.Message("Please provide one of the following: SteamID, UniqueID or Nick.")
|
||
|
|
return
|
||
|
|
end
|
||
|
|
local target = GetPlayer(args[1])
|
||
|
|
if (not IsValid(ply) or ply:IsAdmin()) and target then
|
||
|
|
pace.Unban(target)
|
||
|
|
pac.Message(ply, " unbanned ", target, " from PAC.")
|
||
|
|
end
|
||
|
|
end)
|
||
|
|
|
||
|
|
function pace.IsBanned(ply)
|
||
|
|
if not ply or not ply:IsValid() then return false end
|
||
|
|
|
||
|
|
if not pace.Bans then
|
||
|
|
pace.Bans = get_bans()
|
||
|
|
end
|
||
|
|
|
||
|
|
return pace.Bans[ply:UniqueID()] ~= nil
|
||
|
|
end
|