add sborka
This commit is contained in:
183
garrysmod/addons/tacrp/lua/weapons/tacrp_base_nade.lua
Normal file
183
garrysmod/addons/tacrp/lua/weapons/tacrp_base_nade.lua
Normal file
@@ -0,0 +1,183 @@
|
||||
AddCSLuaFile()
|
||||
|
||||
SWEP.Base = "tacrp_base"
|
||||
|
||||
// spawnable
|
||||
SWEP.Spawnable = false
|
||||
SWEP.AdminOnly = false
|
||||
|
||||
SWEP.NoAimAssist = true
|
||||
|
||||
// names and stuff
|
||||
SWEP.PrintName = "Arctic's Tactical RP Base Grenade"
|
||||
SWEP.Category = "[FT] Оружие"
|
||||
|
||||
SWEP.SubCatTier = "9Special"
|
||||
SWEP.SubCatType = "9Throwable"
|
||||
|
||||
SWEP.Description = ""
|
||||
|
||||
SWEP.ViewModel = "models/weapons/cstrike/c_eq_fraggrenade.mdl"
|
||||
SWEP.WorldModel = "models/weapons/w_eq_fraggrenade.mdl"
|
||||
|
||||
SWEP.ViewModelFOV = 65
|
||||
|
||||
SWEP.NoRanger = true
|
||||
SWEP.NoStatBox = true
|
||||
SWEP.NPCUsable = false
|
||||
|
||||
SWEP.Slot = 4
|
||||
|
||||
SWEP.FreeAim = false
|
||||
|
||||
SWEP.DrawCrosshair = true
|
||||
SWEP.DrawCrosshairInSprint = true
|
||||
SWEP.CrosshairStatic = true
|
||||
|
||||
SWEP.Scope = false
|
||||
SWEP.CanBlindFire = false
|
||||
SWEP.CanQuickNade = false
|
||||
SWEP.CanMeleeAttack = false
|
||||
|
||||
SWEP.Firemode = 0
|
||||
|
||||
SWEP.Ammo = ""
|
||||
SWEP.PrimaryGrenade = ""
|
||||
|
||||
SWEP.Sway = 0
|
||||
|
||||
SWEP.QuickNadeTimeMult = 0.6
|
||||
|
||||
function SWEP:Equip(newowner)
|
||||
local wep = self:GetOwner():GetActiveWeapon()
|
||||
if self:GetOwner():IsPlayer() and wep != self and wep.ArcticTacRP and !wep:CheckGrenade(nil, true) then
|
||||
self:GetOwner():SetNWInt("ti_nade", TacRP.QuickNades[self.PrimaryGrenade].Index)
|
||||
end
|
||||
|
||||
if engine.ActiveGamemode() == "terrortown" and SERVER then
|
||||
if self:IsOnFire() then
|
||||
self:Extinguish()
|
||||
end
|
||||
|
||||
self.fingerprints = self.fingerprints or {}
|
||||
|
||||
if !table.HasValue(self.fingerprints, newowner) then
|
||||
table.insert(self.fingerprints, newowner)
|
||||
end
|
||||
|
||||
if self:HasSpawnFlags(SF_WEAPON_START_CONSTRAINED) then
|
||||
local flags = self:GetSpawnFlags()
|
||||
local newflags = bit.band(flags, bit.bnot(SF_WEAPON_START_CONSTRAINED))
|
||||
self:SetKeyValue("spawnflags", newflags)
|
||||
end
|
||||
end
|
||||
|
||||
if engine.ActiveGamemode() == "terrortown" and SERVER and IsValid(newowner) and (self.StoredAmmo or 0) > 0 and self.Primary.Ammo != "none" then
|
||||
newowner:GiveAmmo(self.StoredAmmo, self.Primary.Ammo)
|
||||
self.StoredAmmo = 0
|
||||
end
|
||||
end
|
||||
|
||||
function SWEP:ThinkSprint()
|
||||
end
|
||||
|
||||
function SWEP:ThinkSights()
|
||||
end
|
||||
|
||||
function SWEP:ThinkGrenade()
|
||||
if self:GetPrimedGrenade() and self:GetAnimLockTime() < CurTime() then
|
||||
if !self:GetOwner():KeyDown(self.GrenadeDownKey) then
|
||||
self:ThrowGrenade()
|
||||
self:SetPrimedGrenade(false)
|
||||
elseif SERVER and self.GrenadeDownKey == IN_ATTACK then
|
||||
self.GrenadeThrowCharge = math.Clamp(CurTime() - self:GetAnimLockTime(), 0, 0.25) * 2
|
||||
end
|
||||
elseif !self:GetPrimedGrenade() then
|
||||
local nade = TacRP.QuickNades[self:GetValue("PrimaryGrenade")]
|
||||
if !TacRP.IsGrenadeInfiniteAmmo(nade) and self:GetOwner():GetAmmoCount(nade.Ammo) == 0 then
|
||||
if SERVER then
|
||||
self:Remove()
|
||||
elseif CLIENT and IsValid(self:GetOwner():GetPreviousWeapon()) and self:GetOwner():GetPreviousWeapon():IsWeapon() then
|
||||
input.SelectWeapon(self:GetOwner():GetPreviousWeapon())
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function SWEP:PrimaryAttack()
|
||||
|
||||
if engine.ActiveGamemode() == "terrortown" and GetRoundState() == ROUND_PREP and
|
||||
((TTT2 and !GetConVar("ttt_nade_throw_during_prep"):GetBool()) or (!TTT2 and GetConVar("ttt_no_nade_throw_during_prep"):GetBool())) then
|
||||
return
|
||||
end
|
||||
|
||||
self.Primary.Automatic = false
|
||||
self.Secondary.Automatic = false
|
||||
self.GrenadeDownKey = IN_ATTACK
|
||||
self.GrenadeThrowOverride = false
|
||||
self.GrenadeThrowCharge = 0
|
||||
|
||||
if self:GetValue("Melee") and self:GetOwner():KeyDown(IN_USE) then
|
||||
self:Melee()
|
||||
return
|
||||
end
|
||||
|
||||
if self:StillWaiting() then
|
||||
return
|
||||
end
|
||||
|
||||
self:SetBaseSettings()
|
||||
|
||||
local stop = self:RunHook("Hook_PreShoot")
|
||||
if stop then return end
|
||||
|
||||
self:PrimeGrenade()
|
||||
self:SetNextPrimaryFire(self:GetAnimLockTime())
|
||||
self:SetNextSecondaryFire(self:GetAnimLockTime())
|
||||
|
||||
self:RunHook("Hook_PostShoot")
|
||||
|
||||
if game.SinglePlayer() and SERVER then self:CallOnClient("PrimaryAttack") end
|
||||
end
|
||||
|
||||
function SWEP:SecondaryAttack()
|
||||
|
||||
if engine.ActiveGamemode() == "terrortown" and GetRoundState() == ROUND_PREP and GetConVar("ttt_no_nade_throw_during_prep"):GetBool() then
|
||||
return
|
||||
end
|
||||
|
||||
self.Primary.Automatic = false
|
||||
self.Secondary.Automatic = false
|
||||
self.GrenadeDownKey = IN_ATTACK2
|
||||
self.GrenadeThrowOverride = true
|
||||
|
||||
if self:StillWaiting() then
|
||||
return
|
||||
end
|
||||
|
||||
self:SetBaseSettings()
|
||||
|
||||
local stop = self:RunHook("Hook_PreShoot")
|
||||
if stop then return end
|
||||
|
||||
self:PrimeGrenade()
|
||||
self:SetNextPrimaryFire(self:GetAnimLockTime())
|
||||
self:SetNextSecondaryFire(self:GetAnimLockTime())
|
||||
|
||||
self:RunHook("Hook_PostShoot")
|
||||
|
||||
if game.SinglePlayer() and SERVER then self:CallOnClient("SecondaryAttack") end
|
||||
end
|
||||
|
||||
function SWEP:Reload()
|
||||
end
|
||||
|
||||
function SWEP:PreDrop()
|
||||
if SERVER and IsValid(self:GetOwner()) and self.Primary.Ammo != "" and self.Primary.Ammo != "none" then
|
||||
local ammo = self:Ammo1()
|
||||
if ammo > 0 then
|
||||
self.StoredAmmo = 1
|
||||
self:GetOwner():RemoveAmmo(1, self.Primary.Ammo)
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user