mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 05:13:46 +03:00
109 lines
2.0 KiB
Lua
109 lines
2.0 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/
|
|
--]]
|
|
|
|
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) |