add sborka
This commit is contained in:
@@ -0,0 +1,185 @@
|
||||
/*
|
||||
____ _ _ ____ __ __ _ _
|
||||
/ ___|___ __| | ___ __| | | __ ) _ _ | \/ | __ _| | |__ ___ _ __ ___
|
||||
| | / _ \ / _` |/ _ \/ _` | | _ \| | | | | |\/| |/ _` | | '_ \ / _ \| '__/ _ \
|
||||
| |__| (_) | (_| | __/ (_| | | |_) | |_| | | | | | (_| | | |_) | (_) | | | (_) |
|
||||
\____\___/ \__,_|\___|\__,_| |____/ \__, | |_| |_|\__,_|_|_.__/ \___/|_| \___/
|
||||
|___/
|
||||
*/
|
||||
|
||||
util.AddNetworkString("pp_open_menu")
|
||||
util.AddNetworkString("pp_info_send")
|
||||
|
||||
local function PermissionLoad()
|
||||
|
||||
if not PermaProps then PermaProps = {} end
|
||||
if not PermaProps.Permissions then PermaProps.Permissions = {} end
|
||||
|
||||
PermaProps.Permissions["superadmin"] = { Physgun = true, Tool = true, Property = true, Save = true, Delete = true, Update = true, Menu = true, Permissions = true, Inherits = "admin", Custom = true }
|
||||
PermaProps.Permissions["admin"] = { Physgun = false, Tool = false, Property = false, Save = true, Delete = true, Update = true, Menu = true, Permissions = false, Inherits = "user", Custom = true }
|
||||
PermaProps.Permissions["user"] = { Physgun = false, Tool = false, Property = false, Save = false, Delete = false, Update = false, Menu = false, Permissions = false, Inherits = "user", Custom = true }
|
||||
|
||||
if CAMI then
|
||||
|
||||
for k, v in pairs(CAMI.GetUsergroups()) do
|
||||
|
||||
if k == "superadmin" or k == "admin" or k == "user" then continue end
|
||||
|
||||
PermaProps.Permissions[k] = { Physgun = false, Tool = false, Property = false, Save = false, Delete = false, Update = false, Menu = false, Permissions = false, Inherits = v.Inherits, Custom = false }
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
if file.Exists( "permaprops_config.txt", "DATA" ) then
|
||||
file.Delete( "permaprops_config.txt" )
|
||||
end
|
||||
|
||||
if file.Exists( "permaprops_permissions.txt", "DATA" ) then
|
||||
|
||||
local content = file.Read("permaprops_permissions.txt", "DATA")
|
||||
local tablecontent = util.JSONToTable( content )
|
||||
|
||||
for k, v in pairs(tablecontent) do
|
||||
|
||||
if PermaProps.Permissions[k] == nil then
|
||||
|
||||
tablecontent[k] = nil
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
table.Merge(PermaProps.Permissions, ( tablecontent or {} ))
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
hook.Add("Initialize", "PermaPropPermLoad", PermissionLoad)
|
||||
hook.Add("CAMI.OnUsergroupRegistered", "PermaPropPermLoadCAMI", PermissionLoad) -- In case something changes
|
||||
|
||||
local function PermissionSave()
|
||||
|
||||
file.Write( "permaprops_permissions.txt", util.TableToJSON(PermaProps.Permissions) )
|
||||
|
||||
end
|
||||
|
||||
local function pp_open_menu( ply )
|
||||
|
||||
if !PermaProps.HasPermission( ply, "Menu") then ply:ChatPrint("Access denied !") return end
|
||||
|
||||
local SendTable = {}
|
||||
local Data_PropsList = sql.Query( "SELECT * FROM permaprops WHERE map = ".. sql.SQLStr(game.GetMap()) .. ";" )
|
||||
|
||||
if Data_PropsList and #Data_PropsList < 200 then
|
||||
|
||||
for k, v in pairs( Data_PropsList ) do
|
||||
|
||||
local data = util.JSONToTable(v.content)
|
||||
|
||||
SendTable[v.id] = {Model = data.Model, Class = data.Class, Pos = data.Pos, Angle = data.Angle}
|
||||
|
||||
end
|
||||
|
||||
elseif Data_PropsList and #Data_PropsList > 200 then -- Too much props dude :'(
|
||||
|
||||
for i = 1, 199 do
|
||||
|
||||
local data = util.JSONToTable(Data_PropsList[i].content)
|
||||
|
||||
SendTable[Data_PropsList[i].id] = {Model = data.Model, Class = data.Class, Pos = data.Pos, Angle = data.Angle}
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
local Content = {}
|
||||
Content.MProps = tonumber(sql.QueryValue("SELECT COUNT(*) FROM permaprops WHERE map = ".. sql.SQLStr(game.GetMap()) .. ";"))
|
||||
Content.TProps = tonumber(sql.QueryValue("SELECT COUNT(*) FROM permaprops;"))
|
||||
|
||||
Content.PropsList = SendTable
|
||||
Content.Permissions = PermaProps.Permissions
|
||||
|
||||
local Data = util.TableToJSON( Content )
|
||||
local Compressed = util.Compress( Data )
|
||||
|
||||
net.Start( "pp_open_menu" )
|
||||
net.WriteFloat( Compressed:len() )
|
||||
net.WriteData( Compressed, Compressed:len() )
|
||||
net.Send( ply )
|
||||
|
||||
end
|
||||
concommand.Add("pp_cfg_open", pp_open_menu)
|
||||
|
||||
local function pp_info_send( um, ply )
|
||||
|
||||
if !PermaProps.HasPermission( ply, "Menu") then ply:ChatPrint("Access denied !") return end
|
||||
|
||||
local Content = net.ReadTable()
|
||||
|
||||
if Content["CMD"] == "DEL" then
|
||||
|
||||
Content["Val"] = tonumber(Content["Val"])
|
||||
|
||||
if Content["Val"] != nil and Content["Val"] <= 0 then return end
|
||||
|
||||
sql.Query("DELETE FROM permaprops WHERE id = ".. sql.SQLStr(Content["Val"]) .. ";")
|
||||
|
||||
for k, v in pairs(ents.GetAll()) do
|
||||
|
||||
if v.PermaProps_ID == Content["Val"] then
|
||||
|
||||
ply:ChatPrint("You erased " .. v:GetClass() .. " with a model of " .. v:GetModel() .. " from the database.")
|
||||
v:Remove()
|
||||
break
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
elseif Content["CMD"] == "VAR" then
|
||||
|
||||
if PermaProps.Permissions[Content["Name"]] == nil or PermaProps.Permissions[Content["Name"]][Content["Data"]] == nil then return end
|
||||
if !isbool(Content["Val"]) then return end
|
||||
|
||||
if Content["Name"] == "superadmin" and ( Content["Data"] == "Custom" or Content["Data"] == "Permissions" or Content["Data"] == "Menu" ) then return end
|
||||
|
||||
if !PermaProps.HasPermission( ply, "Permissions") then ply:ChatPrint("Access denied !") return end
|
||||
|
||||
PermaProps.Permissions[Content["Name"]][Content["Data"]] = Content["Val"]
|
||||
|
||||
PermissionSave()
|
||||
|
||||
elseif Content["CMD"] == "DEL_MAP" then
|
||||
|
||||
sql.Query( "DELETE FROM permaprops WHERE map = ".. sql.SQLStr(game.GetMap()) .. ";" )
|
||||
PermaProps.ReloadPermaProps()
|
||||
|
||||
ply:ChatPrint("You erased all props from the map !")
|
||||
|
||||
elseif Content["CMD"] == "DEL_ALL" then
|
||||
|
||||
sql.Query( "DELETE FROM permaprops;" )
|
||||
PermaProps.ReloadPermaProps()
|
||||
|
||||
ply:ChatPrint("You erased all props !")
|
||||
|
||||
elseif Content["CMD"] == "CLR_MAP" then
|
||||
|
||||
for k, v in pairs( ents.GetAll() ) do
|
||||
|
||||
if v.PermaProps == true then
|
||||
|
||||
v:Remove()
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
ply:ChatPrint("You have removed all props !")
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
net.Receive("pp_info_send", pp_info_send)
|
||||
Reference in New Issue
Block a user