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,246 @@
if CLIENT then
SWEP.WepSelectIcon = surface.GetTextureID( "vgui/hud/vgui_carfirstaidkit" )
SWEP.BounceWeaponIcon = true
SWEP.DrawWeaponInfoBox = true
end
SWEP.PrintName = "Car First Aid Kit"
SWEP.Author = "Craft_Pig"
SWEP.Purpose =
[[
Heals up to 35HP
Cures Bleeding
]]
SWEP.Category = "EFT"
SWEP.Category1 = "EFT"
SWEP.Category2 = "Medkits"
SWEP.ViewModelFOV = 85
SWEP.ViewModel = "models/weapons/sweps/eft/automedkit/v_meds_automedkit.mdl"
SWEP.WorldModel = "models/weapons/sweps/eft/automedkit/w_meds_automedkit.mdl"
SWEP.UseHands = true
SWEP.DrawCrosshair = false
SWEP.Spawnable = true
SWEP.Slot = 5
SWEP.SlotPos = 7
SWEP.DrawAmmo = true
SWEP.SwayScale = 0.15
SWEP.BobScale = 0.75
SWEP.Primary.Ammo = "carfirstaidkit"
SWEP.Primary.ClipSize = -1
SWEP.Primary.DefaultClip = 220
SWEP.Primary.Automatic = false
SWEP.Secondary.Ammo = "none"
SWEP.Secondary.ClipSize = -1
SWEP.Secondary.DefaultClip = -1
SWEP.Secondary.Automatic = false
SWEP.MaxHeal = 35
local INI_SEF = false
local INI_VIVO = false
local ID_WEAPON = "weapon_eft_automedkit"
local ID_PRIMARYAMMO = "carfirstaidkit"
function SWEP:Initialize()
self:SetHoldType("slam")
local FilePathSEF = "lua/SEF/SEF_Functions.lua"
if file.Exists(FilePathSEF, "GAME") then
INI_SEF = true
end
local FilePathVIVO = "lua/autorun/ojsshared.lua"
if file.Exists(FilePathVIVO, "GAME") then
INI_VIVO = true
end
end
function SWEP:Deploy()
local owner = self:GetOwner()
self.IniAnimBandage = 0
self.IniAnimSyringe = 0
self.IniAnimPills = 0
self.AnimTimes = 0
self.IniHeal = 0
self:SendWeaponAnim(ACT_VM_IDLE)
if owner:GetAmmoCount(self.Primary.Ammo) == 0 then
owner:StripWeapon(ID_WEAPON)
owner:SelectWeapon(owner:GetPreviousWeapon())
end
return true
end
function SWEP:Heal(owner)
local owner = self:GetOwner()
local VarMissingHealth = owner:GetMaxHealth() - owner:Health()
local VarGetHealth = math.min(VarMissingHealth, owner:GetAmmoCount(ID_PRIMARYAMMO))
local VarHealHealth = math.min(VarGetHealth, self.MaxHeal)
if IsValid(owner) and SERVER and owner:GetActiveWeapon():GetClass() == ID_WEAPON then
if INI_SEF == true then
if owner:HaveEffect("Bleeding") then
owner:RemoveEffect("Bleeding")
owner:RemoveAmmo(50, ID_PRIMARYAMMO)
end
end
if INI_VIVO == true then
math.Round(OJSWounds:HealHP(owner, self.MaxHeal, VarHealHealth), 0)
if (OJSWounds:HasStatusWholeBody(owner, "Bleed")) then
OJSWounds:HealBleed(owner)
owner:RemoveAmmo(50, ID_PRIMARYAMMO)
end
else
owner:SetHealth(math.min(owner:GetMaxHealth(), owner:Health() + VarHealHealth))
end
owner:RemoveAmmo(VarHealHealth, ID_PRIMARYAMMO)
self:Deploy()
end
end
function SWEP:PrimaryAttack()
local owner = self.Owner
if owner:GetAmmoCount(self.Primary.Ammo) == 0 then return end
if self.IniAnimBandage == 1 or self.IniAnimSyringe == 1 or self.IniAnimPills == 1 then return end
local RndAnim = math.random(1,3)
if (InitializeSEF == true and owner:HaveEffect("Bleeding")) or (INI_VIVO == true and (OJSWounds:HasStatusWholeBody(owner, "Bleed"))) then
self:SendWeaponAnim(ACT_VM_MISSRIGHT)
self.IniAnimBandage = 1
elseif RndAnim == 1 then
self:SendWeaponAnim(ACT_VM_MISSRIGHT)
self.IniAnimBandage = 1
elseif RndAnim == 2 then
self:SendWeaponAnim(ACT_VM_PULLBACK_HIGH)
self.IniAnimSyringe = 1
else
self:SendWeaponAnim(ACT_VM_RECOIL1)
self.IniAnimPills = 1
end
self.IdleTimer = CurTime() + self.Owner:GetViewModel():SequenceDuration()
timer.Simple(0.55, function() -- Audio Timer
if IsValid(self) and IsValid(self.Owner) then
if owner:GetActiveWeapon():GetClass() == "weapon_eft_automedkit" then owner:EmitSound("MedsGrizzly.Open") end
end
end)
end
function SWEP:SecondaryAttack()
end
function SWEP:Think()
if SERVER then
if self.IniHeal == 1 and self.IdleTimer <= CurTime() then -- Initialize Heal
self.IniAnimBandage = 0
self.IniAnimSyringe = 0
self.IniAnimPills = 0
self.AnimTimes = 0
self.IniHeal = 0
self:Heal(owner)
end
if self.IniAnimBandage == 1 and self.AnimTimes <= 2 and self.IdleTimer <= CurTime() then -- Bandage Sequence
if math.random(1,2) == 1 then
self:SendWeaponAnim(ACT_VM_MISSRIGHT2)
else
self:SendWeaponAnim(ACT_VM_MISSCENTER)
end
self.IdleTimer = CurTime() + self.Owner:GetViewModel():SequenceDuration()
self.AnimTimes = self.AnimTimes + 1
elseif self.IniAnimBandage == 1 and self.AnimTimes == 3 and self.IdleTimer <= CurTime() then
self:SendWeaponAnim(ACT_VM_MISSCENTER2)
self.IdleTimer = CurTime() + self.Owner:GetViewModel():SequenceDuration()
self.IniHeal = 1
end
if self.IniAnimSyringe == 1 and self.AnimTimes <= 2 and self.IdleTimer <= CurTime() then -- Syringe Sequence
self:SendWeaponAnim(ACT_VM_PULLBACK)
self.IdleTimer = CurTime() + self.Owner:GetViewModel():SequenceDuration()
self.AnimTimes = self.AnimTimes + 1
elseif self.IniAnimSyringe == 1 and self.AnimTimes == 3 and self.IdleTimer <= CurTime() then
self:SendWeaponAnim(ACT_VM_PULLBACK_LOW)
self.IdleTimer = CurTime() + self.Owner:GetViewModel():SequenceDuration()
self.IniHeal = 1
end
if self.IniAnimPills == 1 and self.AnimTimes <= 1 and self.IdleTimer <= CurTime() then -- Syringe Sequence
if self.AnimTimes == 0 then
self:SendWeaponAnim(ACT_VM_RECOIL3)
else
self:SendWeaponAnim(ACT_VM_RECOIL2)
end
self.IdleTimer = CurTime() + self.Owner:GetViewModel():SequenceDuration()
self.AnimTimes = self.AnimTimes + 1
elseif self.IniAnimPills == 1 and self.AnimTimes == 2 and self.IdleTimer <= CurTime() then
self:SendWeaponAnim(ACT_VM_PICKUP)
self.IdleTimer = CurTime() + self.Owner:GetViewModel():SequenceDuration()
self.IniHeal = 1
end
end
end
function SWEP:Holster()
return true
end
function SWEP:PostDrawViewModel( vm )
local attachment = vm:GetAttachment(1)
if attachment then
self.vmcamera = vm:GetAngles() - attachment.Ang
else
self.vmcamera = Angle(0, 0, 0)
end
end
function SWEP:CalcView( ply, pos, ang, fov )
self.vmcamera = self.vmcamera or Angle(0, 0, 0)
return pos, ang + self.vmcamera, fov
end
if CLIENT then -- Worldmodel offset
local WorldModel = ClientsideModel(SWEP.WorldModel)
WorldModel:SetSkin(0)
WorldModel:SetNoDraw(true)
function SWEP:DrawWorldModel()
local owner = self:GetOwner()
if (IsValid(owner)) then
local offsetVec = Vector(3, -5, 3)
local offsetAng = Angle(-0, 0, 180)
local boneid = owner:LookupBone("ValveBiped.Bip01_R_Hand") -- Right Hand
if !boneid then return end
local matrix = owner:GetBoneMatrix(boneid)
if !matrix then return end
local newPos, newAng = LocalToWorld(offsetVec, offsetAng, matrix:GetTranslation(), matrix:GetAngles())
WorldModel:SetPos(newPos)
WorldModel:SetAngles(newAng)
WorldModel:SetupBones()
else
WorldModel:SetPos(self:GetPos())
WorldModel:SetAngles(self:GetAngles())
self:DrawModel()
end
WorldModel:DrawModel()
end
end