Files
OpinionatedFirearms/common/media/lua/shared/OpinionatedFirearms_AmmoMakerCasingCommandGate.lua
2026-02-14 00:13:03 -05:00

71 lines
1.7 KiB
Lua

local BLOCKED_AMMOMAKER_COMMANDS = {
returnCasingsOnAttack = true,
incrementSpendtRoundCount = true,
returnCasingsOnReload = true,
}
local function isPatchToggleEnabled()
local vars = SandboxVars and SandboxVars.OpinionatedFirearms
if vars and vars.HBVCEFAmmoMakerPatch ~= nil then
return vars.HBVCEFAmmoMakerPatch == true
end
return true
end
local function shouldBlockAmmoMakerCasingCommands()
return isPatchToggleEnabled()
end
local function getModuleAndCommand(...)
local argc = select("#", ...)
if argc < 2 then
return nil, nil
end
local firstArg = select(1, ...)
if type(firstArg) == "string" then
return firstArg, select(2, ...)
end
if argc >= 3 then
return select(2, ...), select(3, ...)
end
return nil, nil
end
local function installCommandGate()
if _G.OpinionatedFirearms_AmmoMakerCommandGateInstalled then
return true
end
if type(sendClientCommand) ~= "function" then
return false
end
_G.OpinionatedFirearms_AmmoMakerCommandGateInstalled = true
_G.OpinionatedFirearms_OriginalSendClientCommand = sendClientCommand
sendClientCommand = function(...)
local module, command = getModuleAndCommand(...)
if module == "ammomaker" and BLOCKED_AMMOMAKER_COMMANDS[command] and shouldBlockAmmoMakerCasingCommands() then
return
end
return _G.OpinionatedFirearms_OriginalSendClientCommand(...)
end
return true
end
local function ensureGateOnTick()
if installCommandGate() then
Events.OnTick.Remove(ensureGateOnTick)
end
end
if not installCommandGate() then
Events.OnTick.Add(ensureGateOnTick)
end