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")