143 lines
5.9 KiB
Lua
143 lines
5.9 KiB
Lua
PLUGIN.name = "LeyHitReg"
|
||
PLUGIN.author = "Ley (Портирован для Helix)"
|
||
PLUGIN.description = "Улучшенная система регистрации попаданий для точной стрельбы"
|
||
|
||
-- Конфигурация системы
|
||
LeyHitreg = LeyHitreg or {}
|
||
|
||
-- Настройки через ix.config
|
||
ix.config.Add("leyHitregEnabled", true, "Включить систему улучшенной регистрации попаданий", nil, {
|
||
category = "LeyHitReg"
|
||
})
|
||
|
||
ix.config.Add("leyHitregShotDirForceDisabled", false, "Принудительно отключить направление выстрела (для тестирования проблемных SWEP баз)", nil, {
|
||
category = "LeyHitReg"
|
||
})
|
||
|
||
ix.config.Add("leyHitregDisableSecurityChecks", false, "Отключить проверки безопасности выстрелов", nil, {
|
||
category = "LeyHitReg"
|
||
})
|
||
|
||
ix.config.Add("leyHitregIgnoreCanNextPrimaryAttack", true, "Игнорировать задержку между выстрелами (рекомендуется)", nil, {
|
||
category = "LeyHitReg"
|
||
})
|
||
|
||
ix.config.Add("leyHitregNoSpread", false, "[DEBUG] Включить режим без разброса для всех", nil, {
|
||
category = "LeyHitReg - Debug"
|
||
})
|
||
|
||
ix.config.Add("leyHitregShowActualHit", false, "[DEBUG] Показывать где на самом деле попала пуля (без разброса)", nil, {
|
||
category = "LeyHitReg - Debug"
|
||
})
|
||
|
||
ix.config.Add("leyHitregShowSpreadedHit", false, "[DEBUG] Показывать где на самом деле попала пуля (с разбросом)", nil, {
|
||
category = "LeyHitReg - Debug"
|
||
})
|
||
|
||
ix.config.Add("leyHitregLogFixedBullets", false, "[DEBUG] Логировать количество исправленных пуль", nil, {
|
||
category = "LeyHitReg - Debug"
|
||
})
|
||
|
||
ix.config.Add("leyHitregLogInvalidShots", false, "[DEBUG] Логировать невалидные выстрелы", nil, {
|
||
category = "LeyHitReg - Debug"
|
||
})
|
||
|
||
-- Применяем настройки к LeyHitreg
|
||
LeyHitreg.ShotDirForceDisabled = ix.config.Get("leyHitregShotDirForceDisabled", false)
|
||
LeyHitreg.DisableSecurityChecks = ix.config.Get("leyHitregDisableSecurityChecks", false)
|
||
LeyHitreg.IgnoreCanNextPrimaryAttack = ix.config.Get("leyHitregIgnoreCanNextPrimaryAttack", true)
|
||
|
||
-- Debug настройки
|
||
LeyHitreg.Disabled = not ix.config.Get("leyHitregEnabled", true)
|
||
LeyHitreg.DisabledOnlyOnClient = false
|
||
LeyHitreg.NoSpread = ix.config.Get("leyHitregNoSpread", false)
|
||
LeyHitreg.ShowActualShotHit = ix.config.Get("leyHitregShowActualHit", false)
|
||
LeyHitreg.ShowActualShotSpreadedHit = ix.config.Get("leyHitregShowSpreadedHit", false)
|
||
LeyHitreg.BrokenDefaultSpread = false
|
||
LeyHitreg.LogHitgroupMismatches = false
|
||
LeyHitreg.LogFixedBullets = ix.config.Get("leyHitregLogFixedBullets", false)
|
||
LeyHitreg.LogInvalidFOV = false
|
||
LeyHitreg.LogInvalidShots = ix.config.Get("leyHitregLogInvalidShots", false)
|
||
LeyHitreg.BulletAimbot = false
|
||
LeyHitreg.LogTargetBone = false
|
||
LeyHitreg.HitScanDisabled = false
|
||
LeyHitreg.BulletOverwriteDisabled = false
|
||
LeyHitreg.AnnounceClientHits = false
|
||
LeyHitreg.DisableLagComp = false
|
||
|
||
if LeyHitreg.Disabled then
|
||
print("[LeyHitReg] Отключен через настройки")
|
||
return
|
||
end
|
||
|
||
-- Отключение конфликтующих систем хитрега
|
||
function LeyHitreg:DisableMoatHitreg()
|
||
if MOAT_HITREG then
|
||
MOAT_HITREG.MaxPing = 1
|
||
end
|
||
|
||
if ConVarExists("moat_alt_hitreg") then
|
||
RunConsoleCommand("moat_alt_hitreg", "0")
|
||
end
|
||
|
||
if SHR then
|
||
if SHR.Config then
|
||
SHR.Config.Enabled = false
|
||
SHR.Config.ClientDefault = 0
|
||
end
|
||
hook.Remove("EntityFireBullets", "SHR.FireBullets")
|
||
hook.Remove("EntityFireBullets", "a")
|
||
net.Receivers["shr"] = function() end
|
||
end
|
||
end
|
||
|
||
function PLUGIN:Initialize()
|
||
print("[LeyHitReg] Загрузка системы регистрации попаданий...")
|
||
|
||
-- Отключаем конфликтующие системы
|
||
LeyHitreg:DisableMoatHitreg()
|
||
|
||
print("[LeyHitReg] Система загружена!")
|
||
end
|
||
|
||
-- Обновление настроек при изменении конфига
|
||
function PLUGIN:OnConfigChanged(key, oldValue, newValue)
|
||
if key == "leyHitregEnabled" then
|
||
LeyHitreg.Disabled = not newValue
|
||
print("[LeyHitReg] Система " .. (newValue and "включена" or "отключена"))
|
||
elseif key == "leyHitregShotDirForceDisabled" then
|
||
LeyHitreg.ShotDirForceDisabled = newValue
|
||
elseif key == "leyHitregDisableSecurityChecks" then
|
||
LeyHitreg.DisableSecurityChecks = newValue
|
||
elseif key == "leyHitregIgnoreCanNextPrimaryAttack" then
|
||
LeyHitreg.IgnoreCanNextPrimaryAttack = newValue
|
||
elseif key == "leyHitregNoSpread" then
|
||
LeyHitreg.NoSpread = newValue
|
||
elseif key == "leyHitregShowActualHit" then
|
||
LeyHitreg.ShowActualShotHit = newValue
|
||
elseif key == "leyHitregShowSpreadedHit" then
|
||
LeyHitreg.ShowActualShotSpreadedHit = newValue
|
||
elseif key == "leyHitregLogFixedBullets" then
|
||
LeyHitreg.LogFixedBullets = newValue
|
||
elseif key == "leyHitregLogInvalidShots" then
|
||
LeyHitreg.LogInvalidShots = newValue
|
||
end
|
||
end
|
||
|
||
-- Загрузка модулей
|
||
ix.util.Include("leyhitreg/shared/spreadsystem/bulletspread.lua")
|
||
ix.util.Include("leyhitreg/shared/spreadsystem/firebullets.lua")
|
||
ix.util.Include("leyhitreg/shared/disablelagcomp/disablelagcomp.lua")
|
||
ix.util.Include("leyhitreg/shared/workarounds/workarounds.lua")
|
||
ix.util.Include("leyhitreg/shared/workarounds/swepbases.lua")
|
||
|
||
ix.util.Include("leyhitreg/client/sendshots/sendshots.lua")
|
||
ix.util.Include("leyhitreg/client/sendshots/fetchspreads.lua")
|
||
|
||
ix.util.Include("leyhitreg/server/bulletprocessing/hitscan.lua")
|
||
ix.util.Include("leyhitreg/server/bulletprocessing/processbullet.lua")
|
||
ix.util.Include("leyhitreg/server/damageinfo/scaledamagehack.lua")
|
||
ix.util.Include("leyhitreg/server/damageinfo/fixscaling.lua")
|
||
ix.util.Include("leyhitreg/server/receiveshotinfo/receiveshotinfo.lua")
|
||
ix.util.Include("leyhitreg/server/receiveshotinfo/shotvalidator.lua")
|