mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
Upload
This commit is contained in:
109
addons/sam-master/lua/sam/config/sv_config.lua
Normal file
109
addons/sam-master/lua/sam/config/sv_config.lua
Normal file
@@ -0,0 +1,109 @@
|
||||
--[[
|
||||
| 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/
|
||||
--]]
|
||||
|
||||
if SAM_LOADED then return end
|
||||
|
||||
local sam = sam
|
||||
local SQL = sam.SQL
|
||||
local mp = sam.mp
|
||||
local config = sam.config
|
||||
|
||||
local _config = {}
|
||||
|
||||
function config.sync()
|
||||
sam.set_global("Config", _config, true)
|
||||
end
|
||||
|
||||
local to_hex
|
||||
do
|
||||
local byte = string.byte
|
||||
local gsub = string.gsub
|
||||
local format = string.format
|
||||
|
||||
local hex = function(c)
|
||||
return format("%02X", byte(c))
|
||||
end
|
||||
|
||||
function to_hex(text)
|
||||
return (gsub(text, ".", hex))
|
||||
end
|
||||
end
|
||||
|
||||
function config.set(key, value, force)
|
||||
if not sam.isstring(key) then
|
||||
error("invalid setting name")
|
||||
end
|
||||
|
||||
if not mp.packers[sam.type(value)] then
|
||||
error("not supported value type")
|
||||
end
|
||||
|
||||
local old = _config[key]
|
||||
if not force and value == old then return end
|
||||
|
||||
SQL.FQuery([[
|
||||
REPLACE INTO
|
||||
`sam_config`(
|
||||
`key`,
|
||||
`value`
|
||||
)
|
||||
VALUES
|
||||
({1}, X{2})
|
||||
]], {key, to_hex(mp.pack(value))})
|
||||
|
||||
_config[key] = value
|
||||
config.sync()
|
||||
sam.hook_call("SAM.UpdatedConfig", key, value, old)
|
||||
end
|
||||
|
||||
function config.get(key, default)
|
||||
local value = _config[key]
|
||||
if value ~= nil then
|
||||
return value
|
||||
end
|
||||
return default
|
||||
end
|
||||
|
||||
config.sync()
|
||||
|
||||
hook.Add("SAM.DatabaseLoaded", "LoadConfig", function()
|
||||
SQL.Query([[
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
`sam_config`
|
||||
]], function(sam_config)
|
||||
for _, v in ipairs(sam_config) do
|
||||
_config[v.key] = mp.unpack(v.value)
|
||||
end
|
||||
|
||||
config.loaded = true
|
||||
config.sync()
|
||||
hook.Call("SAM.LoadedConfig", nil, _config)
|
||||
end):wait()
|
||||
end)
|
||||
|
||||
sam.netstream.Hook("Config.Set", function(ply, key, value)
|
||||
config.set(key, value)
|
||||
|
||||
value = tostring(value)
|
||||
|
||||
if value == "" then
|
||||
sam.player.send_message(nil, "{A} changed {S Blue} setting to: {S_2 Red}", {
|
||||
A = ply, S = key, S_2 = "none"
|
||||
})
|
||||
else
|
||||
sam.player.send_message(nil, "{A} changed {S Blue} setting to: {S_2}", {
|
||||
A = ply, S = key, S_2 = value
|
||||
})
|
||||
end
|
||||
end, function(ply)
|
||||
return ply:HasPermission("manage_config")
|
||||
end)
|
||||
Reference in New Issue
Block a user