Files
2026-03-31 10:27:04 +03:00

143 lines
5.9 KiB
Lua
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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")