add sborka

This commit is contained in:
2026-03-31 10:27:04 +03:00
commit f5e5f56c84
2345 changed files with 382127 additions and 0 deletions

View File

@@ -0,0 +1,125 @@
local PLUGIN = PLUGIN
--[[CLIENT SIDE]]
function PLUGIN:PreRender()
if not ix.config.Get("leanEnabled", true) then return end
TFALeanModel()
end
local minvec = Vector(-6, -6, -6)
local maxvec = Vector(6, 6, 6)
local function filterfunc(ent)
if (ent:IsPlayer() or ent:IsNPC() or ent:IsWeapon() or ent:GetClass() == "rpg_missile" or ent:GetClass() == "crossbow_bolt" or ent:GetClass() == "npc_grenade_frag" or ent:GetClass() == "apc_missile" or ent:GetClass() == "viewmodel_predicted") then
return false
else
return true
end
end
local function bestcase(pos, endpos, ply)
local off = endpos - pos
local trace = {}
trace.start = pos
trace.endpos = pos + off
trace.mask = MASK_SOLID
trace.filter = filterfunc
trace.ignoreworld = false
trace.maxs = maxvec
trace.mins = minvec
local traceres = util.TraceHull(trace)
return pos + off:GetNormalized() * math.Clamp(traceres.Fraction, 0, 1) * off:Length()
end
function LeanCalcView(ply, pos, angles, fov)
local view = {}
view.origin = pos
view.angles = angles
view.fov = fov
if not ply:Alive() or ply:Health() <= 0 then return view end
local status = ply.TFALean or 0
local leanOffset = ix.config.Get("leanOffset", 16)
local rollAngle = ix.config.Get("leanRollAngle", 15)
local off = Vector(0, status * -leanOffset, 0)
off:Rotate(angles)
view.angles:RotateAroundAxis(view.angles:Forward(), status * rollAngle)
view.origin = bestcase(view.origin, view.origin + off, ply)
return view
end
local ISLEANINGCV = false
function PLUGIN:CalcView(ply, pos, angles, fov)
if ISLEANINGCV then return end
if not ix.config.Get("leanEnabled", true) then return end
if GetViewEntity() ~= ply then return end
if not ply:Alive() then return end
if ply:InVehicle() then return end
ISLEANINGCV = true
local preTableRaw = hook.Run("CalcView", ply, pos, angles, fov)
ISLEANINGCV = false
local preOrigin, preAngles, preFov
if type(preTableRaw) == "table" then
preOrigin = rawget(preTableRaw, "origin") or pos
preAngles = rawget(preTableRaw, "angles") or angles
preFov = tonumber(rawget(preTableRaw, "fov")) or fov
else
preOrigin = pos
preAngles = angles
preFov = fov
end
local preTable = { origin = preOrigin, angles = preAngles, fov = preFov }
local finalTable = LeanCalcView(ply, preTable.origin, preTable.angles, preTable.fov)
for k, v in pairs(preTable) do
if finalTable[k] == nil and (k == "origin" or k == "angles" or k == "fov" or k == "drawviewer" or k == "znear" or k == "zfar") then
rawset(finalTable, k, v)
end
end
return finalTable
end
local ISLEANINGCV_VM = false
function LeanCalcVMView(wep, vm, oldPos, oldAng, pos, ang)
if ISLEANINGCV_VM then return end
local ply = LocalPlayer()
if GetViewEntity() ~= ply then return end
if not ply.tfacastoffset or ply.tfacastoffset <= 0.001 then
local status = ply.TFALean or 0
if math.abs(status) > 0.001 then
local leanOffset = ix.config.Get("leanOffset", 16)
local off = Vector(0, status * -leanOffset, 0)
off:Rotate(ang)
ang:RotateAroundAxis(ang:Forward(), status * 12 * (wep.ViewModelFlip and -1 or 1))
pos = bestcase(pos, pos + off, ply)
ISLEANINGCV_VM = true
local tpos, tang = hook.Run("CalcViewModelView", wep, vm, oldPos, oldAng, pos, ang)
ISLEANINGCV_VM = false
if tpos then
pos = tpos
end
if tang then
ang = tang
end
return pos, ang
end
end
end
function PLUGIN:CalcViewModelView(wep, vm, oldPos, oldAng, pos, ang)
if not ix.config.Get("leanEnabled", true) then return end
return LeanCalcVMView(wep, vm, oldPos, oldAng, pos, ang)
end