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,167 @@
local rt_w = 240
local rt_h = 240
local rtmat = GetRenderTarget("tacrp_pipscope_thermal", rt_w, rt_h, false)
local rtmat_spare = GetRenderTarget("tacrp_pipscope_thermal2", rt_w, rt_h, false)
local lastthermalscope = false
local thermaltime = 0
local csm_boot_1 = Material("tacrp/hud/thermal_boot_1.png", "mips smooth")
local csm_1 = Material("tacrp/hud/thermal_1.png", "mips smooth")
local csm_2 = Material("tacrp/hud/thermal_2.png", "mips smooth")
local noise1 = Material("tacrp/hud/noise1.png")
local noise2 = Material("tacrp/hud/noise2.png")
local noise3 = Material("tacrp/hud/noise3.png")
local noise4 = Material("tacrp/hud/noise4.png")
local noisemats = {
noise1,
noise2,
noise3,
noise4
}
local lastrendertime = 0
local fps = 30
function SWEP:DoThermalRT()
if self:GetScopeLevel() <= 0 or !self:GetPeeking() then lastthermalscope = false return end
if TacRP.OverDraw then return end
if !lastthermalscope then
thermaltime = 0
end
if lastrendertime > CurTime() - (1 / fps) then return end
local angles = self:GetShootDir()
local origin = self:GetMuzzleOrigin()
local rt = {
x = 0,
y = 0,
w = rt_w,
h = rt_h,
aspect = 0.999,
angles = angles,
origin = origin,
drawviewmodel = false,
fov = 18.5,
znear = 6
}
render.PushRenderTarget(rtmat, 0, 0, rt_w, rt_h)
if thermaltime >= 0.75 or thermaltime == 0 then
TacRP.OverDraw = true
render.RenderView(rt)
TacRP.OverDraw = false
end
DrawColorModify({
["$pp_colour_addr"] = 0.25 * 132 / 255,
["$pp_colour_addg"] = 0.25 * 169 / 255,
["$pp_colour_addb"] = 0.25 * 154 / 255,
["$pp_colour_brightness"] = 0.7,
["$pp_colour_contrast"] = 0.75,
["$pp_colour_colour"] = 0,
["$pp_colour_mulr"] = 0,
["$pp_colour_mulg"] = 0,
["$pp_colour_mulb"] = 0
})
DrawBloom(0.25, 0.5, 16, 8, 1, 1, 1, 1, 1)
if thermaltime >= 0.75 then
local thermalents = ents.FindInCone(origin, angles:Forward(), 10000, 0.939692620) // 20 degrees
render.SuppressEngineLighting(true)
render.SetBlend(0.9)
local col = Color(255, 0, 0)
if self:GetTactical() then
col = Color(0, 255, 255)
end
render.SetColorModulation(col.r, col.g, col.b)
cam.Start3D(origin, angles, 20)
cam.IgnoreZ(false)
for _, ent in ipairs(thermalents) do
if ent == self:GetOwner() then continue end
if !ent:IsValid() or ent:IsWorld() then continue end
if ent:Health() <= 0 then continue end
if ent:IsPlayer() or ent:IsNPC() or ent:IsNextBot() or ent:IsOnFire() then
ent:DrawModel()
end
if ent:IsVehicle() or ent:IsOnFire() or ent.ArcCW_Hot or ent:IsScripted() and !ent:GetOwner():IsValid() then
ent:DrawModel()
end
end
cam.End3D()
render.SetColorModulation(1, 1, 1)
render.SuppressEngineLighting(false)
render.MaterialOverride()
render.SetBlend(1)
end
if self:GetTactical() then
render.PushRenderTarget(rtmat, 0, 0, rt_w, rt_h)
render.CopyTexture( rtmat, rtmat_spare )
render.Clear(255, 255, 255, 255, true, true)
render.OverrideBlend(true, BLEND_ONE, BLEND_ONE, BLENDFUNC_REVERSE_SUBTRACT)
render.DrawTextureToScreen(rtmat_spare)
render.OverrideBlend(false)
render.PopRenderTarget()
end
cam.Start2D()
render.ClearDepth()
if thermaltime < 0.75 then
surface.SetDrawColor(0, 0, 0)
surface.DrawRect(0, 0, rt_w, rt_h)
end
if thermaltime < 0.45 then
surface.SetMaterial(csm_boot_1)
else
if self:GetTactical() then
surface.SetMaterial(csm_1)
else
surface.SetMaterial(csm_2)
end
end
surface.SetDrawColor(255, 255, 255)
surface.DrawTexturedRect(0, 0, rt_w, rt_h)
cam.End2D()
render.PopRenderTarget()
thermaltime = thermaltime + (math.random(0, 5) * math.random(0, 5) * (1 / fps) / 6.25)
lastthermalscope = true
lastrendertime = CurTime()
end
function SWEP:DoThermalCam()
if self:GetScopeLevel() <= 0 or !self:GetPeeking() then lastthermalscope = false return end
local w = TacRP.SS(480 / 4)
local h = TacRP.SS(480 / 4)
local x = (ScrW() - w) / 2
local y = (ScrH() - h) / 2
render.DrawTextureToScreenRect(rtmat, x, y, w, h)
end