Inital Commit
This commit is contained in:
98
common/media/lua/shared/OFBlockConfig.lua
Normal file
98
common/media/lua/shared/OFBlockConfig.lua
Normal file
@@ -0,0 +1,98 @@
|
||||
local function safeRequire(moduleName)
|
||||
local ok, result = pcall(require, moduleName)
|
||||
if ok and type(result) == "table" then
|
||||
return result
|
||||
end
|
||||
return {}
|
||||
end
|
||||
|
||||
local function appendArray(target, source)
|
||||
if type(source) ~= "table" then
|
||||
return
|
||||
end
|
||||
for _, value in ipairs(source) do
|
||||
target[#target + 1] = value
|
||||
end
|
||||
end
|
||||
|
||||
local function mergeSpec(baseSpec, extraSpec)
|
||||
local merged = {
|
||||
items = {},
|
||||
prefixes = {},
|
||||
}
|
||||
|
||||
if type(baseSpec) == "table" then
|
||||
appendArray(merged.items, baseSpec.items)
|
||||
appendArray(merged.prefixes, baseSpec.prefixes)
|
||||
end
|
||||
|
||||
if type(extraSpec) == "table" then
|
||||
appendArray(merged.items, extraSpec.items)
|
||||
appendArray(merged.prefixes, extraSpec.prefixes)
|
||||
end
|
||||
|
||||
return merged
|
||||
end
|
||||
|
||||
local function mergeAliasTables(baseAliases, extraAliases)
|
||||
local merged = {}
|
||||
if type(baseAliases) == "table" then
|
||||
for key, list in pairs(baseAliases) do
|
||||
merged[key] = merged[key] or {}
|
||||
appendArray(merged[key], list)
|
||||
end
|
||||
end
|
||||
if type(extraAliases) == "table" then
|
||||
for key, list in pairs(extraAliases) do
|
||||
merged[key] = merged[key] or {}
|
||||
appendArray(merged[key], list)
|
||||
end
|
||||
end
|
||||
return merged
|
||||
end
|
||||
|
||||
local function mergeRuleTables(baseRules, extraRules)
|
||||
local merged = {}
|
||||
appendArray(merged, baseRules)
|
||||
appendArray(merged, extraRules)
|
||||
return merged
|
||||
end
|
||||
|
||||
local function mergeByList(baseByList, extraByList)
|
||||
local merged = {}
|
||||
|
||||
if type(baseByList) == "table" then
|
||||
for listName, spec in pairs(baseByList) do
|
||||
merged[listName] = mergeSpec(nil, spec)
|
||||
end
|
||||
end
|
||||
|
||||
if type(extraByList) == "table" then
|
||||
for listName, spec in pairs(extraByList) do
|
||||
merged[listName] = mergeSpec(merged[listName], spec)
|
||||
end
|
||||
end
|
||||
|
||||
return merged
|
||||
end
|
||||
|
||||
local defaults = safeRequire("OFBlockRules_Default")
|
||||
local user = safeRequire("OFBlockRules_User")
|
||||
local sourceCatalog = safeRequire("OFSourceCatalog")
|
||||
|
||||
local aliasCatalog = {
|
||||
firearms = sourceCatalog.firearms or {},
|
||||
attachments = sourceCatalog.attachments or {},
|
||||
ggs_all = sourceCatalog.ggs_all or {},
|
||||
}
|
||||
|
||||
local merged = {
|
||||
global = mergeSpec(defaults.global, user.global),
|
||||
byList = mergeByList(defaults.byList, user.byList),
|
||||
rules = mergeRuleTables(defaults.rules, user.rules),
|
||||
aliases = mergeAliasTables(defaults.aliases, user.aliases),
|
||||
}
|
||||
|
||||
merged.aliases = mergeAliasTables(aliasCatalog, merged.aliases)
|
||||
|
||||
return merged
|
||||
30
common/media/lua/shared/OFBlockRules_Default.lua
Normal file
30
common/media/lua/shared/OFBlockRules_Default.lua
Normal file
@@ -0,0 +1,30 @@
|
||||
-- Default rule set for Opinionated Firearms distribution blocking.
|
||||
-- Keep this empty for a clean-slate baseline.
|
||||
return {
|
||||
global = {
|
||||
items = {},
|
||||
prefixes = {},
|
||||
},
|
||||
byList = {
|
||||
-- Example:
|
||||
-- GunStorePistols = { items = { "Base.AA12" } },
|
||||
},
|
||||
rules = {
|
||||
-- Example rule:
|
||||
-- {
|
||||
-- id = "weekend-attachment-ban",
|
||||
-- enabled = false,
|
||||
-- where = { lists = { "GunStorePistols", "PoliceStorageGuns" } },
|
||||
-- when = { startsAt = 1762473600, endsAt = 1762732800 }, -- unix epoch UTC
|
||||
-- block = {
|
||||
-- items = { "@attachments" },
|
||||
-- prefixes = { "Base.Clip_" },
|
||||
-- },
|
||||
-- },
|
||||
},
|
||||
aliases = {
|
||||
-- Additional custom aliases can be added here.
|
||||
-- Example:
|
||||
-- police_vote_list = { "Base.AA12", "Base.AK47" },
|
||||
},
|
||||
}
|
||||
33
common/media/lua/shared/OFBlockRules_User.lua
Normal file
33
common/media/lua/shared/OFBlockRules_User.lua
Normal file
@@ -0,0 +1,33 @@
|
||||
-- User-editable rules.
|
||||
-- The web app can overwrite this file with vote results later.
|
||||
return {
|
||||
global = {
|
||||
items = {
|
||||
-- "Base.AA12",
|
||||
-- "@attachments",
|
||||
},
|
||||
prefixes = {
|
||||
-- "Base.Clip_",
|
||||
},
|
||||
},
|
||||
byList = {
|
||||
-- PoliceStorageGuns = {
|
||||
-- items = { "Base.AK47" },
|
||||
-- },
|
||||
},
|
||||
rules = {
|
||||
-- {
|
||||
-- id = "example-scheduled-block",
|
||||
-- enabled = false,
|
||||
-- where = { lists = { "GunStorePistols", "ArmyStorageGuns" } },
|
||||
-- when = { startsAt = 1762473600, endsAt = 1762732800 }, -- unix epoch UTC
|
||||
-- block = {
|
||||
-- items = { "Base.AK74u", "@firearms" },
|
||||
-- prefixes = { "Base.Clip_" },
|
||||
-- },
|
||||
-- },
|
||||
},
|
||||
aliases = {
|
||||
-- event_list = { "Base.AK74", "Base.AK47" },
|
||||
},
|
||||
}
|
||||
1836
common/media/lua/shared/OFSourceCatalog.lua
Normal file
1836
common/media/lua/shared/OFSourceCatalog.lua
Normal file
File diff suppressed because it is too large
Load Diff
5
common/media/lua/shared/OFSpawnProfile.lua
Normal file
5
common/media/lua/shared/OFSpawnProfile.lua
Normal file
@@ -0,0 +1,5 @@
|
||||
-- Auto-generated by tools/ggs-dist-cli.js apply
|
||||
-- Keep this empty template in git; generated content can overwrite it.
|
||||
return {
|
||||
items = {},
|
||||
}
|
||||
Reference in New Issue
Block a user