Files
VnUtest/garrysmod/addons/tfa_antitank/lua/weapons/weapon_sw_rpg26.lua
2026-03-31 10:27:04 +03:00

227 lines
8.0 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters
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.
-- Variables that are used on both client and server
SWEP.Gun = ("weapon_sw_rpg26") -- must be the name of your swep but NO CAPITALS!
SWEP.Category = "FT | Antitank" --Category where you will find your weapons
SWEP.MuzzleAttachment = "1" -- Should be "1" for CSS models or "muzzle" for hl2 models
SWEP.ShellEjectAttachment = "1" -- Should be "2" for CSS models or "1" for hl2 models
SWEP.Author = "Shtormer, Scripty"
SWEP.Contact = ""
SWEP.Purpose = ""
SWEP.Manufacturer = "FT_Scripty"
SWEP.Instructions = ""
SWEP.PrintName = "RPG-26" -- Weapon name (Shown on HUD)
SWEP.Slot = 4 -- Slot in the weapon selection menu
SWEP.SlotPos = 4 -- Position in the slot
SWEP.DrawAmmo = true -- Should draw the default HL2 ammo counter
SWEP.DrawWeaponInfoBox = false -- Should draw the weapon info box
SWEP.BounceWeaponIcon = false -- Should the weapon icon bounce?
SWEP.DrawCrosshair = true -- set false if you want no crosshair
SWEP.Weight = 89 -- rank relative ot other weapons. bigger is better
SWEP.AutoSwitchTo = true -- Auto switch to if we pick it up
SWEP.AutoSwitchFrom = true -- Auto switch from if you pick up a better weapon
SWEP.HoldType = "rpg" -- how others view you carrying the weapon
-- normal melee melee2 fist knife smg ar2 pistol rpg physgun grenade shotgun crossbow slam passive
-- you're mostly going to use ar2, smg, shotgun or pistol. rpg makes for good sniper rifles
SWEP.ViewModelFOV = 70
SWEP.ViewModelFlip = false
SWEP.ViewModel = "models/weapons/fas2/view/explosives/rpg26.mdl"
SWEP.WorldModel = "models/weapons/fas2/world/explosives/rpg26.mdl"
SWEP.ShowWorldModel = true
SWEP.Base = "tfa_bash_base" --the Base this weapon will work on. PLEASE RENAME THE BASE!
SWEP.Spawnable = true
SWEP.AdminSpawnable = true
SWEP.FiresUnderwater = false
SWEP.UseHands = true
SWEP.Type = "Man-Portable Anti-Tank Weapon"
SWEP.IronSightTime = 0.5
SWEP.Primary.Sound = Sound("weapons/at4/at4_fp.wav") -- This is the sound of the weapon, when you shoot.
SWEP.Primary.RPM = 325 -- This is in Rounds Per Minute
SWEP.Primary.ClipSize = 1 -- Size of a clip
SWEP.Primary.DefaultClip = 1 -- Bullets you start with
SWEP.Primary.KickUp = 2.25 -- Maximum up recoil (rise)
SWEP.Primary.KickDown = 1.75 -- Maximum down recoil (skeet)
SWEP.Primary.KickHorizontal = 1.45 -- Maximum up recoil (stock)
SWEP.Primary.Automatic = false -- Automatic = true; Semi Auto = false
SWEP.Primary.Ammo = "rpg_round" -- pistol, 357, smg1, ar2, buckshot, slam, SniperPenetratedRound, AirboatGun
SWEP.Primary.StaticRecoilFactor = 1.3
SWEP.SelectiveFire = false
SWEP.Secondary.BashInterrupt = false -- Do you need to be in a "ready" status to bash?
SWEP.Secondary.BashDelay = 0.1
SWEP.Secondary.BashLength = 52
SWEP.Secondary.BashEnd = 2.25 -- Override bash sequence length easier
SWEP.Secondary.BashDamage = 56
SWEP.Secondary.IronFOV = 50 -- How much you 'zoom' in. Less is more!
SWEP.data = {} --The starting firemode
SWEP.Primary.Damage = 225 -- Base damage per bullet
SWEP.Primary.Spread = .021 -- Define from-the-hip accuracy 1 is terrible, .0001 is exact)
SWEP.Primary.IronAccuracy = .008 -- Ironsight accuracy, should be the same for shotguns
-- Enter iron sight info and bone mod info below
SWEP.IronSightsPos = Vector(-2, -1, -1)
SWEP.IronSightsAng = Vector(0.65, -0.02, 0)
SWEP.IronSightsPos_Pgo7 = Vector(-2.5, -1, 0.6)
SWEP.IronSightsAng_Pgo7 = Vector(0, 0, 0)
SWEP.RunSightsPos = Vector(4.762, -4.238, -0.717)
SWEP.RunSightsAng = Vector(-6.743, 46.284, 0)
SWEP.InspectPos = Vector(7.76, -2, 0.016)
SWEP.InspectAng = Vector(1, 37.277, 3.2)
SWEP.Offset = {
Pos = {
Up = -2.5,
Right = 1.1,
Forward = 8.295
},
Ang = {
Up = -1.043,
Right = 0,
Forward = 180,
},
Scale = 1.0
} --Procedural world model animation, defaulted for CS:S purposes.
SWEP.VElements = {
}
SWEP.Attachments = {
}
SWEP.WElements = {
}
SWEP.Sights_Mode = TFA.Enum.LOCOMOTION_HYBRID -- ANI = mdl, HYBRID = lua but continue idle, Lua = stop mdl animation
SWEP.Idle_Mode = TFA.Enum.IDLE_BOTH --TFA.Enum.IDLE_DISABLED = no idle, TFA.Enum.IDLE_LUA = lua idle, TFA.Enum.IDLE_ANI = mdl idle, TFA.Enum.IDLE_BOTH = TFA.Enum.IDLE_ANI + TFA.Enum.IDLE_LUA
SWEP.Sprint_Mode = TFA.Enum.LOCOMOTION_LUA -- ANI = mdl, HYBRID = ani + lua, Lua = lua only
SWEP.RunSightsPos = Vector(0, -5, 0) --Change this, using SWEP Creation Kit preferably
SWEP.RunSightsAng = Vector(20, 0, 0) --Change this, using SWEP Creation Kit preferably
SWEP.SprintBobMult = 1.3
SWEP.SprintAnimation = {
["loop"] = {
["type"] = TFA.Enum.ANIMATION_SEQ, --Sequence or act
["value"] = "base_sprint", --Number for act, String/Number for sequence
["is_idle"] = true
}
}
SWEP.Entities = {}
function SWEP:PrimaryAttack()
if not SERVER then return end
if self._NextFire and self._NextFire > CurTime() then return end
if self:Clip1() <= 0 then
self:Reload()
return
end
self._NextFire = CurTime() + 5.5 -- Запрет на стрельбу во время перезарядки
self:FireShot()
self:TakePrimaryAmmo(1)
local ply = self:GetOwner()
if not IsValid(ply) then return end
local shootPos = ply:GetShootPos()
local shootAng = ply:EyeAngles()
-- Эффект вылета тубуса (через 0.2с после выстрела)
timer.Simple(0.2, function()
if not IsValid(ply) then return end
local ent = ents.Create("prop_physics")
if not IsValid(ent) then return end
ent:SetModel("models/weapons/fas2/world/explosives/rpg26.mdl")
ent:SetPos(shootPos + shootAng:Forward() * -20)
ent:SetAngles(shootAng)
ent:Spawn()
ent:Activate()
timer.Simple(3, function()
if IsValid(ent) then ent:Remove() end
end)
end)
end
function SWEP:FireShot()
if SERVER then
local ply = self:GetOwner()
if not IsValid(ply) then return end
local safetyDist = 3
local tr = util.TraceLine({
start = ply:EyePos(),
endpos = ply:EyePos() + ply:EyeAngles():Forward() * (safetyDist * 52.49),
filter = ply
})
if tr.Hit then
ply:EmitSound("weapons/rpg/rocketclose.wav")
local inert = ents.Create("prop_physics")
if IsValid(inert) then
inert:SetModel("models/weapons/fas2/world/explosives/rpg26/rocket.mdl")
inert:SetPos(ply:EyePos() + ply:EyeAngles():Forward() * 10)
inert:SetAngles(ply:EyeAngles())
inert:Spawn()
inert:Activate()
local phys = inert:GetPhysicsObject()
if IsValid(phys) then
phys:SetVelocity(ply:EyeAngles():Forward() * 300)
end
timer.Simple(10, function()
if IsValid(inert) then inert:Remove() end
end)
end
return
end
local pos = ply:EyePos()
local ang = ply:EyeAngles()
local missile = ents.Create("lvs_missile")
if not IsValid(missile) then return end
missile:SetPos(pos)
missile:SetAngles(ang)
missile:Spawn()
missile:Activate()
missile:SetDamage(1000) -- урон
missile:SetRadius(120) -- радиус поражения
missile:SetForce(60000) -- сила взрыва
missile:SetAttacker(ply)
missile:SetEntityFilter({ply})
missile:SetTurnSpeed(0)
missile:SetSpeed(1500) -- скорость полёта
missile:Enable()
ParticleEffect("ins_weapon_rpg_frontblast", pos, ang, ply)
ParticleEffect("ins_weapon_rpg_backblast", pos - ang:Forward()*80, ang - Angle(0,180,0), ply)
local phys = ply:GetPhysicsObject()
if IsValid(phys) then
phys:ApplyForceOffset(-ang:Forward() * 2000, pos)
end
end
end
SWEP.SequenceRateOverrideScaled = {
[ACT_VM_PRIMARYATTACK] = 0.85,
[ACT_VM_PRIMARYATTACK_1] = 0.85
}
SWEP.ProjectileVelocity = 7150 * 12 / 10
SWEP.DisableChambering = true