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,116 @@
function SWEP:SwitchFiremode()
local fm = self:GetFiremode()
fm = fm + 1
if fm > #self:GetValue("Firemodes") then
fm = 1
end
-- Since pattern is firemode dependent, it has to be reset when firemode switchs
self.RecoilPatternCache = {}
self:SetFiremode(fm)
end
function SWEP:GetFiremodeAmount()
if istable(self:GetValue("Firemodes")) then
return #self:GetValue("Firemodes")
elseif self:GetValue("Firemode") == 0 then
return 0
else
return 1
end
end
function SWEP:GetNextFiremode()
if self:GetFiremodeAmount() == 0 then return 1 end
if self:GetValue("Firemodes") then
local fm = self:GetFiremode()
fm = fm + 1
if fm > #self:GetValue("Firemodes") then
fm = 1
end
return self:GetValue("Firemodes")[fm]
else
return self:GetValue("Firemode")
end
end
function SWEP:GetCurrentFiremode()
if self:GetValue("Firemodes") then
return self:GetValue("Firemodes")[self:GetFiremode()] or self:GetValue("Firemode") or 0
else
return self:GetValue("Firemode")
end
end
function SWEP:ToggleSafety(onoff)
if self:GetValue("Firemode") == 0 then return end
onoff = onoff or !self:GetSafe()
if onoff and self:DoForceSightsBehavior() then return end
if DarkRP and self:GetNWBool("TacRP_PoliceBiocode") and !self:GetOwner():isCP() then onoff = true end
self:SetSafe(onoff)
if onoff == true then
self:ToggleBlindFire(TacRP.BLINDFIRE_NONE)
self:ScopeToggle(0)
end
if CLIENT then self.LastHintLife = CurTime() end
end
local mat_1 = Material("tacrp/hud/firemode_1.png", "mips smooth")
local mat_2 = Material("tacrp/hud/firemode_2.png", "mips smooth")
local mat_3 = Material("tacrp/hud/firemode_3.png", "mips smooth")
local mat_4 = Material("tacrp/hud/firemode_4.png", "mips smooth")
local mat_a = Material("tacrp/hud/firemode_a.png", "mips smooth")
local mat_s = Material("tacrp/hud/firemode_s.png", "mips smooth")
function SWEP:GetFiremodeMat(mode)
if mode == 0 then
return mat_s
elseif mode == 1 then
return mat_1
elseif mode == 2 then
return mat_a
elseif mode == -2 then
return mat_2
elseif mode == -3 then
return mat_3
elseif mode == -4 then
return mat_4
else
return mat_1 // epic fail
end
end
function SWEP:HasFiremode(mode, base)
local valfunc = base and self.GetBaseValue or self.GetValue
if valfunc(self, "Firemodes") then
for _, v in pairs(valfunc(self, "Firemodes")) do
if v == mode or (mode < 0 and v < 0) then return true end
end
return false
else
return valfunc(self, "Firemode") == mode or (mode < 0 and valfunc(self, "Firemode") < 0)
end
end
function SWEP:GetFiremodeBurstLength(base)
local valfunc = base and self.GetBaseValue or self.GetValue
if valfunc(self, "Firemodes") then
for _, v in pairs(valfunc(self, "Firemodes")) do
if v < 0 then return -v end
end
return false
else
return valfunc(self, "Firemode") < 0 and -valfunc(self, "Firemode") or false
end
end