71 lines
1.7 KiB
Lua
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
|